diff --git a/.gitignore b/.gitignore index 2736e76..a74fa4d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +artifacts cache node_modules coverage.json diff --git a/artifacts/@chainlink/contracts/src/v0.6/interfaces/AggregatorV3Interface.sol/AggregatorV3Interface.dbg.json b/artifacts/@chainlink/contracts/src/v0.6/interfaces/AggregatorV3Interface.sol/AggregatorV3Interface.dbg.json deleted file mode 100644 index c8cc934..0000000 --- a/artifacts/@chainlink/contracts/src/v0.6/interfaces/AggregatorV3Interface.sol/AggregatorV3Interface.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../../build-info/f3d46276c3abf0612f2d14f482c05ecc.json" -} diff --git a/artifacts/@chainlink/contracts/src/v0.6/interfaces/AggregatorV3Interface.sol/AggregatorV3Interface.json b/artifacts/@chainlink/contracts/src/v0.6/interfaces/AggregatorV3Interface.sol/AggregatorV3Interface.json deleted file mode 100644 index 3e3641a..0000000 --- a/artifacts/@chainlink/contracts/src/v0.6/interfaces/AggregatorV3Interface.sol/AggregatorV3Interface.json +++ /dev/null @@ -1,122 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "AggregatorV3Interface", - "sourceName": "@chainlink/contracts/src/v0.6/interfaces/AggregatorV3Interface.sol", - "abi": [ - { - "inputs": [], - "name": "decimals", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "description", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint80", - "name": "_roundId", - "type": "uint80" - } - ], - "name": "getRoundData", - "outputs": [ - { - "internalType": "uint80", - "name": "roundId", - "type": "uint80" - }, - { - "internalType": "int256", - "name": "answer", - "type": "int256" - }, - { - "internalType": "uint256", - "name": "startedAt", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "updatedAt", - "type": "uint256" - }, - { - "internalType": "uint80", - "name": "answeredInRound", - "type": "uint80" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "latestRoundData", - "outputs": [ - { - "internalType": "uint80", - "name": "roundId", - "type": "uint80" - }, - { - "internalType": "int256", - "name": "answer", - "type": "int256" - }, - { - "internalType": "uint256", - "name": "startedAt", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "updatedAt", - "type": "uint256" - }, - { - "internalType": "uint80", - "name": "answeredInRound", - "type": "uint80" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "version", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/artifacts/@openzeppelin/contracts/math/SafeMath.sol/SafeMath.dbg.json b/artifacts/@openzeppelin/contracts/math/SafeMath.sol/SafeMath.dbg.json deleted file mode 100644 index 0af9483..0000000 --- a/artifacts/@openzeppelin/contracts/math/SafeMath.sol/SafeMath.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/f3d46276c3abf0612f2d14f482c05ecc.json" -} diff --git a/artifacts/@openzeppelin/contracts/math/SafeMath.sol/SafeMath.json b/artifacts/@openzeppelin/contracts/math/SafeMath.sol/SafeMath.json deleted file mode 100644 index 77ee9c6..0000000 --- a/artifacts/@openzeppelin/contracts/math/SafeMath.sol/SafeMath.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "SafeMath", - "sourceName": "@openzeppelin/contracts/math/SafeMath.sol", - "abi": [], - "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122065f8637f11ac4a48627a5854d21894c1133bb039748e382a3f868f86905769a564736f6c63430007060033", - "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122065f8637f11ac4a48627a5854d21894c1133bb039748e382a3f868f86905769a564736f6c63430007060033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.dbg.json b/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.dbg.json deleted file mode 100644 index 0af9483..0000000 --- a/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/f3d46276c3abf0612f2d14f482c05ecc.json" -} diff --git a/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.json b/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.json deleted file mode 100644 index 02ee741..0000000 --- a/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "Address", - "sourceName": "@openzeppelin/contracts/utils/Address.sol", - "abi": [], - "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122022c699e416c38c6c7ad32d4328c99c2b8b2b264752b0cf86e1422d6625a9d58d64736f6c63430007060033", - "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122022c699e416c38c6c7ad32d4328c99c2b8b2b264752b0cf86e1422d6625a9d58d64736f6c63430007060033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/artifacts/@uniswap/v3-core/contracts/NoDelegateCall.sol/NoDelegateCall.dbg.json b/artifacts/@uniswap/v3-core/contracts/NoDelegateCall.sol/NoDelegateCall.dbg.json deleted file mode 100644 index 0af9483..0000000 --- a/artifacts/@uniswap/v3-core/contracts/NoDelegateCall.sol/NoDelegateCall.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/f3d46276c3abf0612f2d14f482c05ecc.json" -} diff --git a/artifacts/@uniswap/v3-core/contracts/NoDelegateCall.sol/NoDelegateCall.json b/artifacts/@uniswap/v3-core/contracts/NoDelegateCall.sol/NoDelegateCall.json deleted file mode 100644 index 7a194a8..0000000 --- a/artifacts/@uniswap/v3-core/contracts/NoDelegateCall.sol/NoDelegateCall.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "NoDelegateCall", - "sourceName": "@uniswap/v3-core/contracts/NoDelegateCall.sol", - "abi": [], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/artifacts/@uniswap/v3-core/contracts/UniswapV3Factory.sol/UniswapV3Factory.dbg.json b/artifacts/@uniswap/v3-core/contracts/UniswapV3Factory.sol/UniswapV3Factory.dbg.json deleted file mode 100644 index 0af9483..0000000 --- a/artifacts/@uniswap/v3-core/contracts/UniswapV3Factory.sol/UniswapV3Factory.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/f3d46276c3abf0612f2d14f482c05ecc.json" -} diff --git a/artifacts/@uniswap/v3-core/contracts/UniswapV3Factory.sol/UniswapV3Factory.json b/artifacts/@uniswap/v3-core/contracts/UniswapV3Factory.sol/UniswapV3Factory.json deleted file mode 100644 index 589aaf7..0000000 --- a/artifacts/@uniswap/v3-core/contracts/UniswapV3Factory.sol/UniswapV3Factory.json +++ /dev/null @@ -1,245 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "UniswapV3Factory", - "sourceName": "@uniswap/v3-core/contracts/UniswapV3Factory.sol", - "abi": [ - { - "inputs": [], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint24", - "name": "fee", - "type": "uint24" - }, - { - "indexed": true, - "internalType": "int24", - "name": "tickSpacing", - "type": "int24" - } - ], - "name": "FeeAmountEnabled", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "oldOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnerChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "token0", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "token1", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint24", - "name": "fee", - "type": "uint24" - }, - { - "indexed": false, - "internalType": "int24", - "name": "tickSpacing", - "type": "int24" - }, - { - "indexed": false, - "internalType": "address", - "name": "pool", - "type": "address" - } - ], - "name": "PoolCreated", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "tokenA", - "type": "address" - }, - { - "internalType": "address", - "name": "tokenB", - "type": "address" - }, - { - "internalType": "uint24", - "name": "fee", - "type": "uint24" - } - ], - "name": "createPool", - "outputs": [ - { - "internalType": "address", - "name": "pool", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint24", - "name": "fee", - "type": "uint24" - }, - { - "internalType": "int24", - "name": "tickSpacing", - "type": "int24" - } - ], - "name": "enableFeeAmount", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint24", - "name": "", - "type": "uint24" - } - ], - "name": "feeAmountTickSpacing", - "outputs": [ - { - "internalType": "int24", - "name": "", - "type": "int24" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "uint24", - "name": "", - "type": "uint24" - } - ], - "name": "getPool", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "parameters", - "outputs": [ - { - "internalType": "address", - "name": "factory", - "type": "address" - }, - { - "internalType": "address", - "name": "token0", - "type": "address" - }, - { - "internalType": "address", - "name": "token1", - "type": "address" - }, - { - "internalType": "uint24", - "name": "fee", - "type": "uint24" - }, - { - "internalType": "int24", - "name": "tickSpacing", - "type": "int24" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_owner", - "type": "address" - } - ], - "name": "setOwner", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x60a060405234801561001057600080fd5b503060601b608052600380546001600160a01b031916339081179091556040516000907fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c908290a36101f4600081815260046020527ffb8cf1d12598d1a039dd1d106665851a96aadf67d0d9ed76fceea282119208b7805462ffffff1916600a908117909155604051909291600080516020615ffa83398151915291a3610bb8600081815260046020527f72dffa9b822156d9cf4b0090fa0b656bcb9cc2b2c60eb6acfc20a34f54b31743805462ffffff1916603c908117909155604051909291600080516020615ffa83398151915291a3612710600081815260046020527f8cc740d51daa94ff54f33bd779c2d20149f524c340519b49181be5a08615f829805462ffffff191660c8908117909155604051909291600080516020615ffa83398151915291a360805160601c615e86610174600039806105515250615e866000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063890357301161005b578063890357301461013b5780638a7c195f146101855780638da5cb5b146101b0578063a1671295146101b85761007d565b806313af4035146100825780631698ee82146100aa57806322afcccb14610102575b600080fd5b6100a86004803603602081101561009857600080fd5b50356001600160a01b03166101f4565b005b6100e6600480360360608110156100c057600080fd5b5080356001600160a01b03908116916020810135909116906040013562ffffff16610267565b604080516001600160a01b039092168252519081900360200190f35b6101246004803603602081101561011857600080fd5b503562ffffff16610293565b6040805160029290920b8252519081900360200190f35b6101436102a8565b604080516001600160a01b0396871681529486166020860152929094168383015262ffffff16606083015260029290920b608082015290519081900360a00190f35b6100a86004803603604081101561019b57600080fd5b5062ffffff813516906020013560020b6102de565b6100e66103a1565b6100e6600480360360608110156101ce57600080fd5b5080356001600160a01b03908116916020810135909116906040013562ffffff166103b0565b6003546001600160a01b0316331461020b57600080fd5b6003546040516001600160a01b038084169216907fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c90600090a3600380546001600160a01b0319166001600160a01b0392909216919091179055565b60056020908152600093845260408085208252928452828420905282529020546001600160a01b031681565b60046020526000908152604090205460020b81565b600054600154600280546001600160a01b03938416939283169281169162ffffff600160a01b83041691600160b81b9004900b85565b6003546001600160a01b031633146102f557600080fd5b620f42408262ffffff161061030957600080fd5b60008160020b13801561032057506140008160020b125b61032957600080fd5b62ffffff8216600090815260046020526040902054600290810b900b1561034f57600080fd5b62ffffff828116600081815260046020526040808220805462ffffff1916600287900b958616179055517fc66a3fdf07232cdd185febcc6579d408c241b47ae2f9907d84be655141eeaecc9190a35050565b6003546001600160a01b031681565b60006103ba610546565b826001600160a01b0316846001600160a01b031614156103d957600080fd5b600080846001600160a01b0316866001600160a01b0316106103fc5784866103ff565b85855b90925090506001600160a01b03821661041757600080fd5b62ffffff8416600090815260046020526040902054600290810b9081900b61043e57600080fd5b6001600160a01b0383811660009081526005602090815260408083208685168452825280832062ffffff8a168452909152902054161561047d57600080fd5b61048a308484888561057d565b6001600160a01b03808516600081815260056020818152604080842089871680865290835281852062ffffff8e168087529084528286208054988a166001600160a01b0319998a1681179091558287529484528286208787528452828620818752845294829020805490971684179096558051600289900b815291820192909252815195995091947f783cca1c0412dd0d695e784568c96da2e9c22ff989357a2e8b1d9b2b4e6b71189281900390910190a45050509392505050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461057b57600080fd5b565b6040805160a0810182526001600160a01b03878116808352878216602080850182905292881684860181905262ffffff888116606080880182905260028a810b6080998a01819052600080546001600160a01b03199081169099178155600180548a16891790558254909816861762ffffff60a01b1916600160a01b85021762ffffff60b81b1916600160b81b91830b9095160293909317909255875180870194909452838801929092528281019190915285518083039091018152930193849052825192909101919091209091610654906106ab565b8190604051809103906000f5905080158015610674573d6000803e3d6000fd5b50600080546001600160a01b0319908116909155600180549091169055600280546001600160d01b03191690559695505050505050565b615798806106b98339019056fe6101606040523480156200001257600080fd5b503060601b60805260408051630890357360e41b81529051600091339163890357309160048082019260a092909190829003018186803b1580156200005657600080fd5b505afa1580156200006b573d6000803e3d6000fd5b505050506040513d60a08110156200008257600080fd5b508051602080830151604084015160608086015160809096015160e896871b6001600160e81b0319166101005291811b6001600160601b031990811660e05292811b831660c0529390931b1660a052600282810b900b90921b610120529150620000f79082906200010f811b62002adb17901c565b60801b6001600160801b03191661014052506200017d565b60008082600281900b620d89e719816200012557fe5b05029050600083600281900b620d89e8816200013d57fe5b0502905060008460020b83830360020b816200015557fe5b0560010190508062ffffff166001600160801b038016816200017357fe5b0495945050505050565b60805160601c60a05160601c60c05160601c60e05160601c6101005160e81c6101205160e81c6101405160801c61554e6200024a60003980611fab5280614a4d5280614a84525080610bd852806128975280614ab85280614aea525080610cc7528061198852806119bf52806128df5250806111855280611a425280611eb152806123e652806128bb5280613d7c5250806108aa52806112b35280611a115280611e4b52806123605280613c33525080612038528061221f5280612873525080612b52525061554e6000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c806370cf754a116100de578063c45a015511610097578063ddca3f4311610071578063ddca3f43146107d8578063f3058399146107f8578063f30dba9314610800578063f637731d146108825761018e565b8063c45a0155146107a9578063d0c93a7c146107b1578063d21220a7146107d05761018e565b806370cf754a146105a05780638206a4d1146105a857806385b66729146105d0578063883bdbfd1461060d578063a34123a714610714578063a38807f21461074e5761018e565b80633850c7bd1161014b578063490e6cbc11610125578063490e6cbc1461044c5780634f1eb3d8146104d6578063514ea4bf146105275780635339c296146105805761018e565b80633850c7bd146103395780633c8a7d8d1461039257806346141319146104325761018e565b80630dfe168114610193578063128acb08146101b75780631a686502146102645780631ad8b03b14610288578063252c09d7146102bf57806332148f6714610316575b600080fd5b61019b6108a8565b604080516001600160a01b039092168252519081900360200190f35b61024b600480360360a08110156101cd57600080fd5b6001600160a01b0382358116926020810135151592604082013592606083013516919081019060a081016080820135600160201b81111561020d57600080fd5b82018360208201111561021f57600080fd5b803590602001918460018302840111600160201b8311171561024057600080fd5b5090925090506108cc565b6040805192835260208301919091528051918290030190f35b61026c61146b565b604080516001600160801b039092168252519081900360200190f35b61029061147a565b60405180836001600160801b03168152602001826001600160801b031681526020019250505060405180910390f35b6102dc600480360360208110156102d557600080fd5b5035611494565b6040805163ffffffff909516855260069390930b60208501526001600160a01b039091168383015215156060830152519081900360800190f35b6103376004803603602081101561032c57600080fd5b503561ffff166114d9565b005b6103416115d3565b604080516001600160a01b03909816885260029690960b602088015261ffff9485168787015292841660608701529216608085015260ff90911660a0840152151560c0830152519081900360e00190f35b61024b600480360360a08110156103a857600080fd5b6001600160a01b03823516916020810135600290810b92604083013590910b916001600160801b036060820135169181019060a081016080820135600160201b8111156103f457600080fd5b82018360208201111561040657600080fd5b803590602001918460018302840111600160201b8311171561042757600080fd5b509092509050611623565b61043a6118df565b60408051918252519081900360200190f35b6103376004803603608081101561046257600080fd5b6001600160a01b038235169160208101359160408201359190810190608081016060820135600160201b81111561049857600080fd5b8201836020820111156104aa57600080fd5b803590602001918460018302840111600160201b831117156104cb57600080fd5b5090925090506118e5565b610290600480360360a08110156104ec57600080fd5b506001600160a01b03813516906020810135600290810b91604081013590910b906001600160801b0360608201358116916080013516611d40565b6105446004803603602081101561053d57600080fd5b5035611f5a565b604080516001600160801b0396871681526020810195909552848101939093529084166060840152909216608082015290519081900360a00190f35b61043a6004803603602081101561059657600080fd5b503560010b611f97565b61026c611fa9565b610337600480360360408110156105be57600080fd5b5060ff81358116916020013516611fcd565b610290600480360360608110156105e657600080fd5b506001600160a01b03813516906001600160801b03602082013581169160400135166121b1565b61067b6004803603602081101561062357600080fd5b810190602081018135600160201b81111561063d57600080fd5b82018360208201111561064f57600080fd5b803590602001918460208302840111600160201b8311171561067057600080fd5b50909250905061247e565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156106bf5781810151838201526020016106a7565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156106fe5781810151838201526020016106e6565b5050505090500194505050505060405180910390f35b61024b6004803603606081101561072a57600080fd5b508035600290810b91602081013590910b90604001356001600160801b031661250b565b6107786004803603604081101561076457600080fd5b508035600290810b9160200135900b612682565b6040805160069490940b84526001600160a01b03909216602084015263ffffffff1682820152519081900360600190f35b61019b612871565b6107b9612895565b6040805160029290920b8252519081900360200190f35b61019b6128b9565b6107e06128dd565b6040805162ffffff9092168252519081900360200190f35b61043a612901565b6108206004803603602081101561081657600080fd5b503560020b612907565b604080516001600160801b039099168952600f9790970b602089015287870195909552606087019390935260069190910b60808601526001600160a01b031660a085015263ffffffff1660c0840152151560e083015251908190036101000190f35b6103376004803603602081101561089857600080fd5b50356001600160a01b0316612971565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806108d7612b47565b8561090e576040805162461bcd60e51b8152602060048201526002602482015261415360f01b604482015290519081900360640190fd5b6040805160e0810182526000546001600160a01b0381168252600160a01b8104600290810b810b900b602083015261ffff600160b81b8204811693830193909352600160c81b810483166060830152600160d81b8104909216608082015260ff600160e81b8304811660a0830152600160f01b909204909116151560c082018190526109c7576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b87610a125780600001516001600160a01b0316866001600160a01b0316118015610a0d575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038716105b610a44565b80600001516001600160a01b0316866001600160a01b0316108015610a4457506401000276a36001600160a01b038716115b610a7b576040805162461bcd60e51b815260206004820152600360248201526214d41360ea1b604482015290519081900360640190fd5b6000805460ff60f01b191681556040805160c08101909152808a610aaa5760048460a0015160ff16901c610abd565b60108460a0015160ff1681610abb57fe5b065b60ff1681526004546001600160801b03166020820152604001610ade612b7e565b63ffffffff168152602001600060060b815260200160006001600160a01b031681526020016000151581525090506000808913905060006040518060e001604052808b81526020016000815260200185600001516001600160a01b03168152602001856020015160020b81526020018c610b5a57600254610b5e565b6001545b815260200160006001600160801b0316815260200184602001516001600160801b031681525090505b805115801590610bad5750886001600160a01b031681604001516001600160a01b031614155b15610f7757610bba6154b5565b60408201516001600160a01b031681526060820151610bfd906006907f00000000000000000000000000000000000000000000000000000000000000008f612b82565b15156040830152600290810b810b60208301819052620d89e719910b1215610c2e57620d89e7196020820152610c4d565b6020810151620d89e860029190910b1315610c4d57620d89e860208201525b610c5a8160200151612cc4565b6001600160a01b031660608201526040820151610ceb908d610c94578b6001600160a01b031683606001516001600160a01b031611610cae565b8b6001600160a01b031683606001516001600160a01b0316105b610cbc578260600151610cbe565b8b5b60c085015185517f0000000000000000000000000000000000000000000000000000000000000000612ff5565b60c085015260a084015260808301526001600160a01b031660408301528215610d4d57610d218160c001518260800151016131e7565b825103825260a0810151610d4390610d38906131e7565b6020840151906131fd565b6020830152610d88565b610d5a8160a001516131e7565b825101825260c08101516080820151610d8291610d7791016131e7565b602084015190613219565b60208301525b835160ff1615610dce576000846000015160ff168260c0015181610da857fe5b60c0840180519290910491829003905260a0840180519091016001600160801b03169052505b60c08201516001600160801b031615610e0d57610e018160c00151600160801b8460c001516001600160801b031661322f565b60808301805190910190525b80606001516001600160a01b031682604001516001600160a01b03161415610f3657806040015115610f0d578360a00151610e9757610e75846040015160008760200151886040015188602001518a6060015160086132df909695949392919063ffffffff16565b6001600160a01b03166080860152600690810b900b6060850152600160a08501525b6000610ee382602001518e610eae57600154610eb4565b84608001515b8f610ec3578560800151610ec7565b6002545b608089015160608a015160408b01516005959493929190613471565b90508c15610eef576000035b610efd8360c001518261352b565b6001600160801b031660c0840152505b8b610f1c578060200151610f25565b60018160200151035b600290810b900b6060830152610f71565b80600001516001600160a01b031682604001516001600160a01b031614610f7157610f6482604001516135e1565b600290810b900b60608301525b50610b87565b836020015160020b816060015160020b1461104557600080610fc586604001518660400151886020015188602001518a606001518b6080015160086138fc909695949392919063ffffffff16565b604085015160608601516000805461ffff60c81b1916600160c81b61ffff958616021761ffff60b81b1916600160b81b95909416949094029290921762ffffff60a01b1916600160a01b62ffffff60029490940b9390931692909202919091176001600160a01b0319166001600160a01b039091161790555061106a9050565b6040810151600080546001600160a01b0319166001600160a01b039092169190911790555b8060c001516001600160801b031683602001516001600160801b0316146110b05760c0810151600480546001600160801b0319166001600160801b039092169190911790555b8a1561110057608081015160015560a08101516001600160801b0316156110fb5760a0810151600380546001600160801b031981166001600160801b03918216909301169190911790555b611146565b608081015160025560a08101516001600160801b0316156111465760a0810151600380546001600160801b03808216600160801b92839004821690940116029190911790555b8115158b15151461115f57602081015181518b0361116c565b80600001518a0381602001515b90965094508a156112a55760008512156111ae576111ae7f00000000000000000000000000000000000000000000000000000000000000008d87600003613a97565b60006111b8613be5565b9050336001600160a01b031663fa461e3388888c8c6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561123c57600080fd5b505af1158015611250573d6000803e3d6000fd5b5050505061125c613be5565b6112668289613d1e565b111561129f576040805162461bcd60e51b815260206004820152600360248201526249494160e81b604482015290519081900360640190fd5b506113cf565b60008612156112dc576112dc7f00000000000000000000000000000000000000000000000000000000000000008d88600003613a97565b60006112e6613d2e565b9050336001600160a01b031663fa461e3388888c8c6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561136a57600080fd5b505af115801561137e573d6000803e3d6000fd5b5050505061138a613d2e565b6113948288613d1e565b11156113cd576040805162461bcd60e51b815260206004820152600360248201526249494160e81b604482015290519081900360640190fd5b505b60408082015160c083015160608085015184518b8152602081018b90526001600160a01b03948516818701526001600160801b039093169183019190915260020b60808201529151908e169133917fc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca679181900360a00190a350506000805460ff60f01b1916600160f01b17905550919890975095505050505050565b6004546001600160801b031681565b6003546001600160801b0380821691600160801b90041682565b60088161ffff81106114a557600080fd5b015463ffffffff81169150600160201b810460060b90600160581b81046001600160a01b031690600160f81b900460ff1684565b600054600160f01b900460ff1661151d576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b19169055611532612b47565b60008054600160d81b900461ffff169061154e60088385613dc6565b6000805461ffff808416600160d81b810261ffff60d81b19909316929092179092559192508316146115bb576040805161ffff80851682528316602082015281517fac49e518f90a358f652e4400164f05a5d8f7e35e7747279bc3a93dbf584e125a929181900390910190a15b50506000805460ff60f01b1916600160f01b17905550565b6000546001600160a01b03811690600160a01b810460020b9061ffff600160b81b8204811691600160c81b8104821691600160d81b8204169060ff600160e81b8204811691600160f01b90041687565b600080548190600160f01b900460ff1661166a576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b191690556001600160801b03851661168a57600080fd5b6000806116d860405180608001604052808c6001600160a01b031681526020018b60020b81526020018a60020b81526020016116ce8a6001600160801b0316613e69565b600f0b9052613e7a565b925092505081935080925060008060008611156116fa576116f7613be5565b91505b841561170b57611708613d2e565b90505b336001600160a01b031663d348799787878b8b6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561178d57600080fd5b505af11580156117a1573d6000803e3d6000fd5b5050505060008611156117f8576117b6613be5565b6117c08388613d1e565b11156117f8576040805162461bcd60e51b815260206004820152600260248201526104d360f41b604482015290519081900360640190fd5b841561184857611806613d2e565b6118108287613d1e565b1115611848576040805162461bcd60e51b81526020600482015260026024820152614d3160f01b604482015290519081900360640190fd5b8960020b8b60020b8d6001600160a01b03167f7a53080ba414158be7ec69b987b5fb7d07dee101fe85488f0853ae16239d0bde338d8b8b60405180856001600160a01b03168152602001846001600160801b0316815260200183815260200182815260200194505050505060405180910390a450506000805460ff60f01b1916600160f01b17905550919890975095505050505050565b60025481565b600054600160f01b900460ff16611929576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b1916905561193e612b47565b6004546001600160801b031680611980576040805162461bcd60e51b81526020600482015260016024820152601360fa1b604482015290519081900360640190fd5b60006119b5867f000000000000000000000000000000000000000000000000000000000000000062ffffff16620f42406140ba565b905060006119ec867f000000000000000000000000000000000000000000000000000000000000000062ffffff16620f42406140ba565b905060006119f8613be5565b90506000611a04613d2e565b90508815611a3757611a377f00000000000000000000000000000000000000000000000000000000000000008b8b613a97565b8715611a6857611a687f00000000000000000000000000000000000000000000000000000000000000008b8a613a97565b336001600160a01b031663e9cbafb085858a8a6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015611aea57600080fd5b505af1158015611afe573d6000803e3d6000fd5b505050506000611b0c613be5565b90506000611b18613d2e565b905081611b258588613d1e565b1115611b5d576040805162461bcd60e51b8152602060048201526002602482015261046360f41b604482015290519081900360640190fd5b80611b688487613d1e565b1115611ba0576040805162461bcd60e51b8152602060048201526002602482015261463160f01b604482015290519081900360640190fd5b8382038382038115611c2f5760008054600160e81b9004600f16908115611bd3578160ff168481611bcd57fe5b04611bd6565b60005b90506001600160801b03811615611c0957600380546001600160801b038082168401166001600160801b03199091161790555b611c23818503600160801b8d6001600160801b031661322f565b60018054909101905550505b8015611cba5760008054600160e81b900460041c600f16908115611c5f578160ff168381611c5957fe5b04611c62565b60005b90506001600160801b03811615611c9457600380546001600160801b03600160801b8083048216850182160291161790555b611cae818403600160801b8d6001600160801b031661322f565b60028054909101905550505b8d6001600160a01b0316336001600160a01b03167fbdbdb71d7860376ba52b25a5028beea23581364a40522f6bcfb86bb1f2dca6338f8f86866040518085815260200184815260200183815260200182815260200194505050505060405180910390a350506000805460ff60f01b1916600160f01b179055505050505050505050505050565b600080548190600160f01b900460ff16611d87576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b19168155611da160073389896140f4565b60038101549091506001600160801b0390811690861611611dc25784611dd1565b60038101546001600160801b03165b60038201549093506001600160801b03600160801b909104811690851611611df95783611e0f565b6003810154600160801b90046001600160801b03165b91506001600160801b03831615611e74576003810180546001600160801b031981166001600160801b03918216869003821617909155611e74907f0000000000000000000000000000000000000000000000000000000000000000908a908616613a97565b6001600160801b03821615611eda576003810180546001600160801b03600160801b808304821686900382160291811691909117909155611eda907f0000000000000000000000000000000000000000000000000000000000000000908a908516613a97565b604080516001600160a01b038a1681526001600160801b0380861660208301528416818301529051600288810b92908a900b9133917f70935338e69775456a85ddef226c395fb668b63fa0115f5f20610b388e6ca9c0919081900360600190a4506000805460ff60f01b1916600160f01b17905590969095509350505050565b60076020526000908152604090208054600182015460028301546003909301546001600160801b0392831693919281811691600160801b90041685565b60066020526000908152604090205481565b7f000000000000000000000000000000000000000000000000000000000000000081565b600054600160f01b900460ff16612011576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b1916905560408051638da5cb5b60e01b815290516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691638da5cb5b916004808301926020929190829003018186803b15801561207e57600080fd5b505afa158015612092573d6000803e3d6000fd5b505050506040513d60208110156120a857600080fd5b50516001600160a01b031633146120be57600080fd5b60ff821615806120e1575060048260ff16101580156120e15750600a8260ff1611155b801561210b575060ff8116158061210b575060048160ff161015801561210b5750600a8160ff1611155b61211457600080fd5b60008054610ff0600484901b16840160ff908116600160e81b90810260ff60e81b19841617909355919004167f973d8d92bb299f4af6ce49b52a8adb85ae46b9f214c4c4fc06ac77401237b1336010826040805160ff9390920683168252600f600486901c16602083015286831682820152918516606082015290519081900360800190a150506000805460ff60f01b1916600160f01b17905550565b600080548190600160f01b900460ff166121f8576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b1916905560408051638da5cb5b60e01b815290516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691638da5cb5b916004808301926020929190829003018186803b15801561226557600080fd5b505afa158015612279573d6000803e3d6000fd5b505050506040513d602081101561228f57600080fd5b50516001600160a01b031633146122a557600080fd5b6003546001600160801b03908116908516116122c157836122ce565b6003546001600160801b03165b6003549092506001600160801b03600160801b9091048116908416116122f45782612308565b600354600160801b90046001600160801b03165b90506001600160801b03821615612389576003546001600160801b038381169116141561233757600019909101905b600380546001600160801b031981166001600160801b03918216859003821617909155612389907f00000000000000000000000000000000000000000000000000000000000000009087908516613a97565b6001600160801b0381161561240f576003546001600160801b03828116600160801b9092041614156123ba57600019015b600380546001600160801b03600160801b80830482168590038216029181169190911790915561240f907f00000000000000000000000000000000000000000000000000000000000000009087908416613a97565b604080516001600160801b0380851682528316602082015281516001600160a01b0388169233927f596b573906218d3411850b26a6b437d6c4522fdb43d2d2386263f86d50b8b151929081900390910190a36000805460ff60f01b1916600160f01b1790559094909350915050565b606080612489612b47565b612500612494612b7e565b858580806020026020016040519081016040528093929190818152602001838360200280828437600092018290525054600454600896959450600160a01b820460020b935061ffff600160b81b8304811693506001600160801b0390911691600160c81b900416614158565b915091509250929050565b600080548190600160f01b900460ff16612552576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b1916815560408051608081018252338152600288810b602083015287900b91810191909152819081906125ab906060810161259e6001600160801b038a16613e69565b600003600f0b9052613e7a565b92509250925081600003945080600003935060008511806125cc5750600084115b1561260b576003830180546001600160801b038082168089018216600160801b93849004831689019092169092029091176001600160801b0319161790555b604080516001600160801b0388168152602081018790528082018690529051600289810b92908b900b9133917f0c396cd989a39f4459b5fa1aed6a9a8dcdbc45908acfd67e028cd568da98982c919081900360600190a450506000805460ff60f01b1916600160f01b179055509094909350915050565b600080600061268f612b47565b61269985856142b2565b600285810b810b60009081526005602052604080822087840b90930b825281206003830154600681900b93600160381b82046001600160a01b0316928492600160d81b810463ffffffff169284929091600160f81b900460ff16806126fd57600080fd5b6003820154600681900b9850600160381b81046001600160a01b03169650600160d81b810463ffffffff169450600160f81b900460ff168061273e57600080fd5b50506040805160e0810182526000546001600160a01b0381168252600160a01b8104600290810b810b810b6020840181905261ffff600160b81b8404811695850195909552600160c81b830485166060850152600160d81b8304909416608084015260ff600160e81b8304811660a0850152600160f01b909204909116151560c08301529093508e810b91900b121590506127e75750939094039650900393509003905061286a565b8a60020b816020015160020b121561285b576000612803612b7e565b6020830151604084015160045460608601519394506000938493612839936008938893879392916001600160801b0316906132df565b9a9003989098039b50509490960392909203965090910303925061286a915050565b50949093039650039350900390505b9250925092565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60015481565b60056020526000908152604090208054600182015460028301546003909301546001600160801b03831693600160801b909304600f0b9290600681900b90600160381b81046001600160a01b031690600160d81b810463ffffffff1690600160f81b900460ff1688565b6000546001600160a01b0316156129b4576040805162461bcd60e51b8152602060048201526002602482015261414960f01b604482015290519081900360640190fd5b60006129bf826135e1565b90506000806129d76129cf612b7e565b60089061437b565b6040805160e0810182526001600160a01b038816808252600288810b6020808501829052600085870181905261ffff898116606088018190529089166080880181905260a08801839052600160c0909801979097528154600160f01b6001600160a01b0319909116871762ffffff60a01b1916600160a01b62ffffff9787900b97909716969096029590951763ffffffff60b81b1916600160c81b9091021761ffff60d81b1916600160d81b9096029590951761ffff60e81b191692909217909355835191825281019190915281519395509193507f98636036cb66a9c19a37435efc1e90142190214e8abeb821bdba3f2990dd4c9592918290030190a150505050565b60008082600281900b620d89e71981612af057fe5b05029050600083600281900b620d89e881612b0757fe5b0502905060008460020b83830360020b81612b1e57fe5b0560010190508062ffffff166001600160801b03801681612b3b57fe5b0493505050505b919050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614612b7c57600080fd5b565b4290565b60008060008460020b8660020b81612b9657fe5b05905060008660020b128015612bbd57508460020b8660020b81612bb657fe5b0760020b15155b15612bc757600019015b8315612c3c57600080612bd9836143c7565b600182810b810b600090815260208d9052604090205460ff83169190911b80016000190190811680151597509294509092509085612c1e57888360ff16860302612c31565b88612c28826143d9565b840360ff168603025b965050505050612cba565b600080612c4b836001016143c7565b91509150600060018260ff166001901b031990506000818b60008660010b60010b8152602001908152602001600020541690508060001415955085612c9d57888360ff0360ff16866001010102612cb3565b8883612ca883614478565b0360ff168660010101025b9650505050505b5094509492505050565b60008060008360020b12612cdb578260020b612ce3565b8260020b6000035b9050620d89e8811115612d21576040805162461bcd60e51b81526020600482015260016024820152601560fa1b604482015290519081900360640190fd5b600060018216612d3557600160801b612d47565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615612d7b576ffff97272373d413259a46990580e213a0260801c5b6004821615612d9a576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615612db9576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615612dd8576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615612df7576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615612e16576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615612e35576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615612e55576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615612e75576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615612e95576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615612eb5576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615612ed5576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615612ef5576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615612f15576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615612f35576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615612f56576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615612f76576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615612f95576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615612fb2576b048a170391f7dc42444e8fa20260801c5b60008460020b1315612fcd578060001981612fc957fe5b0490505b600160201b810615612fe0576001612fe3565b60005b60ff16602082901c0192505050919050565b60008080806001600160a01b03808916908a16101581871280159061307a57600061302e8989620f42400362ffffff16620f424061322f565b905082613047576130428c8c8c6001614562565b613054565b6130548b8d8c60016145dd565b9550858110613065578a9650613074565b6130718c8b8386614688565b96505b506130c4565b816130915761308c8b8b8b60006145dd565b61309e565b61309e8a8c8b6000614562565b93508388600003106130b2578995506130c4565b6130c18b8a8a600003856146d4565b95505b6001600160a01b038a8116908716148215613127578080156130e35750815b6130f9576130f4878d8c60016145dd565b6130fb565b855b9550808015613108575081155b61311e57613119878d8c6000614562565b613120565b845b9450613171565b8080156131315750815b613147576131428c888c6001614562565b613149565b855b9550808015613156575081155b61316c576131678c888c60006145dd565b61316e565b845b94505b8115801561318157508860000385115b1561318d578860000394505b8180156131ac57508a6001600160a01b0316876001600160a01b031614155b156131bb5785890393506131d8565b6131d5868962ffffff168a620f42400362ffffff166140ba565b93505b50505095509550955095915050565b6000600160ff1b82106131f957600080fd5b5090565b8082038281131560008312151461321357600080fd5b92915050565b8181018281121560008312151461321357600080fd5b6000808060001985870986860292508281109083900303905080613265576000841161325a57600080fd5b5082900490506132d8565b80841161327157600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b60008063ffffffff8716613385576000898661ffff1661ffff811061330057fe5b60408051608081018252919092015463ffffffff808216808452600160201b8304600690810b810b900b6020850152600160581b83046001600160a01b031694840194909452600160f81b90910460ff16151560608301529092508a16146133715761336e818a8988614720565b90505b806020015181604001519250925050613465565b86880360008061339a8c8c858c8c8c8c6147c3565b91509150816000015163ffffffff168363ffffffff1614156133cc578160200151826040015194509450505050613465565b805163ffffffff848116911614156133f4578060200151816040015194509450505050613465565b8151815160208085015190840151918390039286039163ffffffff80841692908516910360060b8161342257fe5b05028460200151018263ffffffff168263ffffffff1686604001518660400151036001600160a01b0316028161345457fe5b048560400151019650965050505050505b97509795505050505050565b600295860b860b60009081526020979097526040909620600181018054909503909455938301805490920390915560038201805463ffffffff600160d81b6001600160a01b03600160381b808504821690960316909402600160381b600160d81b031990921691909117600681810b90960390950b66ffffffffffffff1666ffffffffffffff199095169490941782810485169095039093160263ffffffff60d81b1990931692909217905554600160801b9004600f0b90565b60008082600f0b121561359057826001600160801b03168260000384039150816001600160801b03161061358b576040805162461bcd60e51b81526020600482015260026024820152614c5360f01b604482015290519081900360640190fd5b613213565b826001600160801b03168284019150816001600160801b03161015613213576040805162461bcd60e51b81526020600482015260026024820152614c4160f01b604482015290519081900360640190fd5b60006401000276a36001600160a01b0383161080159061361d575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038316105b613652576040805162461bcd60e51b81526020600482015260016024820152602960f91b604482015290519081900360640190fd5b640100000000600160c01b03602083901b166001600160801b03811160071b81811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c979088119617909417909217179091171717608081106136e657607f810383901c91506136f0565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d607f198f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c600160381b161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581026f028f6481ab7f045a5af012a19d003aa9198101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b146138ed57886001600160a01b03166138d182612cc4565b6001600160a01b031611156138e657816138e8565b805b6138ef565b815b9998505050505050505050565b6000806000898961ffff1661ffff811061391257fe5b60408051608081018252919092015463ffffffff808216808452600160201b8304600690810b810b900b6020850152600160581b83046001600160a01b031694840194909452600160f81b90910460ff1615156060830152909250891614156139815788859250925050613465565b8461ffff168461ffff161180156139a257506001850361ffff168961ffff16145b156139af578391506139b3565b8491505b8161ffff168960010161ffff16816139c757fe5b0692506139d681898989614720565b8a8461ffff1661ffff81106139e757fe5b825191018054602084015160408501516060909501511515600160f81b026001600160f81b036001600160a01b03909616600160581b027fff0000000000000000000000000000000000000000ffffffffffffffffffffff60069390930b66ffffffffffffff16600160201b026affffffffffffff000000001963ffffffff90971663ffffffff199095169490941795909516929092171692909217929092161790555097509795505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1781529251825160009485949389169392918291908083835b60208310613b135780518252601f199092019160209182019101613af4565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613b75576040519150601f19603f3d011682016040523d82523d6000602084013e613b7a565b606091505b5091509150818015613ba8575080511580613ba85750808060200190516020811015613ba557600080fd5b50515b613bde576040805162461bcd60e51b81526020600482015260026024820152612a2360f11b604482015290519081900360640190fd5b5050505050565b604080513060248083019190915282518083039091018152604490910182526020810180516001600160e01b03166370a0823160e01b17815291518151600093849384936001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001693919290918291908083835b60208310613c7e5780518252601f199092019160209182019101613c5f565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114613cde576040519150601f19603f3d011682016040523d82523d6000602084013e613ce3565b606091505b5091509150818015613cf757506020815110155b613d0057600080fd5b808060200190516020811015613d1557600080fd5b50519250505090565b8082018281101561321357600080fd5b604080513060248083019190915282518083039091018152604490910182526020810180516001600160e01b03166370a0823160e01b17815291518151600093849384936001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016939192909182919080838360208310613c7e5780518252601f199092019160209182019101613c5f565b6000808361ffff1611613e04576040805162461bcd60e51b81526020600482015260016024820152604960f81b604482015290519081900360640190fd5b8261ffff168261ffff1611613e1a5750816132d8565b825b8261ffff168161ffff161015613e60576001858261ffff1661ffff8110613e3f57fe5b01805463ffffffff191663ffffffff92909216919091179055600101613e1c565b50909392505050565b80600f81900b8114612b4257600080fd5b6000806000613e87612b47565b613e99846020015185604001516142b2565b6040805160e0810182526000546001600160a01b0381168252600160a01b8104600290810b810b900b602080840182905261ffff600160b81b8404811685870152600160c81b84048116606080870191909152600160d81b8504909116608086015260ff600160e81b8504811660a0870152600160f01b909404909316151560c085015288519089015194890151928901519394613f3d94919390929091906149bd565b93508460600151600f0b6000146140b257846020015160020b816020015160020b1215613f9257613f8b613f748660200151612cc4565b613f818760400151612cc4565b8760600151614b72565b92506140b2565b846040015160020b816020015160020b12156140885760045460408201516001600160801b0390911690613fe490613fc8612b7e565b60208501516060860151608087015160089493929187916138fc565b6000805461ffff60c81b1916600160c81b61ffff938416021761ffff60b81b1916600160b81b939092169290920217905581516040870151614034919061402a90612cc4565b8860600151614b72565b93506140526140468760200151612cc4565b83516060890151614bb6565b925061406281876060015161352b565b600480546001600160801b0319166001600160801b0392909216919091179055506140b2565b6140af6140988660200151612cc4565b6140a58760400151612cc4565b8760600151614bb6565b91505b509193909250565b60006140c784848461322f565b9050600082806140d357fe5b84860911156132d85760001981106140ea57600080fd5b6001019392505050565b6040805160609490941b6bffffffffffffffffffffffff1916602080860191909152600293840b60e890811b60348701529290930b90911b60378401528051808403601a018152603a90930181528251928201929092206000908152929052902090565b60608060008361ffff1611614198576040805162461bcd60e51b81526020600482015260016024820152604960f81b604482015290519081900360640190fd5b865167ffffffffffffffff811180156141b057600080fd5b506040519080825280602002602001820160405280156141da578160200160208202803683370190505b509150865167ffffffffffffffff811180156141f557600080fd5b5060405190808252806020026020018201604052801561421f578160200160208202803683370190505b50905060005b87518110156142a5576142508a8a8a848151811061423f57fe5b60200260200101518a8a8a8a6132df565b84838151811061425c57fe5b6020026020010184848151811061426f57fe5b60200260200101826001600160a01b03166001600160a01b03168152508260060b60060b81525050508080600101915050614225565b5097509795505050505050565b8060020b8260020b126142f2576040805162461bcd60e51b8152602060048201526003602482015262544c5560e81b604482015290519081900360640190fd5b620d89e719600283900b1215614335576040805162461bcd60e51b8152602060048201526003602482015262544c4d60e81b604482015290519081900360640190fd5b620d89e8600282900b1315614377576040805162461bcd60e51b815260206004820152600360248201526254554d60e81b604482015290519081900360640190fd5b5050565b6040805160808101825263ffffffff9283168082526000602083018190529282019290925260016060909101819052835463ffffffff1916909117909116600160f81b17909155908190565b60020b600881901d9161010090910790565b60008082116143e757600080fd5b600160801b82106143fa57608091821c91015b68010000000000000000821061441257604091821c91015b600160201b821061442557602091821c91015b62010000821061443757601091821c91015b610100821061444857600891821c91015b6010821061445857600491821c91015b6004821061446857600291821c91015b60028210612b4257600101919050565b600080821161448657600080fd5b5060ff6001600160801b038216156144a157607f19016144a9565b608082901c91505b67ffffffffffffffff8216156144c257603f19016144ca565b604082901c91505b63ffffffff8216156144df57601f19016144e7565b602082901c91505b61ffff8216156144fa57600f1901614502565b601082901c91505b60ff821615614514576007190161451c565b600882901c91505b600f82161561452e5760031901614536565b600482901c91505b60038216156145485760011901614550565b600282901c91505b6001821615612b425760001901919050565b6000836001600160a01b0316856001600160a01b03161115614582579293925b816145af576145aa836001600160801b03168686036001600160a01b0316600160601b61322f565b6145d2565b6145d2836001600160801b03168686036001600160a01b0316600160601b6140ba565b90505b949350505050565b6000836001600160a01b0316856001600160a01b031611156145fd579293925b600160601b600160e01b03606084901b166001600160a01b03868603811690871661462757600080fd5b8361465757866001600160a01b031661464a8383896001600160a01b031661322f565b8161465157fe5b0461467d565b61467d61466e8383896001600160a01b03166140ba565b886001600160a01b0316614be5565b979650505050505050565b600080856001600160a01b03161161469f57600080fd5b6000846001600160801b0316116146b557600080fd5b816146c7576145aa8585856001614bf0565b6145d28585856001614cd1565b600080856001600160a01b0316116146eb57600080fd5b6000846001600160801b03161161470157600080fd5b81614713576145aa8585856000614cd1565b6145d28585856000614bf0565b6147286154f1565b600085600001518503905060405180608001604052808663ffffffff1681526020018263ffffffff168660020b0288602001510160060b81526020016000856001600160801b03161161477c57600161477e565b845b6001600160801b031663ffffffff60801b608085901b168161479c57fe5b048860400151016001600160a01b0316815260200160011515815250915050949350505050565b6147cb6154f1565b6147d36154f1565b888561ffff1661ffff81106147e457fe5b60408051608081018252919092015463ffffffff8116808352600160201b8204600690810b810b900b6020840152600160581b82046001600160a01b031693830193909352600160f81b900460ff1615156060820152925061484890899089614db4565b15614880578663ffffffff16826000015163ffffffff16141561486a57613465565b8161487783898988614720565b91509150613465565b888361ffff168660010161ffff168161489557fe5b0661ffff1661ffff81106148a557fe5b60408051608081018252929091015463ffffffff81168352600160201b8104600690810b810b900b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b9091041615156060820181905290925061495a57604080516080810182528a5463ffffffff81168252600160201b8104600690810b810b900b6020830152600160581b81046001600160a01b031692820192909252600160f81b90910460ff161515606082015291505b61496988836000015189614db4565b6149a0576040805162461bcd60e51b815260206004820152600360248201526213d31160ea1b604482015290519081900360640190fd5b6149ad8989898887614e75565b9150915097509795505050505050565b60006149cc60078787876140f4565b60015460025491925090600080600f87900b15614b125760006149ed612b7e565b6000805460045492935090918291614a379160089186918591600160a01b810460020b9161ffff600160b81b83048116926001600160801b0390921691600160c81b9004166132df565b9092509050614a7160058d8b8d8b8b87898b60007f0000000000000000000000000000000000000000000000000000000000000000615013565b9450614aa860058c8b8d8b8b87898b60017f0000000000000000000000000000000000000000000000000000000000000000615013565b93508415614adc57614adc60068d7f00000000000000000000000000000000000000000000000000000000000000006151cc565b8315614b0e57614b0e60068c7f00000000000000000000000000000000000000000000000000000000000000006151cc565b5050505b600080614b2460058c8c8b8a8a615232565b9092509050614b35878a84846152de565b600089600f0b1215614b63578315614b5257614b5260058c615473565b8215614b6357614b6360058b615473565b50505050505095945050505050565b60008082600f0b12614b9857614b93614b8e85858560016145dd565b6131e7565b6145d5565b614bab614b8e85858560000360006145dd565b600003949350505050565b60008082600f0b12614bd257614b93614b8e8585856001614562565b614bab614b8e8585856000036000614562565b808204910615150190565b60008115614c635760006001600160a01b03841115614c2657614c2184600160601b876001600160801b031661322f565b614c3e565b6001600160801b038516606085901b81614c3c57fe5b045b9050614c5b614c566001600160a01b03881683613d1e565b61549f565b9150506145d5565b60006001600160a01b03841115614c9157614c8c84600160601b876001600160801b03166140ba565b614ca8565b614ca8606085901b6001600160801b038716614be5565b905080866001600160a01b031611614cbf57600080fd5b6001600160a01b0386160390506145d5565b600082614cdf5750836145d5565b600160601b600160e01b03606085901b168215614d6d576001600160a01b03861684810290858281614d0d57fe5b041415614d3e57818101828110614d3c57614d3283896001600160a01b0316836140ba565b93505050506145d5565b505b614d6482614d5f878a6001600160a01b03168681614d5857fe5b0490613d1e565b614be5565b925050506145d5565b6001600160a01b03861684810290858281614d8457fe5b04148015614d9157508082115b614d9a57600080fd5b808203614d32614c56846001600160a01b038b16846140ba565b60008363ffffffff168363ffffffff1611158015614dde57508363ffffffff168263ffffffff1611155b15614dfa578163ffffffff168363ffffffff16111590506132d8565b60008463ffffffff168463ffffffff1611614e21578363ffffffff16600160201b01614e29565b8363ffffffff165b64ffffffffff16905060008563ffffffff168463ffffffff1611614e59578363ffffffff16600160201b01614e61565b8363ffffffff165b64ffffffffff169091111595945050505050565b614e7d6154f1565b614e856154f1565b60008361ffff168560010161ffff1681614e9b57fe5b0661ffff169050600060018561ffff16830103905060005b506002818301048961ffff87168281614ec857fe5b0661ffff8110614ed457fe5b60408051608081018252929091015463ffffffff81168352600160201b8104600690810b810b900b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b90910416151560608201819052909550614f3e57806001019250614eb3565b898661ffff168260010181614f4f57fe5b0661ffff8110614f5b57fe5b60408051608081018252929091015463ffffffff81168352600160201b8104600690810b810b900b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b90910416151560608201528551909450600090614fc5908b908b614db4565b9050808015614fde5750614fde8a8a8760000151614db4565b15614fe95750615006565b80614ff957600182039250615000565b8160010193505b50614eb3565b5050509550959350505050565b60028a810b900b600090815260208c90526040812080546001600160801b03168261503e828d61352b565b9050846001600160801b0316816001600160801b0316111561508c576040805162461bcd60e51b81526020600482015260026024820152614c4f60f01b604482015290519081900360640190fd5b6001600160801b038281161590821615811415945015615131578c60020b8e60020b1361511957600183018b9055600283018a9055600383018054600160381b600160d81b031916600160381b6001600160a01b038c16021766ffffffffffffff191666ffffffffffffff60068b900b161763ffffffff60d81b1916600160d81b63ffffffff8a16021790555b6003830180546001600160f81b0316600160f81b1790555b82546001600160801b0319166001600160801b0382161783558561517a5782546151759061517090600160801b9004600f90810b810b908f900b613219565b613e69565b61519b565b825461519b9061517090600160801b9004600f90810b810b908f900b6131fd565b8354600f9190910b6001600160801b03908116600160801b0291161790925550909c9b505050505050505050505050565b8060020b8260020b816151db57fe5b0760020b156151e957600080fd5b6000806152048360020b8560020b816151fe57fe5b056143c7565b600191820b820b60009081526020979097526040909620805460ff9097169190911b90951890945550505050565b600285810b80820b60009081526020899052604080822088850b850b83529082209193849391929184918291908a900b126152785750506001820154600283015461528b565b8360010154880391508360020154870390505b6000808b60020b8b60020b12156152ad575050600183015460028401546152c0565b84600101548a0391508460020154890390505b92909803979097039b96909503949094039850939650505050505050565b6040805160a08101825285546001600160801b0390811682526001870154602083015260028701549282019290925260038601548083166060830152600160801b900490911660808201526000600f85900b61537d5781516001600160801b0316615375576040805162461bcd60e51b815260206004820152600260248201526104e560f41b604482015290519081900360640190fd5b50805161538c565b8151615389908661352b565b90505b60006153b08360200151860384600001516001600160801b0316600160801b61322f565b905060006153d68460400151860385600001516001600160801b0316600160801b61322f565b905086600f0b6000146153fd5787546001600160801b0319166001600160801b0384161788555b60018801869055600288018590556001600160801b03821615158061542b57506000816001600160801b0316115b15615469576003880180546001600160801b031981166001600160801b039182168501821617808216600160801b9182900483168501909216021790555b5050505050505050565b600290810b810b6000908152602092909252604082208281556001810183905590810182905560030155565b806001600160a01b0381168114612b4257600080fd5b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915290565b6040805160808101825260008082526020820181905291810182905260608101919091529056fea26469706673582212200c1f93875bf69bd8236c0ed6fa61db810cf06b5c5481470ac7a631eb4e43c81264736f6c63430007060033a264697066735822122093a7aea0dd1757bc99241264e80faeac540e896cf901842457b186425e3e809964736f6c63430007060033c66a3fdf07232cdd185febcc6579d408c241b47ae2f9907d84be655141eeaecc", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061007d5760003560e01c8063890357301161005b578063890357301461013b5780638a7c195f146101855780638da5cb5b146101b0578063a1671295146101b85761007d565b806313af4035146100825780631698ee82146100aa57806322afcccb14610102575b600080fd5b6100a86004803603602081101561009857600080fd5b50356001600160a01b03166101f4565b005b6100e6600480360360608110156100c057600080fd5b5080356001600160a01b03908116916020810135909116906040013562ffffff16610267565b604080516001600160a01b039092168252519081900360200190f35b6101246004803603602081101561011857600080fd5b503562ffffff16610293565b6040805160029290920b8252519081900360200190f35b6101436102a8565b604080516001600160a01b0396871681529486166020860152929094168383015262ffffff16606083015260029290920b608082015290519081900360a00190f35b6100a86004803603604081101561019b57600080fd5b5062ffffff813516906020013560020b6102de565b6100e66103a1565b6100e6600480360360608110156101ce57600080fd5b5080356001600160a01b03908116916020810135909116906040013562ffffff166103b0565b6003546001600160a01b0316331461020b57600080fd5b6003546040516001600160a01b038084169216907fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c90600090a3600380546001600160a01b0319166001600160a01b0392909216919091179055565b60056020908152600093845260408085208252928452828420905282529020546001600160a01b031681565b60046020526000908152604090205460020b81565b600054600154600280546001600160a01b03938416939283169281169162ffffff600160a01b83041691600160b81b9004900b85565b6003546001600160a01b031633146102f557600080fd5b620f42408262ffffff161061030957600080fd5b60008160020b13801561032057506140008160020b125b61032957600080fd5b62ffffff8216600090815260046020526040902054600290810b900b1561034f57600080fd5b62ffffff828116600081815260046020526040808220805462ffffff1916600287900b958616179055517fc66a3fdf07232cdd185febcc6579d408c241b47ae2f9907d84be655141eeaecc9190a35050565b6003546001600160a01b031681565b60006103ba610546565b826001600160a01b0316846001600160a01b031614156103d957600080fd5b600080846001600160a01b0316866001600160a01b0316106103fc5784866103ff565b85855b90925090506001600160a01b03821661041757600080fd5b62ffffff8416600090815260046020526040902054600290810b9081900b61043e57600080fd5b6001600160a01b0383811660009081526005602090815260408083208685168452825280832062ffffff8a168452909152902054161561047d57600080fd5b61048a308484888561057d565b6001600160a01b03808516600081815260056020818152604080842089871680865290835281852062ffffff8e168087529084528286208054988a166001600160a01b0319998a1681179091558287529484528286208787528452828620818752845294829020805490971684179096558051600289900b815291820192909252815195995091947f783cca1c0412dd0d695e784568c96da2e9c22ff989357a2e8b1d9b2b4e6b71189281900390910190a45050509392505050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461057b57600080fd5b565b6040805160a0810182526001600160a01b03878116808352878216602080850182905292881684860181905262ffffff888116606080880182905260028a810b6080998a01819052600080546001600160a01b03199081169099178155600180548a16891790558254909816861762ffffff60a01b1916600160a01b85021762ffffff60b81b1916600160b81b91830b9095160293909317909255875180870194909452838801929092528281019190915285518083039091018152930193849052825192909101919091209091610654906106ab565b8190604051809103906000f5905080158015610674573d6000803e3d6000fd5b50600080546001600160a01b0319908116909155600180549091169055600280546001600160d01b03191690559695505050505050565b615798806106b98339019056fe6101606040523480156200001257600080fd5b503060601b60805260408051630890357360e41b81529051600091339163890357309160048082019260a092909190829003018186803b1580156200005657600080fd5b505afa1580156200006b573d6000803e3d6000fd5b505050506040513d60a08110156200008257600080fd5b508051602080830151604084015160608086015160809096015160e896871b6001600160e81b0319166101005291811b6001600160601b031990811660e05292811b831660c0529390931b1660a052600282810b900b90921b610120529150620000f79082906200010f811b62002adb17901c565b60801b6001600160801b03191661014052506200017d565b60008082600281900b620d89e719816200012557fe5b05029050600083600281900b620d89e8816200013d57fe5b0502905060008460020b83830360020b816200015557fe5b0560010190508062ffffff166001600160801b038016816200017357fe5b0495945050505050565b60805160601c60a05160601c60c05160601c60e05160601c6101005160e81c6101205160e81c6101405160801c61554e6200024a60003980611fab5280614a4d5280614a84525080610bd852806128975280614ab85280614aea525080610cc7528061198852806119bf52806128df5250806111855280611a425280611eb152806123e652806128bb5280613d7c5250806108aa52806112b35280611a115280611e4b52806123605280613c33525080612038528061221f5280612873525080612b52525061554e6000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c806370cf754a116100de578063c45a015511610097578063ddca3f4311610071578063ddca3f43146107d8578063f3058399146107f8578063f30dba9314610800578063f637731d146108825761018e565b8063c45a0155146107a9578063d0c93a7c146107b1578063d21220a7146107d05761018e565b806370cf754a146105a05780638206a4d1146105a857806385b66729146105d0578063883bdbfd1461060d578063a34123a714610714578063a38807f21461074e5761018e565b80633850c7bd1161014b578063490e6cbc11610125578063490e6cbc1461044c5780634f1eb3d8146104d6578063514ea4bf146105275780635339c296146105805761018e565b80633850c7bd146103395780633c8a7d8d1461039257806346141319146104325761018e565b80630dfe168114610193578063128acb08146101b75780631a686502146102645780631ad8b03b14610288578063252c09d7146102bf57806332148f6714610316575b600080fd5b61019b6108a8565b604080516001600160a01b039092168252519081900360200190f35b61024b600480360360a08110156101cd57600080fd5b6001600160a01b0382358116926020810135151592604082013592606083013516919081019060a081016080820135600160201b81111561020d57600080fd5b82018360208201111561021f57600080fd5b803590602001918460018302840111600160201b8311171561024057600080fd5b5090925090506108cc565b6040805192835260208301919091528051918290030190f35b61026c61146b565b604080516001600160801b039092168252519081900360200190f35b61029061147a565b60405180836001600160801b03168152602001826001600160801b031681526020019250505060405180910390f35b6102dc600480360360208110156102d557600080fd5b5035611494565b6040805163ffffffff909516855260069390930b60208501526001600160a01b039091168383015215156060830152519081900360800190f35b6103376004803603602081101561032c57600080fd5b503561ffff166114d9565b005b6103416115d3565b604080516001600160a01b03909816885260029690960b602088015261ffff9485168787015292841660608701529216608085015260ff90911660a0840152151560c0830152519081900360e00190f35b61024b600480360360a08110156103a857600080fd5b6001600160a01b03823516916020810135600290810b92604083013590910b916001600160801b036060820135169181019060a081016080820135600160201b8111156103f457600080fd5b82018360208201111561040657600080fd5b803590602001918460018302840111600160201b8311171561042757600080fd5b509092509050611623565b61043a6118df565b60408051918252519081900360200190f35b6103376004803603608081101561046257600080fd5b6001600160a01b038235169160208101359160408201359190810190608081016060820135600160201b81111561049857600080fd5b8201836020820111156104aa57600080fd5b803590602001918460018302840111600160201b831117156104cb57600080fd5b5090925090506118e5565b610290600480360360a08110156104ec57600080fd5b506001600160a01b03813516906020810135600290810b91604081013590910b906001600160801b0360608201358116916080013516611d40565b6105446004803603602081101561053d57600080fd5b5035611f5a565b604080516001600160801b0396871681526020810195909552848101939093529084166060840152909216608082015290519081900360a00190f35b61043a6004803603602081101561059657600080fd5b503560010b611f97565b61026c611fa9565b610337600480360360408110156105be57600080fd5b5060ff81358116916020013516611fcd565b610290600480360360608110156105e657600080fd5b506001600160a01b03813516906001600160801b03602082013581169160400135166121b1565b61067b6004803603602081101561062357600080fd5b810190602081018135600160201b81111561063d57600080fd5b82018360208201111561064f57600080fd5b803590602001918460208302840111600160201b8311171561067057600080fd5b50909250905061247e565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156106bf5781810151838201526020016106a7565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156106fe5781810151838201526020016106e6565b5050505090500194505050505060405180910390f35b61024b6004803603606081101561072a57600080fd5b508035600290810b91602081013590910b90604001356001600160801b031661250b565b6107786004803603604081101561076457600080fd5b508035600290810b9160200135900b612682565b6040805160069490940b84526001600160a01b03909216602084015263ffffffff1682820152519081900360600190f35b61019b612871565b6107b9612895565b6040805160029290920b8252519081900360200190f35b61019b6128b9565b6107e06128dd565b6040805162ffffff9092168252519081900360200190f35b61043a612901565b6108206004803603602081101561081657600080fd5b503560020b612907565b604080516001600160801b039099168952600f9790970b602089015287870195909552606087019390935260069190910b60808601526001600160a01b031660a085015263ffffffff1660c0840152151560e083015251908190036101000190f35b6103376004803603602081101561089857600080fd5b50356001600160a01b0316612971565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806108d7612b47565b8561090e576040805162461bcd60e51b8152602060048201526002602482015261415360f01b604482015290519081900360640190fd5b6040805160e0810182526000546001600160a01b0381168252600160a01b8104600290810b810b900b602083015261ffff600160b81b8204811693830193909352600160c81b810483166060830152600160d81b8104909216608082015260ff600160e81b8304811660a0830152600160f01b909204909116151560c082018190526109c7576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b87610a125780600001516001600160a01b0316866001600160a01b0316118015610a0d575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038716105b610a44565b80600001516001600160a01b0316866001600160a01b0316108015610a4457506401000276a36001600160a01b038716115b610a7b576040805162461bcd60e51b815260206004820152600360248201526214d41360ea1b604482015290519081900360640190fd5b6000805460ff60f01b191681556040805160c08101909152808a610aaa5760048460a0015160ff16901c610abd565b60108460a0015160ff1681610abb57fe5b065b60ff1681526004546001600160801b03166020820152604001610ade612b7e565b63ffffffff168152602001600060060b815260200160006001600160a01b031681526020016000151581525090506000808913905060006040518060e001604052808b81526020016000815260200185600001516001600160a01b03168152602001856020015160020b81526020018c610b5a57600254610b5e565b6001545b815260200160006001600160801b0316815260200184602001516001600160801b031681525090505b805115801590610bad5750886001600160a01b031681604001516001600160a01b031614155b15610f7757610bba6154b5565b60408201516001600160a01b031681526060820151610bfd906006907f00000000000000000000000000000000000000000000000000000000000000008f612b82565b15156040830152600290810b810b60208301819052620d89e719910b1215610c2e57620d89e7196020820152610c4d565b6020810151620d89e860029190910b1315610c4d57620d89e860208201525b610c5a8160200151612cc4565b6001600160a01b031660608201526040820151610ceb908d610c94578b6001600160a01b031683606001516001600160a01b031611610cae565b8b6001600160a01b031683606001516001600160a01b0316105b610cbc578260600151610cbe565b8b5b60c085015185517f0000000000000000000000000000000000000000000000000000000000000000612ff5565b60c085015260a084015260808301526001600160a01b031660408301528215610d4d57610d218160c001518260800151016131e7565b825103825260a0810151610d4390610d38906131e7565b6020840151906131fd565b6020830152610d88565b610d5a8160a001516131e7565b825101825260c08101516080820151610d8291610d7791016131e7565b602084015190613219565b60208301525b835160ff1615610dce576000846000015160ff168260c0015181610da857fe5b60c0840180519290910491829003905260a0840180519091016001600160801b03169052505b60c08201516001600160801b031615610e0d57610e018160c00151600160801b8460c001516001600160801b031661322f565b60808301805190910190525b80606001516001600160a01b031682604001516001600160a01b03161415610f3657806040015115610f0d578360a00151610e9757610e75846040015160008760200151886040015188602001518a6060015160086132df909695949392919063ffffffff16565b6001600160a01b03166080860152600690810b900b6060850152600160a08501525b6000610ee382602001518e610eae57600154610eb4565b84608001515b8f610ec3578560800151610ec7565b6002545b608089015160608a015160408b01516005959493929190613471565b90508c15610eef576000035b610efd8360c001518261352b565b6001600160801b031660c0840152505b8b610f1c578060200151610f25565b60018160200151035b600290810b900b6060830152610f71565b80600001516001600160a01b031682604001516001600160a01b031614610f7157610f6482604001516135e1565b600290810b900b60608301525b50610b87565b836020015160020b816060015160020b1461104557600080610fc586604001518660400151886020015188602001518a606001518b6080015160086138fc909695949392919063ffffffff16565b604085015160608601516000805461ffff60c81b1916600160c81b61ffff958616021761ffff60b81b1916600160b81b95909416949094029290921762ffffff60a01b1916600160a01b62ffffff60029490940b9390931692909202919091176001600160a01b0319166001600160a01b039091161790555061106a9050565b6040810151600080546001600160a01b0319166001600160a01b039092169190911790555b8060c001516001600160801b031683602001516001600160801b0316146110b05760c0810151600480546001600160801b0319166001600160801b039092169190911790555b8a1561110057608081015160015560a08101516001600160801b0316156110fb5760a0810151600380546001600160801b031981166001600160801b03918216909301169190911790555b611146565b608081015160025560a08101516001600160801b0316156111465760a0810151600380546001600160801b03808216600160801b92839004821690940116029190911790555b8115158b15151461115f57602081015181518b0361116c565b80600001518a0381602001515b90965094508a156112a55760008512156111ae576111ae7f00000000000000000000000000000000000000000000000000000000000000008d87600003613a97565b60006111b8613be5565b9050336001600160a01b031663fa461e3388888c8c6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561123c57600080fd5b505af1158015611250573d6000803e3d6000fd5b5050505061125c613be5565b6112668289613d1e565b111561129f576040805162461bcd60e51b815260206004820152600360248201526249494160e81b604482015290519081900360640190fd5b506113cf565b60008612156112dc576112dc7f00000000000000000000000000000000000000000000000000000000000000008d88600003613a97565b60006112e6613d2e565b9050336001600160a01b031663fa461e3388888c8c6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561136a57600080fd5b505af115801561137e573d6000803e3d6000fd5b5050505061138a613d2e565b6113948288613d1e565b11156113cd576040805162461bcd60e51b815260206004820152600360248201526249494160e81b604482015290519081900360640190fd5b505b60408082015160c083015160608085015184518b8152602081018b90526001600160a01b03948516818701526001600160801b039093169183019190915260020b60808201529151908e169133917fc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca679181900360a00190a350506000805460ff60f01b1916600160f01b17905550919890975095505050505050565b6004546001600160801b031681565b6003546001600160801b0380821691600160801b90041682565b60088161ffff81106114a557600080fd5b015463ffffffff81169150600160201b810460060b90600160581b81046001600160a01b031690600160f81b900460ff1684565b600054600160f01b900460ff1661151d576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b19169055611532612b47565b60008054600160d81b900461ffff169061154e60088385613dc6565b6000805461ffff808416600160d81b810261ffff60d81b19909316929092179092559192508316146115bb576040805161ffff80851682528316602082015281517fac49e518f90a358f652e4400164f05a5d8f7e35e7747279bc3a93dbf584e125a929181900390910190a15b50506000805460ff60f01b1916600160f01b17905550565b6000546001600160a01b03811690600160a01b810460020b9061ffff600160b81b8204811691600160c81b8104821691600160d81b8204169060ff600160e81b8204811691600160f01b90041687565b600080548190600160f01b900460ff1661166a576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b191690556001600160801b03851661168a57600080fd5b6000806116d860405180608001604052808c6001600160a01b031681526020018b60020b81526020018a60020b81526020016116ce8a6001600160801b0316613e69565b600f0b9052613e7a565b925092505081935080925060008060008611156116fa576116f7613be5565b91505b841561170b57611708613d2e565b90505b336001600160a01b031663d348799787878b8b6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561178d57600080fd5b505af11580156117a1573d6000803e3d6000fd5b5050505060008611156117f8576117b6613be5565b6117c08388613d1e565b11156117f8576040805162461bcd60e51b815260206004820152600260248201526104d360f41b604482015290519081900360640190fd5b841561184857611806613d2e565b6118108287613d1e565b1115611848576040805162461bcd60e51b81526020600482015260026024820152614d3160f01b604482015290519081900360640190fd5b8960020b8b60020b8d6001600160a01b03167f7a53080ba414158be7ec69b987b5fb7d07dee101fe85488f0853ae16239d0bde338d8b8b60405180856001600160a01b03168152602001846001600160801b0316815260200183815260200182815260200194505050505060405180910390a450506000805460ff60f01b1916600160f01b17905550919890975095505050505050565b60025481565b600054600160f01b900460ff16611929576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b1916905561193e612b47565b6004546001600160801b031680611980576040805162461bcd60e51b81526020600482015260016024820152601360fa1b604482015290519081900360640190fd5b60006119b5867f000000000000000000000000000000000000000000000000000000000000000062ffffff16620f42406140ba565b905060006119ec867f000000000000000000000000000000000000000000000000000000000000000062ffffff16620f42406140ba565b905060006119f8613be5565b90506000611a04613d2e565b90508815611a3757611a377f00000000000000000000000000000000000000000000000000000000000000008b8b613a97565b8715611a6857611a687f00000000000000000000000000000000000000000000000000000000000000008b8a613a97565b336001600160a01b031663e9cbafb085858a8a6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015611aea57600080fd5b505af1158015611afe573d6000803e3d6000fd5b505050506000611b0c613be5565b90506000611b18613d2e565b905081611b258588613d1e565b1115611b5d576040805162461bcd60e51b8152602060048201526002602482015261046360f41b604482015290519081900360640190fd5b80611b688487613d1e565b1115611ba0576040805162461bcd60e51b8152602060048201526002602482015261463160f01b604482015290519081900360640190fd5b8382038382038115611c2f5760008054600160e81b9004600f16908115611bd3578160ff168481611bcd57fe5b04611bd6565b60005b90506001600160801b03811615611c0957600380546001600160801b038082168401166001600160801b03199091161790555b611c23818503600160801b8d6001600160801b031661322f565b60018054909101905550505b8015611cba5760008054600160e81b900460041c600f16908115611c5f578160ff168381611c5957fe5b04611c62565b60005b90506001600160801b03811615611c9457600380546001600160801b03600160801b8083048216850182160291161790555b611cae818403600160801b8d6001600160801b031661322f565b60028054909101905550505b8d6001600160a01b0316336001600160a01b03167fbdbdb71d7860376ba52b25a5028beea23581364a40522f6bcfb86bb1f2dca6338f8f86866040518085815260200184815260200183815260200182815260200194505050505060405180910390a350506000805460ff60f01b1916600160f01b179055505050505050505050505050565b600080548190600160f01b900460ff16611d87576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b19168155611da160073389896140f4565b60038101549091506001600160801b0390811690861611611dc25784611dd1565b60038101546001600160801b03165b60038201549093506001600160801b03600160801b909104811690851611611df95783611e0f565b6003810154600160801b90046001600160801b03165b91506001600160801b03831615611e74576003810180546001600160801b031981166001600160801b03918216869003821617909155611e74907f0000000000000000000000000000000000000000000000000000000000000000908a908616613a97565b6001600160801b03821615611eda576003810180546001600160801b03600160801b808304821686900382160291811691909117909155611eda907f0000000000000000000000000000000000000000000000000000000000000000908a908516613a97565b604080516001600160a01b038a1681526001600160801b0380861660208301528416818301529051600288810b92908a900b9133917f70935338e69775456a85ddef226c395fb668b63fa0115f5f20610b388e6ca9c0919081900360600190a4506000805460ff60f01b1916600160f01b17905590969095509350505050565b60076020526000908152604090208054600182015460028301546003909301546001600160801b0392831693919281811691600160801b90041685565b60066020526000908152604090205481565b7f000000000000000000000000000000000000000000000000000000000000000081565b600054600160f01b900460ff16612011576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b1916905560408051638da5cb5b60e01b815290516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691638da5cb5b916004808301926020929190829003018186803b15801561207e57600080fd5b505afa158015612092573d6000803e3d6000fd5b505050506040513d60208110156120a857600080fd5b50516001600160a01b031633146120be57600080fd5b60ff821615806120e1575060048260ff16101580156120e15750600a8260ff1611155b801561210b575060ff8116158061210b575060048160ff161015801561210b5750600a8160ff1611155b61211457600080fd5b60008054610ff0600484901b16840160ff908116600160e81b90810260ff60e81b19841617909355919004167f973d8d92bb299f4af6ce49b52a8adb85ae46b9f214c4c4fc06ac77401237b1336010826040805160ff9390920683168252600f600486901c16602083015286831682820152918516606082015290519081900360800190a150506000805460ff60f01b1916600160f01b17905550565b600080548190600160f01b900460ff166121f8576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b1916905560408051638da5cb5b60e01b815290516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691638da5cb5b916004808301926020929190829003018186803b15801561226557600080fd5b505afa158015612279573d6000803e3d6000fd5b505050506040513d602081101561228f57600080fd5b50516001600160a01b031633146122a557600080fd5b6003546001600160801b03908116908516116122c157836122ce565b6003546001600160801b03165b6003549092506001600160801b03600160801b9091048116908416116122f45782612308565b600354600160801b90046001600160801b03165b90506001600160801b03821615612389576003546001600160801b038381169116141561233757600019909101905b600380546001600160801b031981166001600160801b03918216859003821617909155612389907f00000000000000000000000000000000000000000000000000000000000000009087908516613a97565b6001600160801b0381161561240f576003546001600160801b03828116600160801b9092041614156123ba57600019015b600380546001600160801b03600160801b80830482168590038216029181169190911790915561240f907f00000000000000000000000000000000000000000000000000000000000000009087908416613a97565b604080516001600160801b0380851682528316602082015281516001600160a01b0388169233927f596b573906218d3411850b26a6b437d6c4522fdb43d2d2386263f86d50b8b151929081900390910190a36000805460ff60f01b1916600160f01b1790559094909350915050565b606080612489612b47565b612500612494612b7e565b858580806020026020016040519081016040528093929190818152602001838360200280828437600092018290525054600454600896959450600160a01b820460020b935061ffff600160b81b8304811693506001600160801b0390911691600160c81b900416614158565b915091509250929050565b600080548190600160f01b900460ff16612552576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b1916815560408051608081018252338152600288810b602083015287900b91810191909152819081906125ab906060810161259e6001600160801b038a16613e69565b600003600f0b9052613e7a565b92509250925081600003945080600003935060008511806125cc5750600084115b1561260b576003830180546001600160801b038082168089018216600160801b93849004831689019092169092029091176001600160801b0319161790555b604080516001600160801b0388168152602081018790528082018690529051600289810b92908b900b9133917f0c396cd989a39f4459b5fa1aed6a9a8dcdbc45908acfd67e028cd568da98982c919081900360600190a450506000805460ff60f01b1916600160f01b179055509094909350915050565b600080600061268f612b47565b61269985856142b2565b600285810b810b60009081526005602052604080822087840b90930b825281206003830154600681900b93600160381b82046001600160a01b0316928492600160d81b810463ffffffff169284929091600160f81b900460ff16806126fd57600080fd5b6003820154600681900b9850600160381b81046001600160a01b03169650600160d81b810463ffffffff169450600160f81b900460ff168061273e57600080fd5b50506040805160e0810182526000546001600160a01b0381168252600160a01b8104600290810b810b810b6020840181905261ffff600160b81b8404811695850195909552600160c81b830485166060850152600160d81b8304909416608084015260ff600160e81b8304811660a0850152600160f01b909204909116151560c08301529093508e810b91900b121590506127e75750939094039650900393509003905061286a565b8a60020b816020015160020b121561285b576000612803612b7e565b6020830151604084015160045460608601519394506000938493612839936008938893879392916001600160801b0316906132df565b9a9003989098039b50509490960392909203965090910303925061286a915050565b50949093039650039350900390505b9250925092565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60015481565b60056020526000908152604090208054600182015460028301546003909301546001600160801b03831693600160801b909304600f0b9290600681900b90600160381b81046001600160a01b031690600160d81b810463ffffffff1690600160f81b900460ff1688565b6000546001600160a01b0316156129b4576040805162461bcd60e51b8152602060048201526002602482015261414960f01b604482015290519081900360640190fd5b60006129bf826135e1565b90506000806129d76129cf612b7e565b60089061437b565b6040805160e0810182526001600160a01b038816808252600288810b6020808501829052600085870181905261ffff898116606088018190529089166080880181905260a08801839052600160c0909801979097528154600160f01b6001600160a01b0319909116871762ffffff60a01b1916600160a01b62ffffff9787900b97909716969096029590951763ffffffff60b81b1916600160c81b9091021761ffff60d81b1916600160d81b9096029590951761ffff60e81b191692909217909355835191825281019190915281519395509193507f98636036cb66a9c19a37435efc1e90142190214e8abeb821bdba3f2990dd4c9592918290030190a150505050565b60008082600281900b620d89e71981612af057fe5b05029050600083600281900b620d89e881612b0757fe5b0502905060008460020b83830360020b81612b1e57fe5b0560010190508062ffffff166001600160801b03801681612b3b57fe5b0493505050505b919050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614612b7c57600080fd5b565b4290565b60008060008460020b8660020b81612b9657fe5b05905060008660020b128015612bbd57508460020b8660020b81612bb657fe5b0760020b15155b15612bc757600019015b8315612c3c57600080612bd9836143c7565b600182810b810b600090815260208d9052604090205460ff83169190911b80016000190190811680151597509294509092509085612c1e57888360ff16860302612c31565b88612c28826143d9565b840360ff168603025b965050505050612cba565b600080612c4b836001016143c7565b91509150600060018260ff166001901b031990506000818b60008660010b60010b8152602001908152602001600020541690508060001415955085612c9d57888360ff0360ff16866001010102612cb3565b8883612ca883614478565b0360ff168660010101025b9650505050505b5094509492505050565b60008060008360020b12612cdb578260020b612ce3565b8260020b6000035b9050620d89e8811115612d21576040805162461bcd60e51b81526020600482015260016024820152601560fa1b604482015290519081900360640190fd5b600060018216612d3557600160801b612d47565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615612d7b576ffff97272373d413259a46990580e213a0260801c5b6004821615612d9a576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615612db9576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615612dd8576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615612df7576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615612e16576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615612e35576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615612e55576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615612e75576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615612e95576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615612eb5576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615612ed5576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615612ef5576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615612f15576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615612f35576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615612f56576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615612f76576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615612f95576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615612fb2576b048a170391f7dc42444e8fa20260801c5b60008460020b1315612fcd578060001981612fc957fe5b0490505b600160201b810615612fe0576001612fe3565b60005b60ff16602082901c0192505050919050565b60008080806001600160a01b03808916908a16101581871280159061307a57600061302e8989620f42400362ffffff16620f424061322f565b905082613047576130428c8c8c6001614562565b613054565b6130548b8d8c60016145dd565b9550858110613065578a9650613074565b6130718c8b8386614688565b96505b506130c4565b816130915761308c8b8b8b60006145dd565b61309e565b61309e8a8c8b6000614562565b93508388600003106130b2578995506130c4565b6130c18b8a8a600003856146d4565b95505b6001600160a01b038a8116908716148215613127578080156130e35750815b6130f9576130f4878d8c60016145dd565b6130fb565b855b9550808015613108575081155b61311e57613119878d8c6000614562565b613120565b845b9450613171565b8080156131315750815b613147576131428c888c6001614562565b613149565b855b9550808015613156575081155b61316c576131678c888c60006145dd565b61316e565b845b94505b8115801561318157508860000385115b1561318d578860000394505b8180156131ac57508a6001600160a01b0316876001600160a01b031614155b156131bb5785890393506131d8565b6131d5868962ffffff168a620f42400362ffffff166140ba565b93505b50505095509550955095915050565b6000600160ff1b82106131f957600080fd5b5090565b8082038281131560008312151461321357600080fd5b92915050565b8181018281121560008312151461321357600080fd5b6000808060001985870986860292508281109083900303905080613265576000841161325a57600080fd5b5082900490506132d8565b80841161327157600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b60008063ffffffff8716613385576000898661ffff1661ffff811061330057fe5b60408051608081018252919092015463ffffffff808216808452600160201b8304600690810b810b900b6020850152600160581b83046001600160a01b031694840194909452600160f81b90910460ff16151560608301529092508a16146133715761336e818a8988614720565b90505b806020015181604001519250925050613465565b86880360008061339a8c8c858c8c8c8c6147c3565b91509150816000015163ffffffff168363ffffffff1614156133cc578160200151826040015194509450505050613465565b805163ffffffff848116911614156133f4578060200151816040015194509450505050613465565b8151815160208085015190840151918390039286039163ffffffff80841692908516910360060b8161342257fe5b05028460200151018263ffffffff168263ffffffff1686604001518660400151036001600160a01b0316028161345457fe5b048560400151019650965050505050505b97509795505050505050565b600295860b860b60009081526020979097526040909620600181018054909503909455938301805490920390915560038201805463ffffffff600160d81b6001600160a01b03600160381b808504821690960316909402600160381b600160d81b031990921691909117600681810b90960390950b66ffffffffffffff1666ffffffffffffff199095169490941782810485169095039093160263ffffffff60d81b1990931692909217905554600160801b9004600f0b90565b60008082600f0b121561359057826001600160801b03168260000384039150816001600160801b03161061358b576040805162461bcd60e51b81526020600482015260026024820152614c5360f01b604482015290519081900360640190fd5b613213565b826001600160801b03168284019150816001600160801b03161015613213576040805162461bcd60e51b81526020600482015260026024820152614c4160f01b604482015290519081900360640190fd5b60006401000276a36001600160a01b0383161080159061361d575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038316105b613652576040805162461bcd60e51b81526020600482015260016024820152602960f91b604482015290519081900360640190fd5b640100000000600160c01b03602083901b166001600160801b03811160071b81811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c979088119617909417909217179091171717608081106136e657607f810383901c91506136f0565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d607f198f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c600160381b161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581026f028f6481ab7f045a5af012a19d003aa9198101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b146138ed57886001600160a01b03166138d182612cc4565b6001600160a01b031611156138e657816138e8565b805b6138ef565b815b9998505050505050505050565b6000806000898961ffff1661ffff811061391257fe5b60408051608081018252919092015463ffffffff808216808452600160201b8304600690810b810b900b6020850152600160581b83046001600160a01b031694840194909452600160f81b90910460ff1615156060830152909250891614156139815788859250925050613465565b8461ffff168461ffff161180156139a257506001850361ffff168961ffff16145b156139af578391506139b3565b8491505b8161ffff168960010161ffff16816139c757fe5b0692506139d681898989614720565b8a8461ffff1661ffff81106139e757fe5b825191018054602084015160408501516060909501511515600160f81b026001600160f81b036001600160a01b03909616600160581b027fff0000000000000000000000000000000000000000ffffffffffffffffffffff60069390930b66ffffffffffffff16600160201b026affffffffffffff000000001963ffffffff90971663ffffffff199095169490941795909516929092171692909217929092161790555097509795505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1781529251825160009485949389169392918291908083835b60208310613b135780518252601f199092019160209182019101613af4565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613b75576040519150601f19603f3d011682016040523d82523d6000602084013e613b7a565b606091505b5091509150818015613ba8575080511580613ba85750808060200190516020811015613ba557600080fd5b50515b613bde576040805162461bcd60e51b81526020600482015260026024820152612a2360f11b604482015290519081900360640190fd5b5050505050565b604080513060248083019190915282518083039091018152604490910182526020810180516001600160e01b03166370a0823160e01b17815291518151600093849384936001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001693919290918291908083835b60208310613c7e5780518252601f199092019160209182019101613c5f565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114613cde576040519150601f19603f3d011682016040523d82523d6000602084013e613ce3565b606091505b5091509150818015613cf757506020815110155b613d0057600080fd5b808060200190516020811015613d1557600080fd5b50519250505090565b8082018281101561321357600080fd5b604080513060248083019190915282518083039091018152604490910182526020810180516001600160e01b03166370a0823160e01b17815291518151600093849384936001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016939192909182919080838360208310613c7e5780518252601f199092019160209182019101613c5f565b6000808361ffff1611613e04576040805162461bcd60e51b81526020600482015260016024820152604960f81b604482015290519081900360640190fd5b8261ffff168261ffff1611613e1a5750816132d8565b825b8261ffff168161ffff161015613e60576001858261ffff1661ffff8110613e3f57fe5b01805463ffffffff191663ffffffff92909216919091179055600101613e1c565b50909392505050565b80600f81900b8114612b4257600080fd5b6000806000613e87612b47565b613e99846020015185604001516142b2565b6040805160e0810182526000546001600160a01b0381168252600160a01b8104600290810b810b900b602080840182905261ffff600160b81b8404811685870152600160c81b84048116606080870191909152600160d81b8504909116608086015260ff600160e81b8504811660a0870152600160f01b909404909316151560c085015288519089015194890151928901519394613f3d94919390929091906149bd565b93508460600151600f0b6000146140b257846020015160020b816020015160020b1215613f9257613f8b613f748660200151612cc4565b613f818760400151612cc4565b8760600151614b72565b92506140b2565b846040015160020b816020015160020b12156140885760045460408201516001600160801b0390911690613fe490613fc8612b7e565b60208501516060860151608087015160089493929187916138fc565b6000805461ffff60c81b1916600160c81b61ffff938416021761ffff60b81b1916600160b81b939092169290920217905581516040870151614034919061402a90612cc4565b8860600151614b72565b93506140526140468760200151612cc4565b83516060890151614bb6565b925061406281876060015161352b565b600480546001600160801b0319166001600160801b0392909216919091179055506140b2565b6140af6140988660200151612cc4565b6140a58760400151612cc4565b8760600151614bb6565b91505b509193909250565b60006140c784848461322f565b9050600082806140d357fe5b84860911156132d85760001981106140ea57600080fd5b6001019392505050565b6040805160609490941b6bffffffffffffffffffffffff1916602080860191909152600293840b60e890811b60348701529290930b90911b60378401528051808403601a018152603a90930181528251928201929092206000908152929052902090565b60608060008361ffff1611614198576040805162461bcd60e51b81526020600482015260016024820152604960f81b604482015290519081900360640190fd5b865167ffffffffffffffff811180156141b057600080fd5b506040519080825280602002602001820160405280156141da578160200160208202803683370190505b509150865167ffffffffffffffff811180156141f557600080fd5b5060405190808252806020026020018201604052801561421f578160200160208202803683370190505b50905060005b87518110156142a5576142508a8a8a848151811061423f57fe5b60200260200101518a8a8a8a6132df565b84838151811061425c57fe5b6020026020010184848151811061426f57fe5b60200260200101826001600160a01b03166001600160a01b03168152508260060b60060b81525050508080600101915050614225565b5097509795505050505050565b8060020b8260020b126142f2576040805162461bcd60e51b8152602060048201526003602482015262544c5560e81b604482015290519081900360640190fd5b620d89e719600283900b1215614335576040805162461bcd60e51b8152602060048201526003602482015262544c4d60e81b604482015290519081900360640190fd5b620d89e8600282900b1315614377576040805162461bcd60e51b815260206004820152600360248201526254554d60e81b604482015290519081900360640190fd5b5050565b6040805160808101825263ffffffff9283168082526000602083018190529282019290925260016060909101819052835463ffffffff1916909117909116600160f81b17909155908190565b60020b600881901d9161010090910790565b60008082116143e757600080fd5b600160801b82106143fa57608091821c91015b68010000000000000000821061441257604091821c91015b600160201b821061442557602091821c91015b62010000821061443757601091821c91015b610100821061444857600891821c91015b6010821061445857600491821c91015b6004821061446857600291821c91015b60028210612b4257600101919050565b600080821161448657600080fd5b5060ff6001600160801b038216156144a157607f19016144a9565b608082901c91505b67ffffffffffffffff8216156144c257603f19016144ca565b604082901c91505b63ffffffff8216156144df57601f19016144e7565b602082901c91505b61ffff8216156144fa57600f1901614502565b601082901c91505b60ff821615614514576007190161451c565b600882901c91505b600f82161561452e5760031901614536565b600482901c91505b60038216156145485760011901614550565b600282901c91505b6001821615612b425760001901919050565b6000836001600160a01b0316856001600160a01b03161115614582579293925b816145af576145aa836001600160801b03168686036001600160a01b0316600160601b61322f565b6145d2565b6145d2836001600160801b03168686036001600160a01b0316600160601b6140ba565b90505b949350505050565b6000836001600160a01b0316856001600160a01b031611156145fd579293925b600160601b600160e01b03606084901b166001600160a01b03868603811690871661462757600080fd5b8361465757866001600160a01b031661464a8383896001600160a01b031661322f565b8161465157fe5b0461467d565b61467d61466e8383896001600160a01b03166140ba565b886001600160a01b0316614be5565b979650505050505050565b600080856001600160a01b03161161469f57600080fd5b6000846001600160801b0316116146b557600080fd5b816146c7576145aa8585856001614bf0565b6145d28585856001614cd1565b600080856001600160a01b0316116146eb57600080fd5b6000846001600160801b03161161470157600080fd5b81614713576145aa8585856000614cd1565b6145d28585856000614bf0565b6147286154f1565b600085600001518503905060405180608001604052808663ffffffff1681526020018263ffffffff168660020b0288602001510160060b81526020016000856001600160801b03161161477c57600161477e565b845b6001600160801b031663ffffffff60801b608085901b168161479c57fe5b048860400151016001600160a01b0316815260200160011515815250915050949350505050565b6147cb6154f1565b6147d36154f1565b888561ffff1661ffff81106147e457fe5b60408051608081018252919092015463ffffffff8116808352600160201b8204600690810b810b900b6020840152600160581b82046001600160a01b031693830193909352600160f81b900460ff1615156060820152925061484890899089614db4565b15614880578663ffffffff16826000015163ffffffff16141561486a57613465565b8161487783898988614720565b91509150613465565b888361ffff168660010161ffff168161489557fe5b0661ffff1661ffff81106148a557fe5b60408051608081018252929091015463ffffffff81168352600160201b8104600690810b810b900b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b9091041615156060820181905290925061495a57604080516080810182528a5463ffffffff81168252600160201b8104600690810b810b900b6020830152600160581b81046001600160a01b031692820192909252600160f81b90910460ff161515606082015291505b61496988836000015189614db4565b6149a0576040805162461bcd60e51b815260206004820152600360248201526213d31160ea1b604482015290519081900360640190fd5b6149ad8989898887614e75565b9150915097509795505050505050565b60006149cc60078787876140f4565b60015460025491925090600080600f87900b15614b125760006149ed612b7e565b6000805460045492935090918291614a379160089186918591600160a01b810460020b9161ffff600160b81b83048116926001600160801b0390921691600160c81b9004166132df565b9092509050614a7160058d8b8d8b8b87898b60007f0000000000000000000000000000000000000000000000000000000000000000615013565b9450614aa860058c8b8d8b8b87898b60017f0000000000000000000000000000000000000000000000000000000000000000615013565b93508415614adc57614adc60068d7f00000000000000000000000000000000000000000000000000000000000000006151cc565b8315614b0e57614b0e60068c7f00000000000000000000000000000000000000000000000000000000000000006151cc565b5050505b600080614b2460058c8c8b8a8a615232565b9092509050614b35878a84846152de565b600089600f0b1215614b63578315614b5257614b5260058c615473565b8215614b6357614b6360058b615473565b50505050505095945050505050565b60008082600f0b12614b9857614b93614b8e85858560016145dd565b6131e7565b6145d5565b614bab614b8e85858560000360006145dd565b600003949350505050565b60008082600f0b12614bd257614b93614b8e8585856001614562565b614bab614b8e8585856000036000614562565b808204910615150190565b60008115614c635760006001600160a01b03841115614c2657614c2184600160601b876001600160801b031661322f565b614c3e565b6001600160801b038516606085901b81614c3c57fe5b045b9050614c5b614c566001600160a01b03881683613d1e565b61549f565b9150506145d5565b60006001600160a01b03841115614c9157614c8c84600160601b876001600160801b03166140ba565b614ca8565b614ca8606085901b6001600160801b038716614be5565b905080866001600160a01b031611614cbf57600080fd5b6001600160a01b0386160390506145d5565b600082614cdf5750836145d5565b600160601b600160e01b03606085901b168215614d6d576001600160a01b03861684810290858281614d0d57fe5b041415614d3e57818101828110614d3c57614d3283896001600160a01b0316836140ba565b93505050506145d5565b505b614d6482614d5f878a6001600160a01b03168681614d5857fe5b0490613d1e565b614be5565b925050506145d5565b6001600160a01b03861684810290858281614d8457fe5b04148015614d9157508082115b614d9a57600080fd5b808203614d32614c56846001600160a01b038b16846140ba565b60008363ffffffff168363ffffffff1611158015614dde57508363ffffffff168263ffffffff1611155b15614dfa578163ffffffff168363ffffffff16111590506132d8565b60008463ffffffff168463ffffffff1611614e21578363ffffffff16600160201b01614e29565b8363ffffffff165b64ffffffffff16905060008563ffffffff168463ffffffff1611614e59578363ffffffff16600160201b01614e61565b8363ffffffff165b64ffffffffff169091111595945050505050565b614e7d6154f1565b614e856154f1565b60008361ffff168560010161ffff1681614e9b57fe5b0661ffff169050600060018561ffff16830103905060005b506002818301048961ffff87168281614ec857fe5b0661ffff8110614ed457fe5b60408051608081018252929091015463ffffffff81168352600160201b8104600690810b810b900b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b90910416151560608201819052909550614f3e57806001019250614eb3565b898661ffff168260010181614f4f57fe5b0661ffff8110614f5b57fe5b60408051608081018252929091015463ffffffff81168352600160201b8104600690810b810b900b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b90910416151560608201528551909450600090614fc5908b908b614db4565b9050808015614fde5750614fde8a8a8760000151614db4565b15614fe95750615006565b80614ff957600182039250615000565b8160010193505b50614eb3565b5050509550959350505050565b60028a810b900b600090815260208c90526040812080546001600160801b03168261503e828d61352b565b9050846001600160801b0316816001600160801b0316111561508c576040805162461bcd60e51b81526020600482015260026024820152614c4f60f01b604482015290519081900360640190fd5b6001600160801b038281161590821615811415945015615131578c60020b8e60020b1361511957600183018b9055600283018a9055600383018054600160381b600160d81b031916600160381b6001600160a01b038c16021766ffffffffffffff191666ffffffffffffff60068b900b161763ffffffff60d81b1916600160d81b63ffffffff8a16021790555b6003830180546001600160f81b0316600160f81b1790555b82546001600160801b0319166001600160801b0382161783558561517a5782546151759061517090600160801b9004600f90810b810b908f900b613219565b613e69565b61519b565b825461519b9061517090600160801b9004600f90810b810b908f900b6131fd565b8354600f9190910b6001600160801b03908116600160801b0291161790925550909c9b505050505050505050505050565b8060020b8260020b816151db57fe5b0760020b156151e957600080fd5b6000806152048360020b8560020b816151fe57fe5b056143c7565b600191820b820b60009081526020979097526040909620805460ff9097169190911b90951890945550505050565b600285810b80820b60009081526020899052604080822088850b850b83529082209193849391929184918291908a900b126152785750506001820154600283015461528b565b8360010154880391508360020154870390505b6000808b60020b8b60020b12156152ad575050600183015460028401546152c0565b84600101548a0391508460020154890390505b92909803979097039b96909503949094039850939650505050505050565b6040805160a08101825285546001600160801b0390811682526001870154602083015260028701549282019290925260038601548083166060830152600160801b900490911660808201526000600f85900b61537d5781516001600160801b0316615375576040805162461bcd60e51b815260206004820152600260248201526104e560f41b604482015290519081900360640190fd5b50805161538c565b8151615389908661352b565b90505b60006153b08360200151860384600001516001600160801b0316600160801b61322f565b905060006153d68460400151860385600001516001600160801b0316600160801b61322f565b905086600f0b6000146153fd5787546001600160801b0319166001600160801b0384161788555b60018801869055600288018590556001600160801b03821615158061542b57506000816001600160801b0316115b15615469576003880180546001600160801b031981166001600160801b039182168501821617808216600160801b9182900483168501909216021790555b5050505050505050565b600290810b810b6000908152602092909252604082208281556001810183905590810182905560030155565b806001600160a01b0381168114612b4257600080fd5b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915290565b6040805160808101825260008082526020820181905291810182905260608101919091529056fea26469706673582212200c1f93875bf69bd8236c0ed6fa61db810cf06b5c5481470ac7a631eb4e43c81264736f6c63430007060033a264697066735822122093a7aea0dd1757bc99241264e80faeac540e896cf901842457b186425e3e809964736f6c63430007060033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/artifacts/@uniswap/v3-core/contracts/UniswapV3Pool.sol/UniswapV3Pool.dbg.json b/artifacts/@uniswap/v3-core/contracts/UniswapV3Pool.sol/UniswapV3Pool.dbg.json deleted file mode 100644 index 0af9483..0000000 --- a/artifacts/@uniswap/v3-core/contracts/UniswapV3Pool.sol/UniswapV3Pool.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/f3d46276c3abf0612f2d14f482c05ecc.json" -} diff --git a/artifacts/@uniswap/v3-core/contracts/UniswapV3Pool.sol/UniswapV3Pool.json b/artifacts/@uniswap/v3-core/contracts/UniswapV3Pool.sol/UniswapV3Pool.json deleted file mode 100644 index 2b64edd..0000000 --- a/artifacts/@uniswap/v3-core/contracts/UniswapV3Pool.sol/UniswapV3Pool.json +++ /dev/null @@ -1,997 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "UniswapV3Pool", - "sourceName": "@uniswap/v3-core/contracts/UniswapV3Pool.sol", - "abi": [ - { - "inputs": [], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "int24", - "name": "tickLower", - "type": "int24" - }, - { - "indexed": true, - "internalType": "int24", - "name": "tickUpper", - "type": "int24" - }, - { - "indexed": false, - "internalType": "uint128", - "name": "amount", - "type": "uint128" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount0", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount1", - "type": "uint256" - } - ], - "name": "Burn", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "indexed": true, - "internalType": "int24", - "name": "tickLower", - "type": "int24" - }, - { - "indexed": true, - "internalType": "int24", - "name": "tickUpper", - "type": "int24" - }, - { - "indexed": false, - "internalType": "uint128", - "name": "amount0", - "type": "uint128" - }, - { - "indexed": false, - "internalType": "uint128", - "name": "amount1", - "type": "uint128" - } - ], - "name": "Collect", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint128", - "name": "amount0", - "type": "uint128" - }, - { - "indexed": false, - "internalType": "uint128", - "name": "amount1", - "type": "uint128" - } - ], - "name": "CollectProtocol", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount0", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount1", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "paid0", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "paid1", - "type": "uint256" - } - ], - "name": "Flash", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint16", - "name": "observationCardinalityNextOld", - "type": "uint16" - }, - { - "indexed": false, - "internalType": "uint16", - "name": "observationCardinalityNextNew", - "type": "uint16" - } - ], - "name": "IncreaseObservationCardinalityNext", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint160", - "name": "sqrtPriceX96", - "type": "uint160" - }, - { - "indexed": false, - "internalType": "int24", - "name": "tick", - "type": "int24" - } - ], - "name": "Initialize", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "int24", - "name": "tickLower", - "type": "int24" - }, - { - "indexed": true, - "internalType": "int24", - "name": "tickUpper", - "type": "int24" - }, - { - "indexed": false, - "internalType": "uint128", - "name": "amount", - "type": "uint128" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount0", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount1", - "type": "uint256" - } - ], - "name": "Mint", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint8", - "name": "feeProtocol0Old", - "type": "uint8" - }, - { - "indexed": false, - "internalType": "uint8", - "name": "feeProtocol1Old", - "type": "uint8" - }, - { - "indexed": false, - "internalType": "uint8", - "name": "feeProtocol0New", - "type": "uint8" - }, - { - "indexed": false, - "internalType": "uint8", - "name": "feeProtocol1New", - "type": "uint8" - } - ], - "name": "SetFeeProtocol", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "indexed": false, - "internalType": "int256", - "name": "amount0", - "type": "int256" - }, - { - "indexed": false, - "internalType": "int256", - "name": "amount1", - "type": "int256" - }, - { - "indexed": false, - "internalType": "uint160", - "name": "sqrtPriceX96", - "type": "uint160" - }, - { - "indexed": false, - "internalType": "uint128", - "name": "liquidity", - "type": "uint128" - }, - { - "indexed": false, - "internalType": "int24", - "name": "tick", - "type": "int24" - } - ], - "name": "Swap", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "int24", - "name": "tickLower", - "type": "int24" - }, - { - "internalType": "int24", - "name": "tickUpper", - "type": "int24" - }, - { - "internalType": "uint128", - "name": "amount", - "type": "uint128" - } - ], - "name": "burn", - "outputs": [ - { - "internalType": "uint256", - "name": "amount0", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amount1", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "int24", - "name": "tickLower", - "type": "int24" - }, - { - "internalType": "int24", - "name": "tickUpper", - "type": "int24" - }, - { - "internalType": "uint128", - "name": "amount0Requested", - "type": "uint128" - }, - { - "internalType": "uint128", - "name": "amount1Requested", - "type": "uint128" - } - ], - "name": "collect", - "outputs": [ - { - "internalType": "uint128", - "name": "amount0", - "type": "uint128" - }, - { - "internalType": "uint128", - "name": "amount1", - "type": "uint128" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "uint128", - "name": "amount0Requested", - "type": "uint128" - }, - { - "internalType": "uint128", - "name": "amount1Requested", - "type": "uint128" - } - ], - "name": "collectProtocol", - "outputs": [ - { - "internalType": "uint128", - "name": "amount0", - "type": "uint128" - }, - { - "internalType": "uint128", - "name": "amount1", - "type": "uint128" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "factory", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "fee", - "outputs": [ - { - "internalType": "uint24", - "name": "", - "type": "uint24" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "feeGrowthGlobal0X128", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "feeGrowthGlobal1X128", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount0", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amount1", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "flash", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "observationCardinalityNext", - "type": "uint16" - } - ], - "name": "increaseObservationCardinalityNext", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint160", - "name": "sqrtPriceX96", - "type": "uint160" - } - ], - "name": "initialize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "liquidity", - "outputs": [ - { - "internalType": "uint128", - "name": "", - "type": "uint128" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "maxLiquidityPerTick", - "outputs": [ - { - "internalType": "uint128", - "name": "", - "type": "uint128" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "int24", - "name": "tickLower", - "type": "int24" - }, - { - "internalType": "int24", - "name": "tickUpper", - "type": "int24" - }, - { - "internalType": "uint128", - "name": "amount", - "type": "uint128" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "mint", - "outputs": [ - { - "internalType": "uint256", - "name": "amount0", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amount1", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "observations", - "outputs": [ - { - "internalType": "uint32", - "name": "blockTimestamp", - "type": "uint32" - }, - { - "internalType": "int56", - "name": "tickCumulative", - "type": "int56" - }, - { - "internalType": "uint160", - "name": "secondsPerLiquidityCumulativeX128", - "type": "uint160" - }, - { - "internalType": "bool", - "name": "initialized", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint32[]", - "name": "secondsAgos", - "type": "uint32[]" - } - ], - "name": "observe", - "outputs": [ - { - "internalType": "int56[]", - "name": "tickCumulatives", - "type": "int56[]" - }, - { - "internalType": "uint160[]", - "name": "secondsPerLiquidityCumulativeX128s", - "type": "uint160[]" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "name": "positions", - "outputs": [ - { - "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": "protocolFees", - "outputs": [ - { - "internalType": "uint128", - "name": "token0", - "type": "uint128" - }, - { - "internalType": "uint128", - "name": "token1", - "type": "uint128" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint8", - "name": "feeProtocol0", - "type": "uint8" - }, - { - "internalType": "uint8", - "name": "feeProtocol1", - "type": "uint8" - } - ], - "name": "setFeeProtocol", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "slot0", - "outputs": [ - { - "internalType": "uint160", - "name": "sqrtPriceX96", - "type": "uint160" - }, - { - "internalType": "int24", - "name": "tick", - "type": "int24" - }, - { - "internalType": "uint16", - "name": "observationIndex", - "type": "uint16" - }, - { - "internalType": "uint16", - "name": "observationCardinality", - "type": "uint16" - }, - { - "internalType": "uint16", - "name": "observationCardinalityNext", - "type": "uint16" - }, - { - "internalType": "uint8", - "name": "feeProtocol", - "type": "uint8" - }, - { - "internalType": "bool", - "name": "unlocked", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "int24", - "name": "tickLower", - "type": "int24" - }, - { - "internalType": "int24", - "name": "tickUpper", - "type": "int24" - } - ], - "name": "snapshotCumulativesInside", - "outputs": [ - { - "internalType": "int56", - "name": "tickCumulativeInside", - "type": "int56" - }, - { - "internalType": "uint160", - "name": "secondsPerLiquidityInsideX128", - "type": "uint160" - }, - { - "internalType": "uint32", - "name": "secondsInside", - "type": "uint32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "bool", - "name": "zeroForOne", - "type": "bool" - }, - { - "internalType": "int256", - "name": "amountSpecified", - "type": "int256" - }, - { - "internalType": "uint160", - "name": "sqrtPriceLimitX96", - "type": "uint160" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "swap", - "outputs": [ - { - "internalType": "int256", - "name": "amount0", - "type": "int256" - }, - { - "internalType": "int256", - "name": "amount1", - "type": "int256" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "int16", - "name": "", - "type": "int16" - } - ], - "name": "tickBitmap", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "tickSpacing", - "outputs": [ - { - "internalType": "int24", - "name": "", - "type": "int24" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "int24", - "name": "", - "type": "int24" - } - ], - "name": "ticks", - "outputs": [ - { - "internalType": "uint128", - "name": "liquidityGross", - "type": "uint128" - }, - { - "internalType": "int128", - "name": "liquidityNet", - "type": "int128" - }, - { - "internalType": "uint256", - "name": "feeGrowthOutside0X128", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "feeGrowthOutside1X128", - "type": "uint256" - }, - { - "internalType": "int56", - "name": "tickCumulativeOutside", - "type": "int56" - }, - { - "internalType": "uint160", - "name": "secondsPerLiquidityOutsideX128", - "type": "uint160" - }, - { - "internalType": "uint32", - "name": "secondsOutside", - "type": "uint32" - }, - { - "internalType": "bool", - "name": "initialized", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "token0", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "token1", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x6101606040523480156200001257600080fd5b503060601b60805260408051630890357360e41b81529051600091339163890357309160048082019260a092909190829003018186803b1580156200005657600080fd5b505afa1580156200006b573d6000803e3d6000fd5b505050506040513d60a08110156200008257600080fd5b508051602080830151604084015160608086015160809096015160e896871b6001600160e81b0319166101005291811b6001600160601b031990811660e05292811b831660c0529390931b1660a052600282810b900b90921b610120529150620000f79082906200010f811b62002adb17901c565b60801b6001600160801b03191661014052506200017d565b60008082600281900b620d89e719816200012557fe5b05029050600083600281900b620d89e8816200013d57fe5b0502905060008460020b83830360020b816200015557fe5b0560010190508062ffffff166001600160801b038016816200017357fe5b0495945050505050565b60805160601c60a05160601c60c05160601c60e05160601c6101005160e81c6101205160e81c6101405160801c61554e6200024a60003980611fab5280614a4d5280614a84525080610bd852806128975280614ab85280614aea525080610cc7528061198852806119bf52806128df5250806111855280611a425280611eb152806123e652806128bb5280613d7c5250806108aa52806112b35280611a115280611e4b52806123605280613c33525080612038528061221f5280612873525080612b52525061554e6000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c806370cf754a116100de578063c45a015511610097578063ddca3f4311610071578063ddca3f43146107d8578063f3058399146107f8578063f30dba9314610800578063f637731d146108825761018e565b8063c45a0155146107a9578063d0c93a7c146107b1578063d21220a7146107d05761018e565b806370cf754a146105a05780638206a4d1146105a857806385b66729146105d0578063883bdbfd1461060d578063a34123a714610714578063a38807f21461074e5761018e565b80633850c7bd1161014b578063490e6cbc11610125578063490e6cbc1461044c5780634f1eb3d8146104d6578063514ea4bf146105275780635339c296146105805761018e565b80633850c7bd146103395780633c8a7d8d1461039257806346141319146104325761018e565b80630dfe168114610193578063128acb08146101b75780631a686502146102645780631ad8b03b14610288578063252c09d7146102bf57806332148f6714610316575b600080fd5b61019b6108a8565b604080516001600160a01b039092168252519081900360200190f35b61024b600480360360a08110156101cd57600080fd5b6001600160a01b0382358116926020810135151592604082013592606083013516919081019060a081016080820135600160201b81111561020d57600080fd5b82018360208201111561021f57600080fd5b803590602001918460018302840111600160201b8311171561024057600080fd5b5090925090506108cc565b6040805192835260208301919091528051918290030190f35b61026c61146b565b604080516001600160801b039092168252519081900360200190f35b61029061147a565b60405180836001600160801b03168152602001826001600160801b031681526020019250505060405180910390f35b6102dc600480360360208110156102d557600080fd5b5035611494565b6040805163ffffffff909516855260069390930b60208501526001600160a01b039091168383015215156060830152519081900360800190f35b6103376004803603602081101561032c57600080fd5b503561ffff166114d9565b005b6103416115d3565b604080516001600160a01b03909816885260029690960b602088015261ffff9485168787015292841660608701529216608085015260ff90911660a0840152151560c0830152519081900360e00190f35b61024b600480360360a08110156103a857600080fd5b6001600160a01b03823516916020810135600290810b92604083013590910b916001600160801b036060820135169181019060a081016080820135600160201b8111156103f457600080fd5b82018360208201111561040657600080fd5b803590602001918460018302840111600160201b8311171561042757600080fd5b509092509050611623565b61043a6118df565b60408051918252519081900360200190f35b6103376004803603608081101561046257600080fd5b6001600160a01b038235169160208101359160408201359190810190608081016060820135600160201b81111561049857600080fd5b8201836020820111156104aa57600080fd5b803590602001918460018302840111600160201b831117156104cb57600080fd5b5090925090506118e5565b610290600480360360a08110156104ec57600080fd5b506001600160a01b03813516906020810135600290810b91604081013590910b906001600160801b0360608201358116916080013516611d40565b6105446004803603602081101561053d57600080fd5b5035611f5a565b604080516001600160801b0396871681526020810195909552848101939093529084166060840152909216608082015290519081900360a00190f35b61043a6004803603602081101561059657600080fd5b503560010b611f97565b61026c611fa9565b610337600480360360408110156105be57600080fd5b5060ff81358116916020013516611fcd565b610290600480360360608110156105e657600080fd5b506001600160a01b03813516906001600160801b03602082013581169160400135166121b1565b61067b6004803603602081101561062357600080fd5b810190602081018135600160201b81111561063d57600080fd5b82018360208201111561064f57600080fd5b803590602001918460208302840111600160201b8311171561067057600080fd5b50909250905061247e565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156106bf5781810151838201526020016106a7565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156106fe5781810151838201526020016106e6565b5050505090500194505050505060405180910390f35b61024b6004803603606081101561072a57600080fd5b508035600290810b91602081013590910b90604001356001600160801b031661250b565b6107786004803603604081101561076457600080fd5b508035600290810b9160200135900b612682565b6040805160069490940b84526001600160a01b03909216602084015263ffffffff1682820152519081900360600190f35b61019b612871565b6107b9612895565b6040805160029290920b8252519081900360200190f35b61019b6128b9565b6107e06128dd565b6040805162ffffff9092168252519081900360200190f35b61043a612901565b6108206004803603602081101561081657600080fd5b503560020b612907565b604080516001600160801b039099168952600f9790970b602089015287870195909552606087019390935260069190910b60808601526001600160a01b031660a085015263ffffffff1660c0840152151560e083015251908190036101000190f35b6103376004803603602081101561089857600080fd5b50356001600160a01b0316612971565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806108d7612b47565b8561090e576040805162461bcd60e51b8152602060048201526002602482015261415360f01b604482015290519081900360640190fd5b6040805160e0810182526000546001600160a01b0381168252600160a01b8104600290810b810b900b602083015261ffff600160b81b8204811693830193909352600160c81b810483166060830152600160d81b8104909216608082015260ff600160e81b8304811660a0830152600160f01b909204909116151560c082018190526109c7576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b87610a125780600001516001600160a01b0316866001600160a01b0316118015610a0d575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038716105b610a44565b80600001516001600160a01b0316866001600160a01b0316108015610a4457506401000276a36001600160a01b038716115b610a7b576040805162461bcd60e51b815260206004820152600360248201526214d41360ea1b604482015290519081900360640190fd5b6000805460ff60f01b191681556040805160c08101909152808a610aaa5760048460a0015160ff16901c610abd565b60108460a0015160ff1681610abb57fe5b065b60ff1681526004546001600160801b03166020820152604001610ade612b7e565b63ffffffff168152602001600060060b815260200160006001600160a01b031681526020016000151581525090506000808913905060006040518060e001604052808b81526020016000815260200185600001516001600160a01b03168152602001856020015160020b81526020018c610b5a57600254610b5e565b6001545b815260200160006001600160801b0316815260200184602001516001600160801b031681525090505b805115801590610bad5750886001600160a01b031681604001516001600160a01b031614155b15610f7757610bba6154b5565b60408201516001600160a01b031681526060820151610bfd906006907f00000000000000000000000000000000000000000000000000000000000000008f612b82565b15156040830152600290810b810b60208301819052620d89e719910b1215610c2e57620d89e7196020820152610c4d565b6020810151620d89e860029190910b1315610c4d57620d89e860208201525b610c5a8160200151612cc4565b6001600160a01b031660608201526040820151610ceb908d610c94578b6001600160a01b031683606001516001600160a01b031611610cae565b8b6001600160a01b031683606001516001600160a01b0316105b610cbc578260600151610cbe565b8b5b60c085015185517f0000000000000000000000000000000000000000000000000000000000000000612ff5565b60c085015260a084015260808301526001600160a01b031660408301528215610d4d57610d218160c001518260800151016131e7565b825103825260a0810151610d4390610d38906131e7565b6020840151906131fd565b6020830152610d88565b610d5a8160a001516131e7565b825101825260c08101516080820151610d8291610d7791016131e7565b602084015190613219565b60208301525b835160ff1615610dce576000846000015160ff168260c0015181610da857fe5b60c0840180519290910491829003905260a0840180519091016001600160801b03169052505b60c08201516001600160801b031615610e0d57610e018160c00151600160801b8460c001516001600160801b031661322f565b60808301805190910190525b80606001516001600160a01b031682604001516001600160a01b03161415610f3657806040015115610f0d578360a00151610e9757610e75846040015160008760200151886040015188602001518a6060015160086132df909695949392919063ffffffff16565b6001600160a01b03166080860152600690810b900b6060850152600160a08501525b6000610ee382602001518e610eae57600154610eb4565b84608001515b8f610ec3578560800151610ec7565b6002545b608089015160608a015160408b01516005959493929190613471565b90508c15610eef576000035b610efd8360c001518261352b565b6001600160801b031660c0840152505b8b610f1c578060200151610f25565b60018160200151035b600290810b900b6060830152610f71565b80600001516001600160a01b031682604001516001600160a01b031614610f7157610f6482604001516135e1565b600290810b900b60608301525b50610b87565b836020015160020b816060015160020b1461104557600080610fc586604001518660400151886020015188602001518a606001518b6080015160086138fc909695949392919063ffffffff16565b604085015160608601516000805461ffff60c81b1916600160c81b61ffff958616021761ffff60b81b1916600160b81b95909416949094029290921762ffffff60a01b1916600160a01b62ffffff60029490940b9390931692909202919091176001600160a01b0319166001600160a01b039091161790555061106a9050565b6040810151600080546001600160a01b0319166001600160a01b039092169190911790555b8060c001516001600160801b031683602001516001600160801b0316146110b05760c0810151600480546001600160801b0319166001600160801b039092169190911790555b8a1561110057608081015160015560a08101516001600160801b0316156110fb5760a0810151600380546001600160801b031981166001600160801b03918216909301169190911790555b611146565b608081015160025560a08101516001600160801b0316156111465760a0810151600380546001600160801b03808216600160801b92839004821690940116029190911790555b8115158b15151461115f57602081015181518b0361116c565b80600001518a0381602001515b90965094508a156112a55760008512156111ae576111ae7f00000000000000000000000000000000000000000000000000000000000000008d87600003613a97565b60006111b8613be5565b9050336001600160a01b031663fa461e3388888c8c6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561123c57600080fd5b505af1158015611250573d6000803e3d6000fd5b5050505061125c613be5565b6112668289613d1e565b111561129f576040805162461bcd60e51b815260206004820152600360248201526249494160e81b604482015290519081900360640190fd5b506113cf565b60008612156112dc576112dc7f00000000000000000000000000000000000000000000000000000000000000008d88600003613a97565b60006112e6613d2e565b9050336001600160a01b031663fa461e3388888c8c6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561136a57600080fd5b505af115801561137e573d6000803e3d6000fd5b5050505061138a613d2e565b6113948288613d1e565b11156113cd576040805162461bcd60e51b815260206004820152600360248201526249494160e81b604482015290519081900360640190fd5b505b60408082015160c083015160608085015184518b8152602081018b90526001600160a01b03948516818701526001600160801b039093169183019190915260020b60808201529151908e169133917fc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca679181900360a00190a350506000805460ff60f01b1916600160f01b17905550919890975095505050505050565b6004546001600160801b031681565b6003546001600160801b0380821691600160801b90041682565b60088161ffff81106114a557600080fd5b015463ffffffff81169150600160201b810460060b90600160581b81046001600160a01b031690600160f81b900460ff1684565b600054600160f01b900460ff1661151d576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b19169055611532612b47565b60008054600160d81b900461ffff169061154e60088385613dc6565b6000805461ffff808416600160d81b810261ffff60d81b19909316929092179092559192508316146115bb576040805161ffff80851682528316602082015281517fac49e518f90a358f652e4400164f05a5d8f7e35e7747279bc3a93dbf584e125a929181900390910190a15b50506000805460ff60f01b1916600160f01b17905550565b6000546001600160a01b03811690600160a01b810460020b9061ffff600160b81b8204811691600160c81b8104821691600160d81b8204169060ff600160e81b8204811691600160f01b90041687565b600080548190600160f01b900460ff1661166a576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b191690556001600160801b03851661168a57600080fd5b6000806116d860405180608001604052808c6001600160a01b031681526020018b60020b81526020018a60020b81526020016116ce8a6001600160801b0316613e69565b600f0b9052613e7a565b925092505081935080925060008060008611156116fa576116f7613be5565b91505b841561170b57611708613d2e565b90505b336001600160a01b031663d348799787878b8b6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561178d57600080fd5b505af11580156117a1573d6000803e3d6000fd5b5050505060008611156117f8576117b6613be5565b6117c08388613d1e565b11156117f8576040805162461bcd60e51b815260206004820152600260248201526104d360f41b604482015290519081900360640190fd5b841561184857611806613d2e565b6118108287613d1e565b1115611848576040805162461bcd60e51b81526020600482015260026024820152614d3160f01b604482015290519081900360640190fd5b8960020b8b60020b8d6001600160a01b03167f7a53080ba414158be7ec69b987b5fb7d07dee101fe85488f0853ae16239d0bde338d8b8b60405180856001600160a01b03168152602001846001600160801b0316815260200183815260200182815260200194505050505060405180910390a450506000805460ff60f01b1916600160f01b17905550919890975095505050505050565b60025481565b600054600160f01b900460ff16611929576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b1916905561193e612b47565b6004546001600160801b031680611980576040805162461bcd60e51b81526020600482015260016024820152601360fa1b604482015290519081900360640190fd5b60006119b5867f000000000000000000000000000000000000000000000000000000000000000062ffffff16620f42406140ba565b905060006119ec867f000000000000000000000000000000000000000000000000000000000000000062ffffff16620f42406140ba565b905060006119f8613be5565b90506000611a04613d2e565b90508815611a3757611a377f00000000000000000000000000000000000000000000000000000000000000008b8b613a97565b8715611a6857611a687f00000000000000000000000000000000000000000000000000000000000000008b8a613a97565b336001600160a01b031663e9cbafb085858a8a6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015611aea57600080fd5b505af1158015611afe573d6000803e3d6000fd5b505050506000611b0c613be5565b90506000611b18613d2e565b905081611b258588613d1e565b1115611b5d576040805162461bcd60e51b8152602060048201526002602482015261046360f41b604482015290519081900360640190fd5b80611b688487613d1e565b1115611ba0576040805162461bcd60e51b8152602060048201526002602482015261463160f01b604482015290519081900360640190fd5b8382038382038115611c2f5760008054600160e81b9004600f16908115611bd3578160ff168481611bcd57fe5b04611bd6565b60005b90506001600160801b03811615611c0957600380546001600160801b038082168401166001600160801b03199091161790555b611c23818503600160801b8d6001600160801b031661322f565b60018054909101905550505b8015611cba5760008054600160e81b900460041c600f16908115611c5f578160ff168381611c5957fe5b04611c62565b60005b90506001600160801b03811615611c9457600380546001600160801b03600160801b8083048216850182160291161790555b611cae818403600160801b8d6001600160801b031661322f565b60028054909101905550505b8d6001600160a01b0316336001600160a01b03167fbdbdb71d7860376ba52b25a5028beea23581364a40522f6bcfb86bb1f2dca6338f8f86866040518085815260200184815260200183815260200182815260200194505050505060405180910390a350506000805460ff60f01b1916600160f01b179055505050505050505050505050565b600080548190600160f01b900460ff16611d87576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b19168155611da160073389896140f4565b60038101549091506001600160801b0390811690861611611dc25784611dd1565b60038101546001600160801b03165b60038201549093506001600160801b03600160801b909104811690851611611df95783611e0f565b6003810154600160801b90046001600160801b03165b91506001600160801b03831615611e74576003810180546001600160801b031981166001600160801b03918216869003821617909155611e74907f0000000000000000000000000000000000000000000000000000000000000000908a908616613a97565b6001600160801b03821615611eda576003810180546001600160801b03600160801b808304821686900382160291811691909117909155611eda907f0000000000000000000000000000000000000000000000000000000000000000908a908516613a97565b604080516001600160a01b038a1681526001600160801b0380861660208301528416818301529051600288810b92908a900b9133917f70935338e69775456a85ddef226c395fb668b63fa0115f5f20610b388e6ca9c0919081900360600190a4506000805460ff60f01b1916600160f01b17905590969095509350505050565b60076020526000908152604090208054600182015460028301546003909301546001600160801b0392831693919281811691600160801b90041685565b60066020526000908152604090205481565b7f000000000000000000000000000000000000000000000000000000000000000081565b600054600160f01b900460ff16612011576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b1916905560408051638da5cb5b60e01b815290516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691638da5cb5b916004808301926020929190829003018186803b15801561207e57600080fd5b505afa158015612092573d6000803e3d6000fd5b505050506040513d60208110156120a857600080fd5b50516001600160a01b031633146120be57600080fd5b60ff821615806120e1575060048260ff16101580156120e15750600a8260ff1611155b801561210b575060ff8116158061210b575060048160ff161015801561210b5750600a8160ff1611155b61211457600080fd5b60008054610ff0600484901b16840160ff908116600160e81b90810260ff60e81b19841617909355919004167f973d8d92bb299f4af6ce49b52a8adb85ae46b9f214c4c4fc06ac77401237b1336010826040805160ff9390920683168252600f600486901c16602083015286831682820152918516606082015290519081900360800190a150506000805460ff60f01b1916600160f01b17905550565b600080548190600160f01b900460ff166121f8576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b1916905560408051638da5cb5b60e01b815290516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691638da5cb5b916004808301926020929190829003018186803b15801561226557600080fd5b505afa158015612279573d6000803e3d6000fd5b505050506040513d602081101561228f57600080fd5b50516001600160a01b031633146122a557600080fd5b6003546001600160801b03908116908516116122c157836122ce565b6003546001600160801b03165b6003549092506001600160801b03600160801b9091048116908416116122f45782612308565b600354600160801b90046001600160801b03165b90506001600160801b03821615612389576003546001600160801b038381169116141561233757600019909101905b600380546001600160801b031981166001600160801b03918216859003821617909155612389907f00000000000000000000000000000000000000000000000000000000000000009087908516613a97565b6001600160801b0381161561240f576003546001600160801b03828116600160801b9092041614156123ba57600019015b600380546001600160801b03600160801b80830482168590038216029181169190911790915561240f907f00000000000000000000000000000000000000000000000000000000000000009087908416613a97565b604080516001600160801b0380851682528316602082015281516001600160a01b0388169233927f596b573906218d3411850b26a6b437d6c4522fdb43d2d2386263f86d50b8b151929081900390910190a36000805460ff60f01b1916600160f01b1790559094909350915050565b606080612489612b47565b612500612494612b7e565b858580806020026020016040519081016040528093929190818152602001838360200280828437600092018290525054600454600896959450600160a01b820460020b935061ffff600160b81b8304811693506001600160801b0390911691600160c81b900416614158565b915091509250929050565b600080548190600160f01b900460ff16612552576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b1916815560408051608081018252338152600288810b602083015287900b91810191909152819081906125ab906060810161259e6001600160801b038a16613e69565b600003600f0b9052613e7a565b92509250925081600003945080600003935060008511806125cc5750600084115b1561260b576003830180546001600160801b038082168089018216600160801b93849004831689019092169092029091176001600160801b0319161790555b604080516001600160801b0388168152602081018790528082018690529051600289810b92908b900b9133917f0c396cd989a39f4459b5fa1aed6a9a8dcdbc45908acfd67e028cd568da98982c919081900360600190a450506000805460ff60f01b1916600160f01b179055509094909350915050565b600080600061268f612b47565b61269985856142b2565b600285810b810b60009081526005602052604080822087840b90930b825281206003830154600681900b93600160381b82046001600160a01b0316928492600160d81b810463ffffffff169284929091600160f81b900460ff16806126fd57600080fd5b6003820154600681900b9850600160381b81046001600160a01b03169650600160d81b810463ffffffff169450600160f81b900460ff168061273e57600080fd5b50506040805160e0810182526000546001600160a01b0381168252600160a01b8104600290810b810b810b6020840181905261ffff600160b81b8404811695850195909552600160c81b830485166060850152600160d81b8304909416608084015260ff600160e81b8304811660a0850152600160f01b909204909116151560c08301529093508e810b91900b121590506127e75750939094039650900393509003905061286a565b8a60020b816020015160020b121561285b576000612803612b7e565b6020830151604084015160045460608601519394506000938493612839936008938893879392916001600160801b0316906132df565b9a9003989098039b50509490960392909203965090910303925061286a915050565b50949093039650039350900390505b9250925092565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60015481565b60056020526000908152604090208054600182015460028301546003909301546001600160801b03831693600160801b909304600f0b9290600681900b90600160381b81046001600160a01b031690600160d81b810463ffffffff1690600160f81b900460ff1688565b6000546001600160a01b0316156129b4576040805162461bcd60e51b8152602060048201526002602482015261414960f01b604482015290519081900360640190fd5b60006129bf826135e1565b90506000806129d76129cf612b7e565b60089061437b565b6040805160e0810182526001600160a01b038816808252600288810b6020808501829052600085870181905261ffff898116606088018190529089166080880181905260a08801839052600160c0909801979097528154600160f01b6001600160a01b0319909116871762ffffff60a01b1916600160a01b62ffffff9787900b97909716969096029590951763ffffffff60b81b1916600160c81b9091021761ffff60d81b1916600160d81b9096029590951761ffff60e81b191692909217909355835191825281019190915281519395509193507f98636036cb66a9c19a37435efc1e90142190214e8abeb821bdba3f2990dd4c9592918290030190a150505050565b60008082600281900b620d89e71981612af057fe5b05029050600083600281900b620d89e881612b0757fe5b0502905060008460020b83830360020b81612b1e57fe5b0560010190508062ffffff166001600160801b03801681612b3b57fe5b0493505050505b919050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614612b7c57600080fd5b565b4290565b60008060008460020b8660020b81612b9657fe5b05905060008660020b128015612bbd57508460020b8660020b81612bb657fe5b0760020b15155b15612bc757600019015b8315612c3c57600080612bd9836143c7565b600182810b810b600090815260208d9052604090205460ff83169190911b80016000190190811680151597509294509092509085612c1e57888360ff16860302612c31565b88612c28826143d9565b840360ff168603025b965050505050612cba565b600080612c4b836001016143c7565b91509150600060018260ff166001901b031990506000818b60008660010b60010b8152602001908152602001600020541690508060001415955085612c9d57888360ff0360ff16866001010102612cb3565b8883612ca883614478565b0360ff168660010101025b9650505050505b5094509492505050565b60008060008360020b12612cdb578260020b612ce3565b8260020b6000035b9050620d89e8811115612d21576040805162461bcd60e51b81526020600482015260016024820152601560fa1b604482015290519081900360640190fd5b600060018216612d3557600160801b612d47565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615612d7b576ffff97272373d413259a46990580e213a0260801c5b6004821615612d9a576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615612db9576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615612dd8576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615612df7576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615612e16576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615612e35576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615612e55576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615612e75576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615612e95576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615612eb5576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615612ed5576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615612ef5576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615612f15576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615612f35576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615612f56576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615612f76576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615612f95576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615612fb2576b048a170391f7dc42444e8fa20260801c5b60008460020b1315612fcd578060001981612fc957fe5b0490505b600160201b810615612fe0576001612fe3565b60005b60ff16602082901c0192505050919050565b60008080806001600160a01b03808916908a16101581871280159061307a57600061302e8989620f42400362ffffff16620f424061322f565b905082613047576130428c8c8c6001614562565b613054565b6130548b8d8c60016145dd565b9550858110613065578a9650613074565b6130718c8b8386614688565b96505b506130c4565b816130915761308c8b8b8b60006145dd565b61309e565b61309e8a8c8b6000614562565b93508388600003106130b2578995506130c4565b6130c18b8a8a600003856146d4565b95505b6001600160a01b038a8116908716148215613127578080156130e35750815b6130f9576130f4878d8c60016145dd565b6130fb565b855b9550808015613108575081155b61311e57613119878d8c6000614562565b613120565b845b9450613171565b8080156131315750815b613147576131428c888c6001614562565b613149565b855b9550808015613156575081155b61316c576131678c888c60006145dd565b61316e565b845b94505b8115801561318157508860000385115b1561318d578860000394505b8180156131ac57508a6001600160a01b0316876001600160a01b031614155b156131bb5785890393506131d8565b6131d5868962ffffff168a620f42400362ffffff166140ba565b93505b50505095509550955095915050565b6000600160ff1b82106131f957600080fd5b5090565b8082038281131560008312151461321357600080fd5b92915050565b8181018281121560008312151461321357600080fd5b6000808060001985870986860292508281109083900303905080613265576000841161325a57600080fd5b5082900490506132d8565b80841161327157600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b60008063ffffffff8716613385576000898661ffff1661ffff811061330057fe5b60408051608081018252919092015463ffffffff808216808452600160201b8304600690810b810b900b6020850152600160581b83046001600160a01b031694840194909452600160f81b90910460ff16151560608301529092508a16146133715761336e818a8988614720565b90505b806020015181604001519250925050613465565b86880360008061339a8c8c858c8c8c8c6147c3565b91509150816000015163ffffffff168363ffffffff1614156133cc578160200151826040015194509450505050613465565b805163ffffffff848116911614156133f4578060200151816040015194509450505050613465565b8151815160208085015190840151918390039286039163ffffffff80841692908516910360060b8161342257fe5b05028460200151018263ffffffff168263ffffffff1686604001518660400151036001600160a01b0316028161345457fe5b048560400151019650965050505050505b97509795505050505050565b600295860b860b60009081526020979097526040909620600181018054909503909455938301805490920390915560038201805463ffffffff600160d81b6001600160a01b03600160381b808504821690960316909402600160381b600160d81b031990921691909117600681810b90960390950b66ffffffffffffff1666ffffffffffffff199095169490941782810485169095039093160263ffffffff60d81b1990931692909217905554600160801b9004600f0b90565b60008082600f0b121561359057826001600160801b03168260000384039150816001600160801b03161061358b576040805162461bcd60e51b81526020600482015260026024820152614c5360f01b604482015290519081900360640190fd5b613213565b826001600160801b03168284019150816001600160801b03161015613213576040805162461bcd60e51b81526020600482015260026024820152614c4160f01b604482015290519081900360640190fd5b60006401000276a36001600160a01b0383161080159061361d575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038316105b613652576040805162461bcd60e51b81526020600482015260016024820152602960f91b604482015290519081900360640190fd5b640100000000600160c01b03602083901b166001600160801b03811160071b81811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c979088119617909417909217179091171717608081106136e657607f810383901c91506136f0565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d607f198f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c600160381b161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581026f028f6481ab7f045a5af012a19d003aa9198101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b146138ed57886001600160a01b03166138d182612cc4565b6001600160a01b031611156138e657816138e8565b805b6138ef565b815b9998505050505050505050565b6000806000898961ffff1661ffff811061391257fe5b60408051608081018252919092015463ffffffff808216808452600160201b8304600690810b810b900b6020850152600160581b83046001600160a01b031694840194909452600160f81b90910460ff1615156060830152909250891614156139815788859250925050613465565b8461ffff168461ffff161180156139a257506001850361ffff168961ffff16145b156139af578391506139b3565b8491505b8161ffff168960010161ffff16816139c757fe5b0692506139d681898989614720565b8a8461ffff1661ffff81106139e757fe5b825191018054602084015160408501516060909501511515600160f81b026001600160f81b036001600160a01b03909616600160581b027fff0000000000000000000000000000000000000000ffffffffffffffffffffff60069390930b66ffffffffffffff16600160201b026affffffffffffff000000001963ffffffff90971663ffffffff199095169490941795909516929092171692909217929092161790555097509795505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1781529251825160009485949389169392918291908083835b60208310613b135780518252601f199092019160209182019101613af4565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613b75576040519150601f19603f3d011682016040523d82523d6000602084013e613b7a565b606091505b5091509150818015613ba8575080511580613ba85750808060200190516020811015613ba557600080fd5b50515b613bde576040805162461bcd60e51b81526020600482015260026024820152612a2360f11b604482015290519081900360640190fd5b5050505050565b604080513060248083019190915282518083039091018152604490910182526020810180516001600160e01b03166370a0823160e01b17815291518151600093849384936001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001693919290918291908083835b60208310613c7e5780518252601f199092019160209182019101613c5f565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114613cde576040519150601f19603f3d011682016040523d82523d6000602084013e613ce3565b606091505b5091509150818015613cf757506020815110155b613d0057600080fd5b808060200190516020811015613d1557600080fd5b50519250505090565b8082018281101561321357600080fd5b604080513060248083019190915282518083039091018152604490910182526020810180516001600160e01b03166370a0823160e01b17815291518151600093849384936001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016939192909182919080838360208310613c7e5780518252601f199092019160209182019101613c5f565b6000808361ffff1611613e04576040805162461bcd60e51b81526020600482015260016024820152604960f81b604482015290519081900360640190fd5b8261ffff168261ffff1611613e1a5750816132d8565b825b8261ffff168161ffff161015613e60576001858261ffff1661ffff8110613e3f57fe5b01805463ffffffff191663ffffffff92909216919091179055600101613e1c565b50909392505050565b80600f81900b8114612b4257600080fd5b6000806000613e87612b47565b613e99846020015185604001516142b2565b6040805160e0810182526000546001600160a01b0381168252600160a01b8104600290810b810b900b602080840182905261ffff600160b81b8404811685870152600160c81b84048116606080870191909152600160d81b8504909116608086015260ff600160e81b8504811660a0870152600160f01b909404909316151560c085015288519089015194890151928901519394613f3d94919390929091906149bd565b93508460600151600f0b6000146140b257846020015160020b816020015160020b1215613f9257613f8b613f748660200151612cc4565b613f818760400151612cc4565b8760600151614b72565b92506140b2565b846040015160020b816020015160020b12156140885760045460408201516001600160801b0390911690613fe490613fc8612b7e565b60208501516060860151608087015160089493929187916138fc565b6000805461ffff60c81b1916600160c81b61ffff938416021761ffff60b81b1916600160b81b939092169290920217905581516040870151614034919061402a90612cc4565b8860600151614b72565b93506140526140468760200151612cc4565b83516060890151614bb6565b925061406281876060015161352b565b600480546001600160801b0319166001600160801b0392909216919091179055506140b2565b6140af6140988660200151612cc4565b6140a58760400151612cc4565b8760600151614bb6565b91505b509193909250565b60006140c784848461322f565b9050600082806140d357fe5b84860911156132d85760001981106140ea57600080fd5b6001019392505050565b6040805160609490941b6bffffffffffffffffffffffff1916602080860191909152600293840b60e890811b60348701529290930b90911b60378401528051808403601a018152603a90930181528251928201929092206000908152929052902090565b60608060008361ffff1611614198576040805162461bcd60e51b81526020600482015260016024820152604960f81b604482015290519081900360640190fd5b865167ffffffffffffffff811180156141b057600080fd5b506040519080825280602002602001820160405280156141da578160200160208202803683370190505b509150865167ffffffffffffffff811180156141f557600080fd5b5060405190808252806020026020018201604052801561421f578160200160208202803683370190505b50905060005b87518110156142a5576142508a8a8a848151811061423f57fe5b60200260200101518a8a8a8a6132df565b84838151811061425c57fe5b6020026020010184848151811061426f57fe5b60200260200101826001600160a01b03166001600160a01b03168152508260060b60060b81525050508080600101915050614225565b5097509795505050505050565b8060020b8260020b126142f2576040805162461bcd60e51b8152602060048201526003602482015262544c5560e81b604482015290519081900360640190fd5b620d89e719600283900b1215614335576040805162461bcd60e51b8152602060048201526003602482015262544c4d60e81b604482015290519081900360640190fd5b620d89e8600282900b1315614377576040805162461bcd60e51b815260206004820152600360248201526254554d60e81b604482015290519081900360640190fd5b5050565b6040805160808101825263ffffffff9283168082526000602083018190529282019290925260016060909101819052835463ffffffff1916909117909116600160f81b17909155908190565b60020b600881901d9161010090910790565b60008082116143e757600080fd5b600160801b82106143fa57608091821c91015b68010000000000000000821061441257604091821c91015b600160201b821061442557602091821c91015b62010000821061443757601091821c91015b610100821061444857600891821c91015b6010821061445857600491821c91015b6004821061446857600291821c91015b60028210612b4257600101919050565b600080821161448657600080fd5b5060ff6001600160801b038216156144a157607f19016144a9565b608082901c91505b67ffffffffffffffff8216156144c257603f19016144ca565b604082901c91505b63ffffffff8216156144df57601f19016144e7565b602082901c91505b61ffff8216156144fa57600f1901614502565b601082901c91505b60ff821615614514576007190161451c565b600882901c91505b600f82161561452e5760031901614536565b600482901c91505b60038216156145485760011901614550565b600282901c91505b6001821615612b425760001901919050565b6000836001600160a01b0316856001600160a01b03161115614582579293925b816145af576145aa836001600160801b03168686036001600160a01b0316600160601b61322f565b6145d2565b6145d2836001600160801b03168686036001600160a01b0316600160601b6140ba565b90505b949350505050565b6000836001600160a01b0316856001600160a01b031611156145fd579293925b600160601b600160e01b03606084901b166001600160a01b03868603811690871661462757600080fd5b8361465757866001600160a01b031661464a8383896001600160a01b031661322f565b8161465157fe5b0461467d565b61467d61466e8383896001600160a01b03166140ba565b886001600160a01b0316614be5565b979650505050505050565b600080856001600160a01b03161161469f57600080fd5b6000846001600160801b0316116146b557600080fd5b816146c7576145aa8585856001614bf0565b6145d28585856001614cd1565b600080856001600160a01b0316116146eb57600080fd5b6000846001600160801b03161161470157600080fd5b81614713576145aa8585856000614cd1565b6145d28585856000614bf0565b6147286154f1565b600085600001518503905060405180608001604052808663ffffffff1681526020018263ffffffff168660020b0288602001510160060b81526020016000856001600160801b03161161477c57600161477e565b845b6001600160801b031663ffffffff60801b608085901b168161479c57fe5b048860400151016001600160a01b0316815260200160011515815250915050949350505050565b6147cb6154f1565b6147d36154f1565b888561ffff1661ffff81106147e457fe5b60408051608081018252919092015463ffffffff8116808352600160201b8204600690810b810b900b6020840152600160581b82046001600160a01b031693830193909352600160f81b900460ff1615156060820152925061484890899089614db4565b15614880578663ffffffff16826000015163ffffffff16141561486a57613465565b8161487783898988614720565b91509150613465565b888361ffff168660010161ffff168161489557fe5b0661ffff1661ffff81106148a557fe5b60408051608081018252929091015463ffffffff81168352600160201b8104600690810b810b900b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b9091041615156060820181905290925061495a57604080516080810182528a5463ffffffff81168252600160201b8104600690810b810b900b6020830152600160581b81046001600160a01b031692820192909252600160f81b90910460ff161515606082015291505b61496988836000015189614db4565b6149a0576040805162461bcd60e51b815260206004820152600360248201526213d31160ea1b604482015290519081900360640190fd5b6149ad8989898887614e75565b9150915097509795505050505050565b60006149cc60078787876140f4565b60015460025491925090600080600f87900b15614b125760006149ed612b7e565b6000805460045492935090918291614a379160089186918591600160a01b810460020b9161ffff600160b81b83048116926001600160801b0390921691600160c81b9004166132df565b9092509050614a7160058d8b8d8b8b87898b60007f0000000000000000000000000000000000000000000000000000000000000000615013565b9450614aa860058c8b8d8b8b87898b60017f0000000000000000000000000000000000000000000000000000000000000000615013565b93508415614adc57614adc60068d7f00000000000000000000000000000000000000000000000000000000000000006151cc565b8315614b0e57614b0e60068c7f00000000000000000000000000000000000000000000000000000000000000006151cc565b5050505b600080614b2460058c8c8b8a8a615232565b9092509050614b35878a84846152de565b600089600f0b1215614b63578315614b5257614b5260058c615473565b8215614b6357614b6360058b615473565b50505050505095945050505050565b60008082600f0b12614b9857614b93614b8e85858560016145dd565b6131e7565b6145d5565b614bab614b8e85858560000360006145dd565b600003949350505050565b60008082600f0b12614bd257614b93614b8e8585856001614562565b614bab614b8e8585856000036000614562565b808204910615150190565b60008115614c635760006001600160a01b03841115614c2657614c2184600160601b876001600160801b031661322f565b614c3e565b6001600160801b038516606085901b81614c3c57fe5b045b9050614c5b614c566001600160a01b03881683613d1e565b61549f565b9150506145d5565b60006001600160a01b03841115614c9157614c8c84600160601b876001600160801b03166140ba565b614ca8565b614ca8606085901b6001600160801b038716614be5565b905080866001600160a01b031611614cbf57600080fd5b6001600160a01b0386160390506145d5565b600082614cdf5750836145d5565b600160601b600160e01b03606085901b168215614d6d576001600160a01b03861684810290858281614d0d57fe5b041415614d3e57818101828110614d3c57614d3283896001600160a01b0316836140ba565b93505050506145d5565b505b614d6482614d5f878a6001600160a01b03168681614d5857fe5b0490613d1e565b614be5565b925050506145d5565b6001600160a01b03861684810290858281614d8457fe5b04148015614d9157508082115b614d9a57600080fd5b808203614d32614c56846001600160a01b038b16846140ba565b60008363ffffffff168363ffffffff1611158015614dde57508363ffffffff168263ffffffff1611155b15614dfa578163ffffffff168363ffffffff16111590506132d8565b60008463ffffffff168463ffffffff1611614e21578363ffffffff16600160201b01614e29565b8363ffffffff165b64ffffffffff16905060008563ffffffff168463ffffffff1611614e59578363ffffffff16600160201b01614e61565b8363ffffffff165b64ffffffffff169091111595945050505050565b614e7d6154f1565b614e856154f1565b60008361ffff168560010161ffff1681614e9b57fe5b0661ffff169050600060018561ffff16830103905060005b506002818301048961ffff87168281614ec857fe5b0661ffff8110614ed457fe5b60408051608081018252929091015463ffffffff81168352600160201b8104600690810b810b900b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b90910416151560608201819052909550614f3e57806001019250614eb3565b898661ffff168260010181614f4f57fe5b0661ffff8110614f5b57fe5b60408051608081018252929091015463ffffffff81168352600160201b8104600690810b810b900b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b90910416151560608201528551909450600090614fc5908b908b614db4565b9050808015614fde5750614fde8a8a8760000151614db4565b15614fe95750615006565b80614ff957600182039250615000565b8160010193505b50614eb3565b5050509550959350505050565b60028a810b900b600090815260208c90526040812080546001600160801b03168261503e828d61352b565b9050846001600160801b0316816001600160801b0316111561508c576040805162461bcd60e51b81526020600482015260026024820152614c4f60f01b604482015290519081900360640190fd5b6001600160801b038281161590821615811415945015615131578c60020b8e60020b1361511957600183018b9055600283018a9055600383018054600160381b600160d81b031916600160381b6001600160a01b038c16021766ffffffffffffff191666ffffffffffffff60068b900b161763ffffffff60d81b1916600160d81b63ffffffff8a16021790555b6003830180546001600160f81b0316600160f81b1790555b82546001600160801b0319166001600160801b0382161783558561517a5782546151759061517090600160801b9004600f90810b810b908f900b613219565b613e69565b61519b565b825461519b9061517090600160801b9004600f90810b810b908f900b6131fd565b8354600f9190910b6001600160801b03908116600160801b0291161790925550909c9b505050505050505050505050565b8060020b8260020b816151db57fe5b0760020b156151e957600080fd5b6000806152048360020b8560020b816151fe57fe5b056143c7565b600191820b820b60009081526020979097526040909620805460ff9097169190911b90951890945550505050565b600285810b80820b60009081526020899052604080822088850b850b83529082209193849391929184918291908a900b126152785750506001820154600283015461528b565b8360010154880391508360020154870390505b6000808b60020b8b60020b12156152ad575050600183015460028401546152c0565b84600101548a0391508460020154890390505b92909803979097039b96909503949094039850939650505050505050565b6040805160a08101825285546001600160801b0390811682526001870154602083015260028701549282019290925260038601548083166060830152600160801b900490911660808201526000600f85900b61537d5781516001600160801b0316615375576040805162461bcd60e51b815260206004820152600260248201526104e560f41b604482015290519081900360640190fd5b50805161538c565b8151615389908661352b565b90505b60006153b08360200151860384600001516001600160801b0316600160801b61322f565b905060006153d68460400151860385600001516001600160801b0316600160801b61322f565b905086600f0b6000146153fd5787546001600160801b0319166001600160801b0384161788555b60018801869055600288018590556001600160801b03821615158061542b57506000816001600160801b0316115b15615469576003880180546001600160801b031981166001600160801b039182168501821617808216600160801b9182900483168501909216021790555b5050505050505050565b600290810b810b6000908152602092909252604082208281556001810183905590810182905560030155565b806001600160a01b0381168114612b4257600080fd5b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915290565b6040805160808101825260008082526020820181905291810182905260608101919091529056fea26469706673582212200c1f93875bf69bd8236c0ed6fa61db810cf06b5c5481470ac7a631eb4e43c81264736f6c63430007060033", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061018e5760003560e01c806370cf754a116100de578063c45a015511610097578063ddca3f4311610071578063ddca3f43146107d8578063f3058399146107f8578063f30dba9314610800578063f637731d146108825761018e565b8063c45a0155146107a9578063d0c93a7c146107b1578063d21220a7146107d05761018e565b806370cf754a146105a05780638206a4d1146105a857806385b66729146105d0578063883bdbfd1461060d578063a34123a714610714578063a38807f21461074e5761018e565b80633850c7bd1161014b578063490e6cbc11610125578063490e6cbc1461044c5780634f1eb3d8146104d6578063514ea4bf146105275780635339c296146105805761018e565b80633850c7bd146103395780633c8a7d8d1461039257806346141319146104325761018e565b80630dfe168114610193578063128acb08146101b75780631a686502146102645780631ad8b03b14610288578063252c09d7146102bf57806332148f6714610316575b600080fd5b61019b6108a8565b604080516001600160a01b039092168252519081900360200190f35b61024b600480360360a08110156101cd57600080fd5b6001600160a01b0382358116926020810135151592604082013592606083013516919081019060a081016080820135600160201b81111561020d57600080fd5b82018360208201111561021f57600080fd5b803590602001918460018302840111600160201b8311171561024057600080fd5b5090925090506108cc565b6040805192835260208301919091528051918290030190f35b61026c61146b565b604080516001600160801b039092168252519081900360200190f35b61029061147a565b60405180836001600160801b03168152602001826001600160801b031681526020019250505060405180910390f35b6102dc600480360360208110156102d557600080fd5b5035611494565b6040805163ffffffff909516855260069390930b60208501526001600160a01b039091168383015215156060830152519081900360800190f35b6103376004803603602081101561032c57600080fd5b503561ffff166114d9565b005b6103416115d3565b604080516001600160a01b03909816885260029690960b602088015261ffff9485168787015292841660608701529216608085015260ff90911660a0840152151560c0830152519081900360e00190f35b61024b600480360360a08110156103a857600080fd5b6001600160a01b03823516916020810135600290810b92604083013590910b916001600160801b036060820135169181019060a081016080820135600160201b8111156103f457600080fd5b82018360208201111561040657600080fd5b803590602001918460018302840111600160201b8311171561042757600080fd5b509092509050611623565b61043a6118df565b60408051918252519081900360200190f35b6103376004803603608081101561046257600080fd5b6001600160a01b038235169160208101359160408201359190810190608081016060820135600160201b81111561049857600080fd5b8201836020820111156104aa57600080fd5b803590602001918460018302840111600160201b831117156104cb57600080fd5b5090925090506118e5565b610290600480360360a08110156104ec57600080fd5b506001600160a01b03813516906020810135600290810b91604081013590910b906001600160801b0360608201358116916080013516611d40565b6105446004803603602081101561053d57600080fd5b5035611f5a565b604080516001600160801b0396871681526020810195909552848101939093529084166060840152909216608082015290519081900360a00190f35b61043a6004803603602081101561059657600080fd5b503560010b611f97565b61026c611fa9565b610337600480360360408110156105be57600080fd5b5060ff81358116916020013516611fcd565b610290600480360360608110156105e657600080fd5b506001600160a01b03813516906001600160801b03602082013581169160400135166121b1565b61067b6004803603602081101561062357600080fd5b810190602081018135600160201b81111561063d57600080fd5b82018360208201111561064f57600080fd5b803590602001918460208302840111600160201b8311171561067057600080fd5b50909250905061247e565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156106bf5781810151838201526020016106a7565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156106fe5781810151838201526020016106e6565b5050505090500194505050505060405180910390f35b61024b6004803603606081101561072a57600080fd5b508035600290810b91602081013590910b90604001356001600160801b031661250b565b6107786004803603604081101561076457600080fd5b508035600290810b9160200135900b612682565b6040805160069490940b84526001600160a01b03909216602084015263ffffffff1682820152519081900360600190f35b61019b612871565b6107b9612895565b6040805160029290920b8252519081900360200190f35b61019b6128b9565b6107e06128dd565b6040805162ffffff9092168252519081900360200190f35b61043a612901565b6108206004803603602081101561081657600080fd5b503560020b612907565b604080516001600160801b039099168952600f9790970b602089015287870195909552606087019390935260069190910b60808601526001600160a01b031660a085015263ffffffff1660c0840152151560e083015251908190036101000190f35b6103376004803603602081101561089857600080fd5b50356001600160a01b0316612971565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806108d7612b47565b8561090e576040805162461bcd60e51b8152602060048201526002602482015261415360f01b604482015290519081900360640190fd5b6040805160e0810182526000546001600160a01b0381168252600160a01b8104600290810b810b900b602083015261ffff600160b81b8204811693830193909352600160c81b810483166060830152600160d81b8104909216608082015260ff600160e81b8304811660a0830152600160f01b909204909116151560c082018190526109c7576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b87610a125780600001516001600160a01b0316866001600160a01b0316118015610a0d575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038716105b610a44565b80600001516001600160a01b0316866001600160a01b0316108015610a4457506401000276a36001600160a01b038716115b610a7b576040805162461bcd60e51b815260206004820152600360248201526214d41360ea1b604482015290519081900360640190fd5b6000805460ff60f01b191681556040805160c08101909152808a610aaa5760048460a0015160ff16901c610abd565b60108460a0015160ff1681610abb57fe5b065b60ff1681526004546001600160801b03166020820152604001610ade612b7e565b63ffffffff168152602001600060060b815260200160006001600160a01b031681526020016000151581525090506000808913905060006040518060e001604052808b81526020016000815260200185600001516001600160a01b03168152602001856020015160020b81526020018c610b5a57600254610b5e565b6001545b815260200160006001600160801b0316815260200184602001516001600160801b031681525090505b805115801590610bad5750886001600160a01b031681604001516001600160a01b031614155b15610f7757610bba6154b5565b60408201516001600160a01b031681526060820151610bfd906006907f00000000000000000000000000000000000000000000000000000000000000008f612b82565b15156040830152600290810b810b60208301819052620d89e719910b1215610c2e57620d89e7196020820152610c4d565b6020810151620d89e860029190910b1315610c4d57620d89e860208201525b610c5a8160200151612cc4565b6001600160a01b031660608201526040820151610ceb908d610c94578b6001600160a01b031683606001516001600160a01b031611610cae565b8b6001600160a01b031683606001516001600160a01b0316105b610cbc578260600151610cbe565b8b5b60c085015185517f0000000000000000000000000000000000000000000000000000000000000000612ff5565b60c085015260a084015260808301526001600160a01b031660408301528215610d4d57610d218160c001518260800151016131e7565b825103825260a0810151610d4390610d38906131e7565b6020840151906131fd565b6020830152610d88565b610d5a8160a001516131e7565b825101825260c08101516080820151610d8291610d7791016131e7565b602084015190613219565b60208301525b835160ff1615610dce576000846000015160ff168260c0015181610da857fe5b60c0840180519290910491829003905260a0840180519091016001600160801b03169052505b60c08201516001600160801b031615610e0d57610e018160c00151600160801b8460c001516001600160801b031661322f565b60808301805190910190525b80606001516001600160a01b031682604001516001600160a01b03161415610f3657806040015115610f0d578360a00151610e9757610e75846040015160008760200151886040015188602001518a6060015160086132df909695949392919063ffffffff16565b6001600160a01b03166080860152600690810b900b6060850152600160a08501525b6000610ee382602001518e610eae57600154610eb4565b84608001515b8f610ec3578560800151610ec7565b6002545b608089015160608a015160408b01516005959493929190613471565b90508c15610eef576000035b610efd8360c001518261352b565b6001600160801b031660c0840152505b8b610f1c578060200151610f25565b60018160200151035b600290810b900b6060830152610f71565b80600001516001600160a01b031682604001516001600160a01b031614610f7157610f6482604001516135e1565b600290810b900b60608301525b50610b87565b836020015160020b816060015160020b1461104557600080610fc586604001518660400151886020015188602001518a606001518b6080015160086138fc909695949392919063ffffffff16565b604085015160608601516000805461ffff60c81b1916600160c81b61ffff958616021761ffff60b81b1916600160b81b95909416949094029290921762ffffff60a01b1916600160a01b62ffffff60029490940b9390931692909202919091176001600160a01b0319166001600160a01b039091161790555061106a9050565b6040810151600080546001600160a01b0319166001600160a01b039092169190911790555b8060c001516001600160801b031683602001516001600160801b0316146110b05760c0810151600480546001600160801b0319166001600160801b039092169190911790555b8a1561110057608081015160015560a08101516001600160801b0316156110fb5760a0810151600380546001600160801b031981166001600160801b03918216909301169190911790555b611146565b608081015160025560a08101516001600160801b0316156111465760a0810151600380546001600160801b03808216600160801b92839004821690940116029190911790555b8115158b15151461115f57602081015181518b0361116c565b80600001518a0381602001515b90965094508a156112a55760008512156111ae576111ae7f00000000000000000000000000000000000000000000000000000000000000008d87600003613a97565b60006111b8613be5565b9050336001600160a01b031663fa461e3388888c8c6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561123c57600080fd5b505af1158015611250573d6000803e3d6000fd5b5050505061125c613be5565b6112668289613d1e565b111561129f576040805162461bcd60e51b815260206004820152600360248201526249494160e81b604482015290519081900360640190fd5b506113cf565b60008612156112dc576112dc7f00000000000000000000000000000000000000000000000000000000000000008d88600003613a97565b60006112e6613d2e565b9050336001600160a01b031663fa461e3388888c8c6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561136a57600080fd5b505af115801561137e573d6000803e3d6000fd5b5050505061138a613d2e565b6113948288613d1e565b11156113cd576040805162461bcd60e51b815260206004820152600360248201526249494160e81b604482015290519081900360640190fd5b505b60408082015160c083015160608085015184518b8152602081018b90526001600160a01b03948516818701526001600160801b039093169183019190915260020b60808201529151908e169133917fc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca679181900360a00190a350506000805460ff60f01b1916600160f01b17905550919890975095505050505050565b6004546001600160801b031681565b6003546001600160801b0380821691600160801b90041682565b60088161ffff81106114a557600080fd5b015463ffffffff81169150600160201b810460060b90600160581b81046001600160a01b031690600160f81b900460ff1684565b600054600160f01b900460ff1661151d576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b19169055611532612b47565b60008054600160d81b900461ffff169061154e60088385613dc6565b6000805461ffff808416600160d81b810261ffff60d81b19909316929092179092559192508316146115bb576040805161ffff80851682528316602082015281517fac49e518f90a358f652e4400164f05a5d8f7e35e7747279bc3a93dbf584e125a929181900390910190a15b50506000805460ff60f01b1916600160f01b17905550565b6000546001600160a01b03811690600160a01b810460020b9061ffff600160b81b8204811691600160c81b8104821691600160d81b8204169060ff600160e81b8204811691600160f01b90041687565b600080548190600160f01b900460ff1661166a576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b191690556001600160801b03851661168a57600080fd5b6000806116d860405180608001604052808c6001600160a01b031681526020018b60020b81526020018a60020b81526020016116ce8a6001600160801b0316613e69565b600f0b9052613e7a565b925092505081935080925060008060008611156116fa576116f7613be5565b91505b841561170b57611708613d2e565b90505b336001600160a01b031663d348799787878b8b6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561178d57600080fd5b505af11580156117a1573d6000803e3d6000fd5b5050505060008611156117f8576117b6613be5565b6117c08388613d1e565b11156117f8576040805162461bcd60e51b815260206004820152600260248201526104d360f41b604482015290519081900360640190fd5b841561184857611806613d2e565b6118108287613d1e565b1115611848576040805162461bcd60e51b81526020600482015260026024820152614d3160f01b604482015290519081900360640190fd5b8960020b8b60020b8d6001600160a01b03167f7a53080ba414158be7ec69b987b5fb7d07dee101fe85488f0853ae16239d0bde338d8b8b60405180856001600160a01b03168152602001846001600160801b0316815260200183815260200182815260200194505050505060405180910390a450506000805460ff60f01b1916600160f01b17905550919890975095505050505050565b60025481565b600054600160f01b900460ff16611929576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b1916905561193e612b47565b6004546001600160801b031680611980576040805162461bcd60e51b81526020600482015260016024820152601360fa1b604482015290519081900360640190fd5b60006119b5867f000000000000000000000000000000000000000000000000000000000000000062ffffff16620f42406140ba565b905060006119ec867f000000000000000000000000000000000000000000000000000000000000000062ffffff16620f42406140ba565b905060006119f8613be5565b90506000611a04613d2e565b90508815611a3757611a377f00000000000000000000000000000000000000000000000000000000000000008b8b613a97565b8715611a6857611a687f00000000000000000000000000000000000000000000000000000000000000008b8a613a97565b336001600160a01b031663e9cbafb085858a8a6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015611aea57600080fd5b505af1158015611afe573d6000803e3d6000fd5b505050506000611b0c613be5565b90506000611b18613d2e565b905081611b258588613d1e565b1115611b5d576040805162461bcd60e51b8152602060048201526002602482015261046360f41b604482015290519081900360640190fd5b80611b688487613d1e565b1115611ba0576040805162461bcd60e51b8152602060048201526002602482015261463160f01b604482015290519081900360640190fd5b8382038382038115611c2f5760008054600160e81b9004600f16908115611bd3578160ff168481611bcd57fe5b04611bd6565b60005b90506001600160801b03811615611c0957600380546001600160801b038082168401166001600160801b03199091161790555b611c23818503600160801b8d6001600160801b031661322f565b60018054909101905550505b8015611cba5760008054600160e81b900460041c600f16908115611c5f578160ff168381611c5957fe5b04611c62565b60005b90506001600160801b03811615611c9457600380546001600160801b03600160801b8083048216850182160291161790555b611cae818403600160801b8d6001600160801b031661322f565b60028054909101905550505b8d6001600160a01b0316336001600160a01b03167fbdbdb71d7860376ba52b25a5028beea23581364a40522f6bcfb86bb1f2dca6338f8f86866040518085815260200184815260200183815260200182815260200194505050505060405180910390a350506000805460ff60f01b1916600160f01b179055505050505050505050505050565b600080548190600160f01b900460ff16611d87576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b19168155611da160073389896140f4565b60038101549091506001600160801b0390811690861611611dc25784611dd1565b60038101546001600160801b03165b60038201549093506001600160801b03600160801b909104811690851611611df95783611e0f565b6003810154600160801b90046001600160801b03165b91506001600160801b03831615611e74576003810180546001600160801b031981166001600160801b03918216869003821617909155611e74907f0000000000000000000000000000000000000000000000000000000000000000908a908616613a97565b6001600160801b03821615611eda576003810180546001600160801b03600160801b808304821686900382160291811691909117909155611eda907f0000000000000000000000000000000000000000000000000000000000000000908a908516613a97565b604080516001600160a01b038a1681526001600160801b0380861660208301528416818301529051600288810b92908a900b9133917f70935338e69775456a85ddef226c395fb668b63fa0115f5f20610b388e6ca9c0919081900360600190a4506000805460ff60f01b1916600160f01b17905590969095509350505050565b60076020526000908152604090208054600182015460028301546003909301546001600160801b0392831693919281811691600160801b90041685565b60066020526000908152604090205481565b7f000000000000000000000000000000000000000000000000000000000000000081565b600054600160f01b900460ff16612011576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b1916905560408051638da5cb5b60e01b815290516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691638da5cb5b916004808301926020929190829003018186803b15801561207e57600080fd5b505afa158015612092573d6000803e3d6000fd5b505050506040513d60208110156120a857600080fd5b50516001600160a01b031633146120be57600080fd5b60ff821615806120e1575060048260ff16101580156120e15750600a8260ff1611155b801561210b575060ff8116158061210b575060048160ff161015801561210b5750600a8160ff1611155b61211457600080fd5b60008054610ff0600484901b16840160ff908116600160e81b90810260ff60e81b19841617909355919004167f973d8d92bb299f4af6ce49b52a8adb85ae46b9f214c4c4fc06ac77401237b1336010826040805160ff9390920683168252600f600486901c16602083015286831682820152918516606082015290519081900360800190a150506000805460ff60f01b1916600160f01b17905550565b600080548190600160f01b900460ff166121f8576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b1916905560408051638da5cb5b60e01b815290516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691638da5cb5b916004808301926020929190829003018186803b15801561226557600080fd5b505afa158015612279573d6000803e3d6000fd5b505050506040513d602081101561228f57600080fd5b50516001600160a01b031633146122a557600080fd5b6003546001600160801b03908116908516116122c157836122ce565b6003546001600160801b03165b6003549092506001600160801b03600160801b9091048116908416116122f45782612308565b600354600160801b90046001600160801b03165b90506001600160801b03821615612389576003546001600160801b038381169116141561233757600019909101905b600380546001600160801b031981166001600160801b03918216859003821617909155612389907f00000000000000000000000000000000000000000000000000000000000000009087908516613a97565b6001600160801b0381161561240f576003546001600160801b03828116600160801b9092041614156123ba57600019015b600380546001600160801b03600160801b80830482168590038216029181169190911790915561240f907f00000000000000000000000000000000000000000000000000000000000000009087908416613a97565b604080516001600160801b0380851682528316602082015281516001600160a01b0388169233927f596b573906218d3411850b26a6b437d6c4522fdb43d2d2386263f86d50b8b151929081900390910190a36000805460ff60f01b1916600160f01b1790559094909350915050565b606080612489612b47565b612500612494612b7e565b858580806020026020016040519081016040528093929190818152602001838360200280828437600092018290525054600454600896959450600160a01b820460020b935061ffff600160b81b8304811693506001600160801b0390911691600160c81b900416614158565b915091509250929050565b600080548190600160f01b900460ff16612552576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b1916815560408051608081018252338152600288810b602083015287900b91810191909152819081906125ab906060810161259e6001600160801b038a16613e69565b600003600f0b9052613e7a565b92509250925081600003945080600003935060008511806125cc5750600084115b1561260b576003830180546001600160801b038082168089018216600160801b93849004831689019092169092029091176001600160801b0319161790555b604080516001600160801b0388168152602081018790528082018690529051600289810b92908b900b9133917f0c396cd989a39f4459b5fa1aed6a9a8dcdbc45908acfd67e028cd568da98982c919081900360600190a450506000805460ff60f01b1916600160f01b179055509094909350915050565b600080600061268f612b47565b61269985856142b2565b600285810b810b60009081526005602052604080822087840b90930b825281206003830154600681900b93600160381b82046001600160a01b0316928492600160d81b810463ffffffff169284929091600160f81b900460ff16806126fd57600080fd5b6003820154600681900b9850600160381b81046001600160a01b03169650600160d81b810463ffffffff169450600160f81b900460ff168061273e57600080fd5b50506040805160e0810182526000546001600160a01b0381168252600160a01b8104600290810b810b810b6020840181905261ffff600160b81b8404811695850195909552600160c81b830485166060850152600160d81b8304909416608084015260ff600160e81b8304811660a0850152600160f01b909204909116151560c08301529093508e810b91900b121590506127e75750939094039650900393509003905061286a565b8a60020b816020015160020b121561285b576000612803612b7e565b6020830151604084015160045460608601519394506000938493612839936008938893879392916001600160801b0316906132df565b9a9003989098039b50509490960392909203965090910303925061286a915050565b50949093039650039350900390505b9250925092565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60015481565b60056020526000908152604090208054600182015460028301546003909301546001600160801b03831693600160801b909304600f0b9290600681900b90600160381b81046001600160a01b031690600160d81b810463ffffffff1690600160f81b900460ff1688565b6000546001600160a01b0316156129b4576040805162461bcd60e51b8152602060048201526002602482015261414960f01b604482015290519081900360640190fd5b60006129bf826135e1565b90506000806129d76129cf612b7e565b60089061437b565b6040805160e0810182526001600160a01b038816808252600288810b6020808501829052600085870181905261ffff898116606088018190529089166080880181905260a08801839052600160c0909801979097528154600160f01b6001600160a01b0319909116871762ffffff60a01b1916600160a01b62ffffff9787900b97909716969096029590951763ffffffff60b81b1916600160c81b9091021761ffff60d81b1916600160d81b9096029590951761ffff60e81b191692909217909355835191825281019190915281519395509193507f98636036cb66a9c19a37435efc1e90142190214e8abeb821bdba3f2990dd4c9592918290030190a150505050565b60008082600281900b620d89e71981612af057fe5b05029050600083600281900b620d89e881612b0757fe5b0502905060008460020b83830360020b81612b1e57fe5b0560010190508062ffffff166001600160801b03801681612b3b57fe5b0493505050505b919050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614612b7c57600080fd5b565b4290565b60008060008460020b8660020b81612b9657fe5b05905060008660020b128015612bbd57508460020b8660020b81612bb657fe5b0760020b15155b15612bc757600019015b8315612c3c57600080612bd9836143c7565b600182810b810b600090815260208d9052604090205460ff83169190911b80016000190190811680151597509294509092509085612c1e57888360ff16860302612c31565b88612c28826143d9565b840360ff168603025b965050505050612cba565b600080612c4b836001016143c7565b91509150600060018260ff166001901b031990506000818b60008660010b60010b8152602001908152602001600020541690508060001415955085612c9d57888360ff0360ff16866001010102612cb3565b8883612ca883614478565b0360ff168660010101025b9650505050505b5094509492505050565b60008060008360020b12612cdb578260020b612ce3565b8260020b6000035b9050620d89e8811115612d21576040805162461bcd60e51b81526020600482015260016024820152601560fa1b604482015290519081900360640190fd5b600060018216612d3557600160801b612d47565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615612d7b576ffff97272373d413259a46990580e213a0260801c5b6004821615612d9a576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615612db9576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615612dd8576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615612df7576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615612e16576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615612e35576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615612e55576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615612e75576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615612e95576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615612eb5576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615612ed5576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615612ef5576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615612f15576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615612f35576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615612f56576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615612f76576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615612f95576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615612fb2576b048a170391f7dc42444e8fa20260801c5b60008460020b1315612fcd578060001981612fc957fe5b0490505b600160201b810615612fe0576001612fe3565b60005b60ff16602082901c0192505050919050565b60008080806001600160a01b03808916908a16101581871280159061307a57600061302e8989620f42400362ffffff16620f424061322f565b905082613047576130428c8c8c6001614562565b613054565b6130548b8d8c60016145dd565b9550858110613065578a9650613074565b6130718c8b8386614688565b96505b506130c4565b816130915761308c8b8b8b60006145dd565b61309e565b61309e8a8c8b6000614562565b93508388600003106130b2578995506130c4565b6130c18b8a8a600003856146d4565b95505b6001600160a01b038a8116908716148215613127578080156130e35750815b6130f9576130f4878d8c60016145dd565b6130fb565b855b9550808015613108575081155b61311e57613119878d8c6000614562565b613120565b845b9450613171565b8080156131315750815b613147576131428c888c6001614562565b613149565b855b9550808015613156575081155b61316c576131678c888c60006145dd565b61316e565b845b94505b8115801561318157508860000385115b1561318d578860000394505b8180156131ac57508a6001600160a01b0316876001600160a01b031614155b156131bb5785890393506131d8565b6131d5868962ffffff168a620f42400362ffffff166140ba565b93505b50505095509550955095915050565b6000600160ff1b82106131f957600080fd5b5090565b8082038281131560008312151461321357600080fd5b92915050565b8181018281121560008312151461321357600080fd5b6000808060001985870986860292508281109083900303905080613265576000841161325a57600080fd5b5082900490506132d8565b80841161327157600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b60008063ffffffff8716613385576000898661ffff1661ffff811061330057fe5b60408051608081018252919092015463ffffffff808216808452600160201b8304600690810b810b900b6020850152600160581b83046001600160a01b031694840194909452600160f81b90910460ff16151560608301529092508a16146133715761336e818a8988614720565b90505b806020015181604001519250925050613465565b86880360008061339a8c8c858c8c8c8c6147c3565b91509150816000015163ffffffff168363ffffffff1614156133cc578160200151826040015194509450505050613465565b805163ffffffff848116911614156133f4578060200151816040015194509450505050613465565b8151815160208085015190840151918390039286039163ffffffff80841692908516910360060b8161342257fe5b05028460200151018263ffffffff168263ffffffff1686604001518660400151036001600160a01b0316028161345457fe5b048560400151019650965050505050505b97509795505050505050565b600295860b860b60009081526020979097526040909620600181018054909503909455938301805490920390915560038201805463ffffffff600160d81b6001600160a01b03600160381b808504821690960316909402600160381b600160d81b031990921691909117600681810b90960390950b66ffffffffffffff1666ffffffffffffff199095169490941782810485169095039093160263ffffffff60d81b1990931692909217905554600160801b9004600f0b90565b60008082600f0b121561359057826001600160801b03168260000384039150816001600160801b03161061358b576040805162461bcd60e51b81526020600482015260026024820152614c5360f01b604482015290519081900360640190fd5b613213565b826001600160801b03168284019150816001600160801b03161015613213576040805162461bcd60e51b81526020600482015260026024820152614c4160f01b604482015290519081900360640190fd5b60006401000276a36001600160a01b0383161080159061361d575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038316105b613652576040805162461bcd60e51b81526020600482015260016024820152602960f91b604482015290519081900360640190fd5b640100000000600160c01b03602083901b166001600160801b03811160071b81811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c979088119617909417909217179091171717608081106136e657607f810383901c91506136f0565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d607f198f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c600160381b161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581026f028f6481ab7f045a5af012a19d003aa9198101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b146138ed57886001600160a01b03166138d182612cc4565b6001600160a01b031611156138e657816138e8565b805b6138ef565b815b9998505050505050505050565b6000806000898961ffff1661ffff811061391257fe5b60408051608081018252919092015463ffffffff808216808452600160201b8304600690810b810b900b6020850152600160581b83046001600160a01b031694840194909452600160f81b90910460ff1615156060830152909250891614156139815788859250925050613465565b8461ffff168461ffff161180156139a257506001850361ffff168961ffff16145b156139af578391506139b3565b8491505b8161ffff168960010161ffff16816139c757fe5b0692506139d681898989614720565b8a8461ffff1661ffff81106139e757fe5b825191018054602084015160408501516060909501511515600160f81b026001600160f81b036001600160a01b03909616600160581b027fff0000000000000000000000000000000000000000ffffffffffffffffffffff60069390930b66ffffffffffffff16600160201b026affffffffffffff000000001963ffffffff90971663ffffffff199095169490941795909516929092171692909217929092161790555097509795505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1781529251825160009485949389169392918291908083835b60208310613b135780518252601f199092019160209182019101613af4565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613b75576040519150601f19603f3d011682016040523d82523d6000602084013e613b7a565b606091505b5091509150818015613ba8575080511580613ba85750808060200190516020811015613ba557600080fd5b50515b613bde576040805162461bcd60e51b81526020600482015260026024820152612a2360f11b604482015290519081900360640190fd5b5050505050565b604080513060248083019190915282518083039091018152604490910182526020810180516001600160e01b03166370a0823160e01b17815291518151600093849384936001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001693919290918291908083835b60208310613c7e5780518252601f199092019160209182019101613c5f565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114613cde576040519150601f19603f3d011682016040523d82523d6000602084013e613ce3565b606091505b5091509150818015613cf757506020815110155b613d0057600080fd5b808060200190516020811015613d1557600080fd5b50519250505090565b8082018281101561321357600080fd5b604080513060248083019190915282518083039091018152604490910182526020810180516001600160e01b03166370a0823160e01b17815291518151600093849384936001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016939192909182919080838360208310613c7e5780518252601f199092019160209182019101613c5f565b6000808361ffff1611613e04576040805162461bcd60e51b81526020600482015260016024820152604960f81b604482015290519081900360640190fd5b8261ffff168261ffff1611613e1a5750816132d8565b825b8261ffff168161ffff161015613e60576001858261ffff1661ffff8110613e3f57fe5b01805463ffffffff191663ffffffff92909216919091179055600101613e1c565b50909392505050565b80600f81900b8114612b4257600080fd5b6000806000613e87612b47565b613e99846020015185604001516142b2565b6040805160e0810182526000546001600160a01b0381168252600160a01b8104600290810b810b900b602080840182905261ffff600160b81b8404811685870152600160c81b84048116606080870191909152600160d81b8504909116608086015260ff600160e81b8504811660a0870152600160f01b909404909316151560c085015288519089015194890151928901519394613f3d94919390929091906149bd565b93508460600151600f0b6000146140b257846020015160020b816020015160020b1215613f9257613f8b613f748660200151612cc4565b613f818760400151612cc4565b8760600151614b72565b92506140b2565b846040015160020b816020015160020b12156140885760045460408201516001600160801b0390911690613fe490613fc8612b7e565b60208501516060860151608087015160089493929187916138fc565b6000805461ffff60c81b1916600160c81b61ffff938416021761ffff60b81b1916600160b81b939092169290920217905581516040870151614034919061402a90612cc4565b8860600151614b72565b93506140526140468760200151612cc4565b83516060890151614bb6565b925061406281876060015161352b565b600480546001600160801b0319166001600160801b0392909216919091179055506140b2565b6140af6140988660200151612cc4565b6140a58760400151612cc4565b8760600151614bb6565b91505b509193909250565b60006140c784848461322f565b9050600082806140d357fe5b84860911156132d85760001981106140ea57600080fd5b6001019392505050565b6040805160609490941b6bffffffffffffffffffffffff1916602080860191909152600293840b60e890811b60348701529290930b90911b60378401528051808403601a018152603a90930181528251928201929092206000908152929052902090565b60608060008361ffff1611614198576040805162461bcd60e51b81526020600482015260016024820152604960f81b604482015290519081900360640190fd5b865167ffffffffffffffff811180156141b057600080fd5b506040519080825280602002602001820160405280156141da578160200160208202803683370190505b509150865167ffffffffffffffff811180156141f557600080fd5b5060405190808252806020026020018201604052801561421f578160200160208202803683370190505b50905060005b87518110156142a5576142508a8a8a848151811061423f57fe5b60200260200101518a8a8a8a6132df565b84838151811061425c57fe5b6020026020010184848151811061426f57fe5b60200260200101826001600160a01b03166001600160a01b03168152508260060b60060b81525050508080600101915050614225565b5097509795505050505050565b8060020b8260020b126142f2576040805162461bcd60e51b8152602060048201526003602482015262544c5560e81b604482015290519081900360640190fd5b620d89e719600283900b1215614335576040805162461bcd60e51b8152602060048201526003602482015262544c4d60e81b604482015290519081900360640190fd5b620d89e8600282900b1315614377576040805162461bcd60e51b815260206004820152600360248201526254554d60e81b604482015290519081900360640190fd5b5050565b6040805160808101825263ffffffff9283168082526000602083018190529282019290925260016060909101819052835463ffffffff1916909117909116600160f81b17909155908190565b60020b600881901d9161010090910790565b60008082116143e757600080fd5b600160801b82106143fa57608091821c91015b68010000000000000000821061441257604091821c91015b600160201b821061442557602091821c91015b62010000821061443757601091821c91015b610100821061444857600891821c91015b6010821061445857600491821c91015b6004821061446857600291821c91015b60028210612b4257600101919050565b600080821161448657600080fd5b5060ff6001600160801b038216156144a157607f19016144a9565b608082901c91505b67ffffffffffffffff8216156144c257603f19016144ca565b604082901c91505b63ffffffff8216156144df57601f19016144e7565b602082901c91505b61ffff8216156144fa57600f1901614502565b601082901c91505b60ff821615614514576007190161451c565b600882901c91505b600f82161561452e5760031901614536565b600482901c91505b60038216156145485760011901614550565b600282901c91505b6001821615612b425760001901919050565b6000836001600160a01b0316856001600160a01b03161115614582579293925b816145af576145aa836001600160801b03168686036001600160a01b0316600160601b61322f565b6145d2565b6145d2836001600160801b03168686036001600160a01b0316600160601b6140ba565b90505b949350505050565b6000836001600160a01b0316856001600160a01b031611156145fd579293925b600160601b600160e01b03606084901b166001600160a01b03868603811690871661462757600080fd5b8361465757866001600160a01b031661464a8383896001600160a01b031661322f565b8161465157fe5b0461467d565b61467d61466e8383896001600160a01b03166140ba565b886001600160a01b0316614be5565b979650505050505050565b600080856001600160a01b03161161469f57600080fd5b6000846001600160801b0316116146b557600080fd5b816146c7576145aa8585856001614bf0565b6145d28585856001614cd1565b600080856001600160a01b0316116146eb57600080fd5b6000846001600160801b03161161470157600080fd5b81614713576145aa8585856000614cd1565b6145d28585856000614bf0565b6147286154f1565b600085600001518503905060405180608001604052808663ffffffff1681526020018263ffffffff168660020b0288602001510160060b81526020016000856001600160801b03161161477c57600161477e565b845b6001600160801b031663ffffffff60801b608085901b168161479c57fe5b048860400151016001600160a01b0316815260200160011515815250915050949350505050565b6147cb6154f1565b6147d36154f1565b888561ffff1661ffff81106147e457fe5b60408051608081018252919092015463ffffffff8116808352600160201b8204600690810b810b900b6020840152600160581b82046001600160a01b031693830193909352600160f81b900460ff1615156060820152925061484890899089614db4565b15614880578663ffffffff16826000015163ffffffff16141561486a57613465565b8161487783898988614720565b91509150613465565b888361ffff168660010161ffff168161489557fe5b0661ffff1661ffff81106148a557fe5b60408051608081018252929091015463ffffffff81168352600160201b8104600690810b810b900b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b9091041615156060820181905290925061495a57604080516080810182528a5463ffffffff81168252600160201b8104600690810b810b900b6020830152600160581b81046001600160a01b031692820192909252600160f81b90910460ff161515606082015291505b61496988836000015189614db4565b6149a0576040805162461bcd60e51b815260206004820152600360248201526213d31160ea1b604482015290519081900360640190fd5b6149ad8989898887614e75565b9150915097509795505050505050565b60006149cc60078787876140f4565b60015460025491925090600080600f87900b15614b125760006149ed612b7e565b6000805460045492935090918291614a379160089186918591600160a01b810460020b9161ffff600160b81b83048116926001600160801b0390921691600160c81b9004166132df565b9092509050614a7160058d8b8d8b8b87898b60007f0000000000000000000000000000000000000000000000000000000000000000615013565b9450614aa860058c8b8d8b8b87898b60017f0000000000000000000000000000000000000000000000000000000000000000615013565b93508415614adc57614adc60068d7f00000000000000000000000000000000000000000000000000000000000000006151cc565b8315614b0e57614b0e60068c7f00000000000000000000000000000000000000000000000000000000000000006151cc565b5050505b600080614b2460058c8c8b8a8a615232565b9092509050614b35878a84846152de565b600089600f0b1215614b63578315614b5257614b5260058c615473565b8215614b6357614b6360058b615473565b50505050505095945050505050565b60008082600f0b12614b9857614b93614b8e85858560016145dd565b6131e7565b6145d5565b614bab614b8e85858560000360006145dd565b600003949350505050565b60008082600f0b12614bd257614b93614b8e8585856001614562565b614bab614b8e8585856000036000614562565b808204910615150190565b60008115614c635760006001600160a01b03841115614c2657614c2184600160601b876001600160801b031661322f565b614c3e565b6001600160801b038516606085901b81614c3c57fe5b045b9050614c5b614c566001600160a01b03881683613d1e565b61549f565b9150506145d5565b60006001600160a01b03841115614c9157614c8c84600160601b876001600160801b03166140ba565b614ca8565b614ca8606085901b6001600160801b038716614be5565b905080866001600160a01b031611614cbf57600080fd5b6001600160a01b0386160390506145d5565b600082614cdf5750836145d5565b600160601b600160e01b03606085901b168215614d6d576001600160a01b03861684810290858281614d0d57fe5b041415614d3e57818101828110614d3c57614d3283896001600160a01b0316836140ba565b93505050506145d5565b505b614d6482614d5f878a6001600160a01b03168681614d5857fe5b0490613d1e565b614be5565b925050506145d5565b6001600160a01b03861684810290858281614d8457fe5b04148015614d9157508082115b614d9a57600080fd5b808203614d32614c56846001600160a01b038b16846140ba565b60008363ffffffff168363ffffffff1611158015614dde57508363ffffffff168263ffffffff1611155b15614dfa578163ffffffff168363ffffffff16111590506132d8565b60008463ffffffff168463ffffffff1611614e21578363ffffffff16600160201b01614e29565b8363ffffffff165b64ffffffffff16905060008563ffffffff168463ffffffff1611614e59578363ffffffff16600160201b01614e61565b8363ffffffff165b64ffffffffff169091111595945050505050565b614e7d6154f1565b614e856154f1565b60008361ffff168560010161ffff1681614e9b57fe5b0661ffff169050600060018561ffff16830103905060005b506002818301048961ffff87168281614ec857fe5b0661ffff8110614ed457fe5b60408051608081018252929091015463ffffffff81168352600160201b8104600690810b810b900b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b90910416151560608201819052909550614f3e57806001019250614eb3565b898661ffff168260010181614f4f57fe5b0661ffff8110614f5b57fe5b60408051608081018252929091015463ffffffff81168352600160201b8104600690810b810b900b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b90910416151560608201528551909450600090614fc5908b908b614db4565b9050808015614fde5750614fde8a8a8760000151614db4565b15614fe95750615006565b80614ff957600182039250615000565b8160010193505b50614eb3565b5050509550959350505050565b60028a810b900b600090815260208c90526040812080546001600160801b03168261503e828d61352b565b9050846001600160801b0316816001600160801b0316111561508c576040805162461bcd60e51b81526020600482015260026024820152614c4f60f01b604482015290519081900360640190fd5b6001600160801b038281161590821615811415945015615131578c60020b8e60020b1361511957600183018b9055600283018a9055600383018054600160381b600160d81b031916600160381b6001600160a01b038c16021766ffffffffffffff191666ffffffffffffff60068b900b161763ffffffff60d81b1916600160d81b63ffffffff8a16021790555b6003830180546001600160f81b0316600160f81b1790555b82546001600160801b0319166001600160801b0382161783558561517a5782546151759061517090600160801b9004600f90810b810b908f900b613219565b613e69565b61519b565b825461519b9061517090600160801b9004600f90810b810b908f900b6131fd565b8354600f9190910b6001600160801b03908116600160801b0291161790925550909c9b505050505050505050505050565b8060020b8260020b816151db57fe5b0760020b156151e957600080fd5b6000806152048360020b8560020b816151fe57fe5b056143c7565b600191820b820b60009081526020979097526040909620805460ff9097169190911b90951890945550505050565b600285810b80820b60009081526020899052604080822088850b850b83529082209193849391929184918291908a900b126152785750506001820154600283015461528b565b8360010154880391508360020154870390505b6000808b60020b8b60020b12156152ad575050600183015460028401546152c0565b84600101548a0391508460020154890390505b92909803979097039b96909503949094039850939650505050505050565b6040805160a08101825285546001600160801b0390811682526001870154602083015260028701549282019290925260038601548083166060830152600160801b900490911660808201526000600f85900b61537d5781516001600160801b0316615375576040805162461bcd60e51b815260206004820152600260248201526104e560f41b604482015290519081900360640190fd5b50805161538c565b8151615389908661352b565b90505b60006153b08360200151860384600001516001600160801b0316600160801b61322f565b905060006153d68460400151860385600001516001600160801b0316600160801b61322f565b905086600f0b6000146153fd5787546001600160801b0319166001600160801b0384161788555b60018801869055600288018590556001600160801b03821615158061542b57506000816001600160801b0316115b15615469576003880180546001600160801b031981166001600160801b039182168501821617808216600160801b9182900483168501909216021790555b5050505050505050565b600290810b810b6000908152602092909252604082208281556001810183905590810182905560030155565b806001600160a01b0381168114612b4257600080fd5b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915290565b6040805160808101825260008082526020820181905291810182905260608101919091529056fea26469706673582212200c1f93875bf69bd8236c0ed6fa61db810cf06b5c5481470ac7a631eb4e43c81264736f6c63430007060033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/artifacts/@uniswap/v3-core/contracts/UniswapV3PoolDeployer.sol/UniswapV3PoolDeployer.dbg.json b/artifacts/@uniswap/v3-core/contracts/UniswapV3PoolDeployer.sol/UniswapV3PoolDeployer.dbg.json deleted file mode 100644 index 0af9483..0000000 --- a/artifacts/@uniswap/v3-core/contracts/UniswapV3PoolDeployer.sol/UniswapV3PoolDeployer.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/f3d46276c3abf0612f2d14f482c05ecc.json" -} diff --git a/artifacts/@uniswap/v3-core/contracts/UniswapV3PoolDeployer.sol/UniswapV3PoolDeployer.json b/artifacts/@uniswap/v3-core/contracts/UniswapV3PoolDeployer.sol/UniswapV3PoolDeployer.json deleted file mode 100644 index 78aad99..0000000 --- a/artifacts/@uniswap/v3-core/contracts/UniswapV3PoolDeployer.sol/UniswapV3PoolDeployer.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "UniswapV3PoolDeployer", - "sourceName": "@uniswap/v3-core/contracts/UniswapV3PoolDeployer.sol", - "abi": [ - { - "inputs": [], - "name": "parameters", - "outputs": [ - { - "internalType": "address", - "name": "factory", - "type": "address" - }, - { - "internalType": "address", - "name": "token0", - "type": "address" - }, - { - "internalType": "address", - "name": "token1", - "type": "address" - }, - { - "internalType": "uint24", - "name": "fee", - "type": "uint24" - }, - { - "internalType": "int24", - "name": "tickSpacing", - "type": "int24" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x608060405234801561001057600080fd5b5060e18061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80638903573014602d575b600080fd5b60336075565b604080516001600160a01b0396871681529486166020860152929094168383015262ffffff16606083015260029290920b608082015290519081900360a00190f35b600054600154600280546001600160a01b03938416939283169281169162ffffff600160a01b83041691600160b81b9004900b8556fea264697066735822122089924758a634a6ddcc1201515540f84d2140acfc29ffa2b48210252b2f30cc5764736f6c63430007060033", - "deployedBytecode": "0x6080604052348015600f57600080fd5b506004361060285760003560e01c80638903573014602d575b600080fd5b60336075565b604080516001600160a01b0396871681529486166020860152929094168383015262ffffff16606083015260029290920b608082015290519081900360a00190f35b600054600154600280546001600160a01b03938416939283169281169162ffffff600160a01b83041691600160b81b9004900b8556fea264697066735822122089924758a634a6ddcc1201515540f84d2140acfc29ffa2b48210252b2f30cc5764736f6c63430007060033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/artifacts/@uniswap/v3-core/contracts/interfaces/IERC20Minimal.sol/IERC20Minimal.dbg.json b/artifacts/@uniswap/v3-core/contracts/interfaces/IERC20Minimal.sol/IERC20Minimal.dbg.json deleted file mode 100644 index f6d3b80..0000000 --- a/artifacts/@uniswap/v3-core/contracts/interfaces/IERC20Minimal.sol/IERC20Minimal.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/f3d46276c3abf0612f2d14f482c05ecc.json" -} diff --git a/artifacts/@uniswap/v3-core/contracts/interfaces/IERC20Minimal.sol/IERC20Minimal.json b/artifacts/@uniswap/v3-core/contracts/interfaces/IERC20Minimal.sol/IERC20Minimal.json deleted file mode 100644 index 9ede334..0000000 --- a/artifacts/@uniswap/v3-core/contracts/interfaces/IERC20Minimal.sol/IERC20Minimal.json +++ /dev/null @@ -1,181 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "IERC20Minimal", - "sourceName": "@uniswap/v3-core/contracts/interfaces/IERC20Minimal.sol", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "address", - "name": "spender", - "type": "address" - } - ], - "name": "allowance", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/artifacts/@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol/IUniswapV3Factory.dbg.json b/artifacts/@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol/IUniswapV3Factory.dbg.json deleted file mode 100644 index f6d3b80..0000000 --- a/artifacts/@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol/IUniswapV3Factory.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/f3d46276c3abf0612f2d14f482c05ecc.json" -} diff --git a/artifacts/@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol/IUniswapV3Factory.json b/artifacts/@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol/IUniswapV3Factory.json deleted file mode 100644 index 15eea75..0000000 --- a/artifacts/@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol/IUniswapV3Factory.json +++ /dev/null @@ -1,207 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "IUniswapV3Factory", - "sourceName": "@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint24", - "name": "fee", - "type": "uint24" - }, - { - "indexed": true, - "internalType": "int24", - "name": "tickSpacing", - "type": "int24" - } - ], - "name": "FeeAmountEnabled", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "oldOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnerChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "token0", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "token1", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint24", - "name": "fee", - "type": "uint24" - }, - { - "indexed": false, - "internalType": "int24", - "name": "tickSpacing", - "type": "int24" - }, - { - "indexed": false, - "internalType": "address", - "name": "pool", - "type": "address" - } - ], - "name": "PoolCreated", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "tokenA", - "type": "address" - }, - { - "internalType": "address", - "name": "tokenB", - "type": "address" - }, - { - "internalType": "uint24", - "name": "fee", - "type": "uint24" - } - ], - "name": "createPool", - "outputs": [ - { - "internalType": "address", - "name": "pool", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint24", - "name": "fee", - "type": "uint24" - }, - { - "internalType": "int24", - "name": "tickSpacing", - "type": "int24" - } - ], - "name": "enableFeeAmount", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint24", - "name": "fee", - "type": "uint24" - } - ], - "name": "feeAmountTickSpacing", - "outputs": [ - { - "internalType": "int24", - "name": "", - "type": "int24" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "tokenA", - "type": "address" - }, - { - "internalType": "address", - "name": "tokenB", - "type": "address" - }, - { - "internalType": "uint24", - "name": "fee", - "type": "uint24" - } - ], - "name": "getPool", - "outputs": [ - { - "internalType": "address", - "name": "pool", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_owner", - "type": "address" - } - ], - "name": "setOwner", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/artifacts/@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol/IUniswapV3Pool.dbg.json b/artifacts/@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol/IUniswapV3Pool.dbg.json deleted file mode 100644 index f6d3b80..0000000 --- a/artifacts/@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol/IUniswapV3Pool.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/f3d46276c3abf0612f2d14f482c05ecc.json" -} diff --git a/artifacts/@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol/IUniswapV3Pool.json b/artifacts/@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol/IUniswapV3Pool.json deleted file mode 100644 index b2a1a3e..0000000 --- a/artifacts/@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol/IUniswapV3Pool.json +++ /dev/null @@ -1,992 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "IUniswapV3Pool", - "sourceName": "@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "int24", - "name": "tickLower", - "type": "int24" - }, - { - "indexed": true, - "internalType": "int24", - "name": "tickUpper", - "type": "int24" - }, - { - "indexed": false, - "internalType": "uint128", - "name": "amount", - "type": "uint128" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount0", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount1", - "type": "uint256" - } - ], - "name": "Burn", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "indexed": true, - "internalType": "int24", - "name": "tickLower", - "type": "int24" - }, - { - "indexed": true, - "internalType": "int24", - "name": "tickUpper", - "type": "int24" - }, - { - "indexed": false, - "internalType": "uint128", - "name": "amount0", - "type": "uint128" - }, - { - "indexed": false, - "internalType": "uint128", - "name": "amount1", - "type": "uint128" - } - ], - "name": "Collect", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint128", - "name": "amount0", - "type": "uint128" - }, - { - "indexed": false, - "internalType": "uint128", - "name": "amount1", - "type": "uint128" - } - ], - "name": "CollectProtocol", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount0", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount1", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "paid0", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "paid1", - "type": "uint256" - } - ], - "name": "Flash", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint16", - "name": "observationCardinalityNextOld", - "type": "uint16" - }, - { - "indexed": false, - "internalType": "uint16", - "name": "observationCardinalityNextNew", - "type": "uint16" - } - ], - "name": "IncreaseObservationCardinalityNext", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint160", - "name": "sqrtPriceX96", - "type": "uint160" - }, - { - "indexed": false, - "internalType": "int24", - "name": "tick", - "type": "int24" - } - ], - "name": "Initialize", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "int24", - "name": "tickLower", - "type": "int24" - }, - { - "indexed": true, - "internalType": "int24", - "name": "tickUpper", - "type": "int24" - }, - { - "indexed": false, - "internalType": "uint128", - "name": "amount", - "type": "uint128" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount0", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount1", - "type": "uint256" - } - ], - "name": "Mint", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint8", - "name": "feeProtocol0Old", - "type": "uint8" - }, - { - "indexed": false, - "internalType": "uint8", - "name": "feeProtocol1Old", - "type": "uint8" - }, - { - "indexed": false, - "internalType": "uint8", - "name": "feeProtocol0New", - "type": "uint8" - }, - { - "indexed": false, - "internalType": "uint8", - "name": "feeProtocol1New", - "type": "uint8" - } - ], - "name": "SetFeeProtocol", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "indexed": false, - "internalType": "int256", - "name": "amount0", - "type": "int256" - }, - { - "indexed": false, - "internalType": "int256", - "name": "amount1", - "type": "int256" - }, - { - "indexed": false, - "internalType": "uint160", - "name": "sqrtPriceX96", - "type": "uint160" - }, - { - "indexed": false, - "internalType": "uint128", - "name": "liquidity", - "type": "uint128" - }, - { - "indexed": false, - "internalType": "int24", - "name": "tick", - "type": "int24" - } - ], - "name": "Swap", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "int24", - "name": "tickLower", - "type": "int24" - }, - { - "internalType": "int24", - "name": "tickUpper", - "type": "int24" - }, - { - "internalType": "uint128", - "name": "amount", - "type": "uint128" - } - ], - "name": "burn", - "outputs": [ - { - "internalType": "uint256", - "name": "amount0", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amount1", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "int24", - "name": "tickLower", - "type": "int24" - }, - { - "internalType": "int24", - "name": "tickUpper", - "type": "int24" - }, - { - "internalType": "uint128", - "name": "amount0Requested", - "type": "uint128" - }, - { - "internalType": "uint128", - "name": "amount1Requested", - "type": "uint128" - } - ], - "name": "collect", - "outputs": [ - { - "internalType": "uint128", - "name": "amount0", - "type": "uint128" - }, - { - "internalType": "uint128", - "name": "amount1", - "type": "uint128" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "uint128", - "name": "amount0Requested", - "type": "uint128" - }, - { - "internalType": "uint128", - "name": "amount1Requested", - "type": "uint128" - } - ], - "name": "collectProtocol", - "outputs": [ - { - "internalType": "uint128", - "name": "amount0", - "type": "uint128" - }, - { - "internalType": "uint128", - "name": "amount1", - "type": "uint128" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "factory", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "fee", - "outputs": [ - { - "internalType": "uint24", - "name": "", - "type": "uint24" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "feeGrowthGlobal0X128", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "feeGrowthGlobal1X128", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount0", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amount1", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "flash", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "observationCardinalityNext", - "type": "uint16" - } - ], - "name": "increaseObservationCardinalityNext", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint160", - "name": "sqrtPriceX96", - "type": "uint160" - } - ], - "name": "initialize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "liquidity", - "outputs": [ - { - "internalType": "uint128", - "name": "", - "type": "uint128" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "maxLiquidityPerTick", - "outputs": [ - { - "internalType": "uint128", - "name": "", - "type": "uint128" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "int24", - "name": "tickLower", - "type": "int24" - }, - { - "internalType": "int24", - "name": "tickUpper", - "type": "int24" - }, - { - "internalType": "uint128", - "name": "amount", - "type": "uint128" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "mint", - "outputs": [ - { - "internalType": "uint256", - "name": "amount0", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amount1", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "index", - "type": "uint256" - } - ], - "name": "observations", - "outputs": [ - { - "internalType": "uint32", - "name": "blockTimestamp", - "type": "uint32" - }, - { - "internalType": "int56", - "name": "tickCumulative", - "type": "int56" - }, - { - "internalType": "uint160", - "name": "secondsPerLiquidityCumulativeX128", - "type": "uint160" - }, - { - "internalType": "bool", - "name": "initialized", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint32[]", - "name": "secondsAgos", - "type": "uint32[]" - } - ], - "name": "observe", - "outputs": [ - { - "internalType": "int56[]", - "name": "tickCumulatives", - "type": "int56[]" - }, - { - "internalType": "uint160[]", - "name": "secondsPerLiquidityCumulativeX128s", - "type": "uint160[]" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "key", - "type": "bytes32" - } - ], - "name": "positions", - "outputs": [ - { - "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": "protocolFees", - "outputs": [ - { - "internalType": "uint128", - "name": "token0", - "type": "uint128" - }, - { - "internalType": "uint128", - "name": "token1", - "type": "uint128" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint8", - "name": "feeProtocol0", - "type": "uint8" - }, - { - "internalType": "uint8", - "name": "feeProtocol1", - "type": "uint8" - } - ], - "name": "setFeeProtocol", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "slot0", - "outputs": [ - { - "internalType": "uint160", - "name": "sqrtPriceX96", - "type": "uint160" - }, - { - "internalType": "int24", - "name": "tick", - "type": "int24" - }, - { - "internalType": "uint16", - "name": "observationIndex", - "type": "uint16" - }, - { - "internalType": "uint16", - "name": "observationCardinality", - "type": "uint16" - }, - { - "internalType": "uint16", - "name": "observationCardinalityNext", - "type": "uint16" - }, - { - "internalType": "uint8", - "name": "feeProtocol", - "type": "uint8" - }, - { - "internalType": "bool", - "name": "unlocked", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "int24", - "name": "tickLower", - "type": "int24" - }, - { - "internalType": "int24", - "name": "tickUpper", - "type": "int24" - } - ], - "name": "snapshotCumulativesInside", - "outputs": [ - { - "internalType": "int56", - "name": "tickCumulativeInside", - "type": "int56" - }, - { - "internalType": "uint160", - "name": "secondsPerLiquidityInsideX128", - "type": "uint160" - }, - { - "internalType": "uint32", - "name": "secondsInside", - "type": "uint32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "bool", - "name": "zeroForOne", - "type": "bool" - }, - { - "internalType": "int256", - "name": "amountSpecified", - "type": "int256" - }, - { - "internalType": "uint160", - "name": "sqrtPriceLimitX96", - "type": "uint160" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "swap", - "outputs": [ - { - "internalType": "int256", - "name": "amount0", - "type": "int256" - }, - { - "internalType": "int256", - "name": "amount1", - "type": "int256" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "int16", - "name": "wordPosition", - "type": "int16" - } - ], - "name": "tickBitmap", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "tickSpacing", - "outputs": [ - { - "internalType": "int24", - "name": "", - "type": "int24" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "int24", - "name": "tick", - "type": "int24" - } - ], - "name": "ticks", - "outputs": [ - { - "internalType": "uint128", - "name": "liquidityGross", - "type": "uint128" - }, - { - "internalType": "int128", - "name": "liquidityNet", - "type": "int128" - }, - { - "internalType": "uint256", - "name": "feeGrowthOutside0X128", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "feeGrowthOutside1X128", - "type": "uint256" - }, - { - "internalType": "int56", - "name": "tickCumulativeOutside", - "type": "int56" - }, - { - "internalType": "uint160", - "name": "secondsPerLiquidityOutsideX128", - "type": "uint160" - }, - { - "internalType": "uint32", - "name": "secondsOutside", - "type": "uint32" - }, - { - "internalType": "bool", - "name": "initialized", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "token0", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "token1", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/artifacts/@uniswap/v3-core/contracts/interfaces/IUniswapV3PoolDeployer.sol/IUniswapV3PoolDeployer.dbg.json b/artifacts/@uniswap/v3-core/contracts/interfaces/IUniswapV3PoolDeployer.sol/IUniswapV3PoolDeployer.dbg.json deleted file mode 100644 index f6d3b80..0000000 --- a/artifacts/@uniswap/v3-core/contracts/interfaces/IUniswapV3PoolDeployer.sol/IUniswapV3PoolDeployer.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/f3d46276c3abf0612f2d14f482c05ecc.json" -} diff --git a/artifacts/@uniswap/v3-core/contracts/interfaces/IUniswapV3PoolDeployer.sol/IUniswapV3PoolDeployer.json b/artifacts/@uniswap/v3-core/contracts/interfaces/IUniswapV3PoolDeployer.sol/IUniswapV3PoolDeployer.json deleted file mode 100644 index 4bef218..0000000 --- a/artifacts/@uniswap/v3-core/contracts/interfaces/IUniswapV3PoolDeployer.sol/IUniswapV3PoolDeployer.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "IUniswapV3PoolDeployer", - "sourceName": "@uniswap/v3-core/contracts/interfaces/IUniswapV3PoolDeployer.sol", - "abi": [ - { - "inputs": [], - "name": "parameters", - "outputs": [ - { - "internalType": "address", - "name": "factory", - "type": "address" - }, - { - "internalType": "address", - "name": "token0", - "type": "address" - }, - { - "internalType": "address", - "name": "token1", - "type": "address" - }, - { - "internalType": "uint24", - "name": "fee", - "type": "uint24" - }, - { - "internalType": "int24", - "name": "tickSpacing", - "type": "int24" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/artifacts/@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3FlashCallback.sol/IUniswapV3FlashCallback.dbg.json b/artifacts/@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3FlashCallback.sol/IUniswapV3FlashCallback.dbg.json deleted file mode 100644 index c8cc934..0000000 --- a/artifacts/@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3FlashCallback.sol/IUniswapV3FlashCallback.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../../build-info/f3d46276c3abf0612f2d14f482c05ecc.json" -} diff --git a/artifacts/@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3FlashCallback.sol/IUniswapV3FlashCallback.json b/artifacts/@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3FlashCallback.sol/IUniswapV3FlashCallback.json deleted file mode 100644 index bf1eba3..0000000 --- a/artifacts/@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3FlashCallback.sol/IUniswapV3FlashCallback.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "IUniswapV3FlashCallback", - "sourceName": "@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3FlashCallback.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "uint256", - "name": "fee0", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "fee1", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "uniswapV3FlashCallback", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/artifacts/@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3MintCallback.sol/IUniswapV3MintCallback.dbg.json b/artifacts/@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3MintCallback.sol/IUniswapV3MintCallback.dbg.json deleted file mode 100644 index c8cc934..0000000 --- a/artifacts/@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3MintCallback.sol/IUniswapV3MintCallback.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../../build-info/f3d46276c3abf0612f2d14f482c05ecc.json" -} diff --git a/artifacts/@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3MintCallback.sol/IUniswapV3MintCallback.json b/artifacts/@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3MintCallback.sol/IUniswapV3MintCallback.json deleted file mode 100644 index 8fa110e..0000000 --- a/artifacts/@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3MintCallback.sol/IUniswapV3MintCallback.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "IUniswapV3MintCallback", - "sourceName": "@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3MintCallback.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "uint256", - "name": "amount0Owed", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amount1Owed", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "uniswapV3MintCallback", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/artifacts/@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol/IUniswapV3SwapCallback.dbg.json b/artifacts/@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol/IUniswapV3SwapCallback.dbg.json deleted file mode 100644 index c8cc934..0000000 --- a/artifacts/@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol/IUniswapV3SwapCallback.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../../build-info/f3d46276c3abf0612f2d14f482c05ecc.json" -} diff --git a/artifacts/@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol/IUniswapV3SwapCallback.json b/artifacts/@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol/IUniswapV3SwapCallback.json deleted file mode 100644 index 0f85e50..0000000 --- a/artifacts/@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol/IUniswapV3SwapCallback.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "IUniswapV3SwapCallback", - "sourceName": "@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "int256", - "name": "amount0Delta", - "type": "int256" - }, - { - "internalType": "int256", - "name": "amount1Delta", - "type": "int256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "uniswapV3SwapCallback", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/artifacts/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol/IUniswapV3PoolActions.dbg.json b/artifacts/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol/IUniswapV3PoolActions.dbg.json deleted file mode 100644 index c8cc934..0000000 --- a/artifacts/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol/IUniswapV3PoolActions.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../../build-info/f3d46276c3abf0612f2d14f482c05ecc.json" -} diff --git a/artifacts/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol/IUniswapV3PoolActions.json b/artifacts/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol/IUniswapV3PoolActions.json deleted file mode 100644 index ec6c045..0000000 --- a/artifacts/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol/IUniswapV3PoolActions.json +++ /dev/null @@ -1,231 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "IUniswapV3PoolActions", - "sourceName": "@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "int24", - "name": "tickLower", - "type": "int24" - }, - { - "internalType": "int24", - "name": "tickUpper", - "type": "int24" - }, - { - "internalType": "uint128", - "name": "amount", - "type": "uint128" - } - ], - "name": "burn", - "outputs": [ - { - "internalType": "uint256", - "name": "amount0", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amount1", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "int24", - "name": "tickLower", - "type": "int24" - }, - { - "internalType": "int24", - "name": "tickUpper", - "type": "int24" - }, - { - "internalType": "uint128", - "name": "amount0Requested", - "type": "uint128" - }, - { - "internalType": "uint128", - "name": "amount1Requested", - "type": "uint128" - } - ], - "name": "collect", - "outputs": [ - { - "internalType": "uint128", - "name": "amount0", - "type": "uint128" - }, - { - "internalType": "uint128", - "name": "amount1", - "type": "uint128" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount0", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amount1", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "flash", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "observationCardinalityNext", - "type": "uint16" - } - ], - "name": "increaseObservationCardinalityNext", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint160", - "name": "sqrtPriceX96", - "type": "uint160" - } - ], - "name": "initialize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "int24", - "name": "tickLower", - "type": "int24" - }, - { - "internalType": "int24", - "name": "tickUpper", - "type": "int24" - }, - { - "internalType": "uint128", - "name": "amount", - "type": "uint128" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "mint", - "outputs": [ - { - "internalType": "uint256", - "name": "amount0", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amount1", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "bool", - "name": "zeroForOne", - "type": "bool" - }, - { - "internalType": "int256", - "name": "amountSpecified", - "type": "int256" - }, - { - "internalType": "uint160", - "name": "sqrtPriceLimitX96", - "type": "uint160" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "swap", - "outputs": [ - { - "internalType": "int256", - "name": "amount0", - "type": "int256" - }, - { - "internalType": "int256", - "name": "amount1", - "type": "int256" - } - ], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/artifacts/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol/IUniswapV3PoolDerivedState.dbg.json b/artifacts/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol/IUniswapV3PoolDerivedState.dbg.json deleted file mode 100644 index c8cc934..0000000 --- a/artifacts/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol/IUniswapV3PoolDerivedState.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../../build-info/f3d46276c3abf0612f2d14f482c05ecc.json" -} diff --git a/artifacts/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol/IUniswapV3PoolDerivedState.json b/artifacts/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol/IUniswapV3PoolDerivedState.json deleted file mode 100644 index a2ce6a8..0000000 --- a/artifacts/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol/IUniswapV3PoolDerivedState.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "IUniswapV3PoolDerivedState", - "sourceName": "@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "uint32[]", - "name": "secondsAgos", - "type": "uint32[]" - } - ], - "name": "observe", - "outputs": [ - { - "internalType": "int56[]", - "name": "tickCumulatives", - "type": "int56[]" - }, - { - "internalType": "uint160[]", - "name": "secondsPerLiquidityCumulativeX128s", - "type": "uint160[]" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "int24", - "name": "tickLower", - "type": "int24" - }, - { - "internalType": "int24", - "name": "tickUpper", - "type": "int24" - } - ], - "name": "snapshotCumulativesInside", - "outputs": [ - { - "internalType": "int56", - "name": "tickCumulativeInside", - "type": "int56" - }, - { - "internalType": "uint160", - "name": "secondsPerLiquidityInsideX128", - "type": "uint160" - }, - { - "internalType": "uint32", - "name": "secondsInside", - "type": "uint32" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/artifacts/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol/IUniswapV3PoolEvents.dbg.json b/artifacts/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol/IUniswapV3PoolEvents.dbg.json deleted file mode 100644 index c8cc934..0000000 --- a/artifacts/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol/IUniswapV3PoolEvents.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../../build-info/f3d46276c3abf0612f2d14f482c05ecc.json" -} diff --git a/artifacts/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol/IUniswapV3PoolEvents.json b/artifacts/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol/IUniswapV3PoolEvents.json deleted file mode 100644 index f8edb1e..0000000 --- a/artifacts/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol/IUniswapV3PoolEvents.json +++ /dev/null @@ -1,338 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "IUniswapV3PoolEvents", - "sourceName": "@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "int24", - "name": "tickLower", - "type": "int24" - }, - { - "indexed": true, - "internalType": "int24", - "name": "tickUpper", - "type": "int24" - }, - { - "indexed": false, - "internalType": "uint128", - "name": "amount", - "type": "uint128" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount0", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount1", - "type": "uint256" - } - ], - "name": "Burn", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "indexed": true, - "internalType": "int24", - "name": "tickLower", - "type": "int24" - }, - { - "indexed": true, - "internalType": "int24", - "name": "tickUpper", - "type": "int24" - }, - { - "indexed": false, - "internalType": "uint128", - "name": "amount0", - "type": "uint128" - }, - { - "indexed": false, - "internalType": "uint128", - "name": "amount1", - "type": "uint128" - } - ], - "name": "Collect", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint128", - "name": "amount0", - "type": "uint128" - }, - { - "indexed": false, - "internalType": "uint128", - "name": "amount1", - "type": "uint128" - } - ], - "name": "CollectProtocol", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount0", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount1", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "paid0", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "paid1", - "type": "uint256" - } - ], - "name": "Flash", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint16", - "name": "observationCardinalityNextOld", - "type": "uint16" - }, - { - "indexed": false, - "internalType": "uint16", - "name": "observationCardinalityNextNew", - "type": "uint16" - } - ], - "name": "IncreaseObservationCardinalityNext", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint160", - "name": "sqrtPriceX96", - "type": "uint160" - }, - { - "indexed": false, - "internalType": "int24", - "name": "tick", - "type": "int24" - } - ], - "name": "Initialize", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "int24", - "name": "tickLower", - "type": "int24" - }, - { - "indexed": true, - "internalType": "int24", - "name": "tickUpper", - "type": "int24" - }, - { - "indexed": false, - "internalType": "uint128", - "name": "amount", - "type": "uint128" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount0", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount1", - "type": "uint256" - } - ], - "name": "Mint", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint8", - "name": "feeProtocol0Old", - "type": "uint8" - }, - { - "indexed": false, - "internalType": "uint8", - "name": "feeProtocol1Old", - "type": "uint8" - }, - { - "indexed": false, - "internalType": "uint8", - "name": "feeProtocol0New", - "type": "uint8" - }, - { - "indexed": false, - "internalType": "uint8", - "name": "feeProtocol1New", - "type": "uint8" - } - ], - "name": "SetFeeProtocol", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "indexed": false, - "internalType": "int256", - "name": "amount0", - "type": "int256" - }, - { - "indexed": false, - "internalType": "int256", - "name": "amount1", - "type": "int256" - }, - { - "indexed": false, - "internalType": "uint160", - "name": "sqrtPriceX96", - "type": "uint160" - }, - { - "indexed": false, - "internalType": "uint128", - "name": "liquidity", - "type": "uint128" - }, - { - "indexed": false, - "internalType": "int24", - "name": "tick", - "type": "int24" - } - ], - "name": "Swap", - "type": "event" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/artifacts/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol/IUniswapV3PoolImmutables.dbg.json b/artifacts/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol/IUniswapV3PoolImmutables.dbg.json deleted file mode 100644 index c8cc934..0000000 --- a/artifacts/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol/IUniswapV3PoolImmutables.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../../build-info/f3d46276c3abf0612f2d14f482c05ecc.json" -} diff --git a/artifacts/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol/IUniswapV3PoolImmutables.json b/artifacts/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol/IUniswapV3PoolImmutables.json deleted file mode 100644 index 3d3a5ff..0000000 --- a/artifacts/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol/IUniswapV3PoolImmutables.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "IUniswapV3PoolImmutables", - "sourceName": "@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol", - "abi": [ - { - "inputs": [], - "name": "factory", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "fee", - "outputs": [ - { - "internalType": "uint24", - "name": "", - "type": "uint24" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "maxLiquidityPerTick", - "outputs": [ - { - "internalType": "uint128", - "name": "", - "type": "uint128" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "tickSpacing", - "outputs": [ - { - "internalType": "int24", - "name": "", - "type": "int24" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "token0", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "token1", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/artifacts/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol/IUniswapV3PoolOwnerActions.dbg.json b/artifacts/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol/IUniswapV3PoolOwnerActions.dbg.json deleted file mode 100644 index c8cc934..0000000 --- a/artifacts/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol/IUniswapV3PoolOwnerActions.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../../build-info/f3d46276c3abf0612f2d14f482c05ecc.json" -} diff --git a/artifacts/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol/IUniswapV3PoolOwnerActions.json b/artifacts/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol/IUniswapV3PoolOwnerActions.json deleted file mode 100644 index 5dc1e62..0000000 --- a/artifacts/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol/IUniswapV3PoolOwnerActions.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "IUniswapV3PoolOwnerActions", - "sourceName": "@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "uint128", - "name": "amount0Requested", - "type": "uint128" - }, - { - "internalType": "uint128", - "name": "amount1Requested", - "type": "uint128" - } - ], - "name": "collectProtocol", - "outputs": [ - { - "internalType": "uint128", - "name": "amount0", - "type": "uint128" - }, - { - "internalType": "uint128", - "name": "amount1", - "type": "uint128" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint8", - "name": "feeProtocol0", - "type": "uint8" - }, - { - "internalType": "uint8", - "name": "feeProtocol1", - "type": "uint8" - } - ], - "name": "setFeeProtocol", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/artifacts/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol/IUniswapV3PoolState.dbg.json b/artifacts/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol/IUniswapV3PoolState.dbg.json deleted file mode 100644 index c8cc934..0000000 --- a/artifacts/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol/IUniswapV3PoolState.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../../build-info/f3d46276c3abf0612f2d14f482c05ecc.json" -} diff --git a/artifacts/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol/IUniswapV3PoolState.json b/artifacts/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol/IUniswapV3PoolState.json deleted file mode 100644 index a94ddad..0000000 --- a/artifacts/@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol/IUniswapV3PoolState.json +++ /dev/null @@ -1,257 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "IUniswapV3PoolState", - "sourceName": "@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol", - "abi": [ - { - "inputs": [], - "name": "feeGrowthGlobal0X128", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "feeGrowthGlobal1X128", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "liquidity", - "outputs": [ - { - "internalType": "uint128", - "name": "", - "type": "uint128" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "index", - "type": "uint256" - } - ], - "name": "observations", - "outputs": [ - { - "internalType": "uint32", - "name": "blockTimestamp", - "type": "uint32" - }, - { - "internalType": "int56", - "name": "tickCumulative", - "type": "int56" - }, - { - "internalType": "uint160", - "name": "secondsPerLiquidityCumulativeX128", - "type": "uint160" - }, - { - "internalType": "bool", - "name": "initialized", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "key", - "type": "bytes32" - } - ], - "name": "positions", - "outputs": [ - { - "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": "protocolFees", - "outputs": [ - { - "internalType": "uint128", - "name": "token0", - "type": "uint128" - }, - { - "internalType": "uint128", - "name": "token1", - "type": "uint128" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "slot0", - "outputs": [ - { - "internalType": "uint160", - "name": "sqrtPriceX96", - "type": "uint160" - }, - { - "internalType": "int24", - "name": "tick", - "type": "int24" - }, - { - "internalType": "uint16", - "name": "observationIndex", - "type": "uint16" - }, - { - "internalType": "uint16", - "name": "observationCardinality", - "type": "uint16" - }, - { - "internalType": "uint16", - "name": "observationCardinalityNext", - "type": "uint16" - }, - { - "internalType": "uint8", - "name": "feeProtocol", - "type": "uint8" - }, - { - "internalType": "bool", - "name": "unlocked", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "int16", - "name": "wordPosition", - "type": "int16" - } - ], - "name": "tickBitmap", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "int24", - "name": "tick", - "type": "int24" - } - ], - "name": "ticks", - "outputs": [ - { - "internalType": "uint128", - "name": "liquidityGross", - "type": "uint128" - }, - { - "internalType": "int128", - "name": "liquidityNet", - "type": "int128" - }, - { - "internalType": "uint256", - "name": "feeGrowthOutside0X128", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "feeGrowthOutside1X128", - "type": "uint256" - }, - { - "internalType": "int56", - "name": "tickCumulativeOutside", - "type": "int56" - }, - { - "internalType": "uint160", - "name": "secondsPerLiquidityOutsideX128", - "type": "uint160" - }, - { - "internalType": "uint32", - "name": "secondsOutside", - "type": "uint32" - }, - { - "internalType": "bool", - "name": "initialized", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/artifacts/@uniswap/v3-core/contracts/libraries/BitMath.sol/BitMath.dbg.json b/artifacts/@uniswap/v3-core/contracts/libraries/BitMath.sol/BitMath.dbg.json deleted file mode 100644 index f6d3b80..0000000 --- a/artifacts/@uniswap/v3-core/contracts/libraries/BitMath.sol/BitMath.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/f3d46276c3abf0612f2d14f482c05ecc.json" -} diff --git a/artifacts/@uniswap/v3-core/contracts/libraries/BitMath.sol/BitMath.json b/artifacts/@uniswap/v3-core/contracts/libraries/BitMath.sol/BitMath.json deleted file mode 100644 index daf543c..0000000 --- a/artifacts/@uniswap/v3-core/contracts/libraries/BitMath.sol/BitMath.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "BitMath", - "sourceName": "@uniswap/v3-core/contracts/libraries/BitMath.sol", - "abi": [], - "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f8c75e03b5604c379c71e11b1ca0ba4ce034f7b7fe971f4b9ec18ef870ab42b264736f6c63430007060033", - "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f8c75e03b5604c379c71e11b1ca0ba4ce034f7b7fe971f4b9ec18ef870ab42b264736f6c63430007060033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/artifacts/@uniswap/v3-core/contracts/libraries/FixedPoint128.sol/FixedPoint128.dbg.json b/artifacts/@uniswap/v3-core/contracts/libraries/FixedPoint128.sol/FixedPoint128.dbg.json deleted file mode 100644 index f6d3b80..0000000 --- a/artifacts/@uniswap/v3-core/contracts/libraries/FixedPoint128.sol/FixedPoint128.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/f3d46276c3abf0612f2d14f482c05ecc.json" -} diff --git a/artifacts/@uniswap/v3-core/contracts/libraries/FixedPoint128.sol/FixedPoint128.json b/artifacts/@uniswap/v3-core/contracts/libraries/FixedPoint128.sol/FixedPoint128.json deleted file mode 100644 index 4cd440b..0000000 --- a/artifacts/@uniswap/v3-core/contracts/libraries/FixedPoint128.sol/FixedPoint128.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "FixedPoint128", - "sourceName": "@uniswap/v3-core/contracts/libraries/FixedPoint128.sol", - "abi": [], - "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206673db6571080c62ab11c1f166a59c7925913f6a8faba2577e9bcdf72336c0c964736f6c63430007060033", - "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206673db6571080c62ab11c1f166a59c7925913f6a8faba2577e9bcdf72336c0c964736f6c63430007060033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/artifacts/@uniswap/v3-core/contracts/libraries/FixedPoint96.sol/FixedPoint96.dbg.json b/artifacts/@uniswap/v3-core/contracts/libraries/FixedPoint96.sol/FixedPoint96.dbg.json deleted file mode 100644 index f6d3b80..0000000 --- a/artifacts/@uniswap/v3-core/contracts/libraries/FixedPoint96.sol/FixedPoint96.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/f3d46276c3abf0612f2d14f482c05ecc.json" -} diff --git a/artifacts/@uniswap/v3-core/contracts/libraries/FixedPoint96.sol/FixedPoint96.json b/artifacts/@uniswap/v3-core/contracts/libraries/FixedPoint96.sol/FixedPoint96.json deleted file mode 100644 index 36aefa6..0000000 --- a/artifacts/@uniswap/v3-core/contracts/libraries/FixedPoint96.sol/FixedPoint96.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "FixedPoint96", - "sourceName": "@uniswap/v3-core/contracts/libraries/FixedPoint96.sol", - "abi": [], - "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220224d69cdd8c99cf21203c726963b820ff2f88e39d562bba2baa7ea37fec5acec64736f6c63430007060033", - "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220224d69cdd8c99cf21203c726963b820ff2f88e39d562bba2baa7ea37fec5acec64736f6c63430007060033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/artifacts/@uniswap/v3-core/contracts/libraries/FullMath.sol/FullMath.dbg.json b/artifacts/@uniswap/v3-core/contracts/libraries/FullMath.sol/FullMath.dbg.json deleted file mode 100644 index f6d3b80..0000000 --- a/artifacts/@uniswap/v3-core/contracts/libraries/FullMath.sol/FullMath.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/f3d46276c3abf0612f2d14f482c05ecc.json" -} diff --git a/artifacts/@uniswap/v3-core/contracts/libraries/FullMath.sol/FullMath.json b/artifacts/@uniswap/v3-core/contracts/libraries/FullMath.sol/FullMath.json deleted file mode 100644 index 65ca0b5..0000000 --- a/artifacts/@uniswap/v3-core/contracts/libraries/FullMath.sol/FullMath.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "FullMath", - "sourceName": "@uniswap/v3-core/contracts/libraries/FullMath.sol", - "abi": [], - "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220323ff6bdb54ff8d53ec20ad8023e1a8adc2051b6b0d339090da4e47f0c621c6a64736f6c63430007060033", - "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220323ff6bdb54ff8d53ec20ad8023e1a8adc2051b6b0d339090da4e47f0c621c6a64736f6c63430007060033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/artifacts/@uniswap/v3-core/contracts/libraries/LiquidityMath.sol/LiquidityMath.dbg.json b/artifacts/@uniswap/v3-core/contracts/libraries/LiquidityMath.sol/LiquidityMath.dbg.json deleted file mode 100644 index f6d3b80..0000000 --- a/artifacts/@uniswap/v3-core/contracts/libraries/LiquidityMath.sol/LiquidityMath.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/f3d46276c3abf0612f2d14f482c05ecc.json" -} diff --git a/artifacts/@uniswap/v3-core/contracts/libraries/LiquidityMath.sol/LiquidityMath.json b/artifacts/@uniswap/v3-core/contracts/libraries/LiquidityMath.sol/LiquidityMath.json deleted file mode 100644 index 46474b7..0000000 --- a/artifacts/@uniswap/v3-core/contracts/libraries/LiquidityMath.sol/LiquidityMath.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "LiquidityMath", - "sourceName": "@uniswap/v3-core/contracts/libraries/LiquidityMath.sol", - "abi": [], - "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122053b24d5bfb1de2656040b0d933b2ce920c591ba235be6ed8f59e3e0ddec8ad5664736f6c63430007060033", - "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122053b24d5bfb1de2656040b0d933b2ce920c591ba235be6ed8f59e3e0ddec8ad5664736f6c63430007060033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/artifacts/@uniswap/v3-core/contracts/libraries/LowGasSafeMath.sol/LowGasSafeMath.dbg.json b/artifacts/@uniswap/v3-core/contracts/libraries/LowGasSafeMath.sol/LowGasSafeMath.dbg.json deleted file mode 100644 index f6d3b80..0000000 --- a/artifacts/@uniswap/v3-core/contracts/libraries/LowGasSafeMath.sol/LowGasSafeMath.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/f3d46276c3abf0612f2d14f482c05ecc.json" -} diff --git a/artifacts/@uniswap/v3-core/contracts/libraries/LowGasSafeMath.sol/LowGasSafeMath.json b/artifacts/@uniswap/v3-core/contracts/libraries/LowGasSafeMath.sol/LowGasSafeMath.json deleted file mode 100644 index 25922c8..0000000 --- a/artifacts/@uniswap/v3-core/contracts/libraries/LowGasSafeMath.sol/LowGasSafeMath.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "LowGasSafeMath", - "sourceName": "@uniswap/v3-core/contracts/libraries/LowGasSafeMath.sol", - "abi": [], - "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203357b184c764415d0bd12d737469bf0c6cfdb2454a1853378ef94ab9d4fd22cb64736f6c63430007060033", - "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203357b184c764415d0bd12d737469bf0c6cfdb2454a1853378ef94ab9d4fd22cb64736f6c63430007060033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/artifacts/@uniswap/v3-core/contracts/libraries/Oracle.sol/Oracle.dbg.json b/artifacts/@uniswap/v3-core/contracts/libraries/Oracle.sol/Oracle.dbg.json deleted file mode 100644 index f6d3b80..0000000 --- a/artifacts/@uniswap/v3-core/contracts/libraries/Oracle.sol/Oracle.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/f3d46276c3abf0612f2d14f482c05ecc.json" -} diff --git a/artifacts/@uniswap/v3-core/contracts/libraries/Oracle.sol/Oracle.json b/artifacts/@uniswap/v3-core/contracts/libraries/Oracle.sol/Oracle.json deleted file mode 100644 index a7fbafe..0000000 --- a/artifacts/@uniswap/v3-core/contracts/libraries/Oracle.sol/Oracle.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "Oracle", - "sourceName": "@uniswap/v3-core/contracts/libraries/Oracle.sol", - "abi": [], - "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e6ea47f3e4efe4ab8f3d8bd6583aab603f82fadaccf81658512a60c072f4c1ea64736f6c63430007060033", - "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e6ea47f3e4efe4ab8f3d8bd6583aab603f82fadaccf81658512a60c072f4c1ea64736f6c63430007060033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/artifacts/@uniswap/v3-core/contracts/libraries/Position.sol/Position.dbg.json b/artifacts/@uniswap/v3-core/contracts/libraries/Position.sol/Position.dbg.json deleted file mode 100644 index f6d3b80..0000000 --- a/artifacts/@uniswap/v3-core/contracts/libraries/Position.sol/Position.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/f3d46276c3abf0612f2d14f482c05ecc.json" -} diff --git a/artifacts/@uniswap/v3-core/contracts/libraries/Position.sol/Position.json b/artifacts/@uniswap/v3-core/contracts/libraries/Position.sol/Position.json deleted file mode 100644 index 0a6ae33..0000000 --- a/artifacts/@uniswap/v3-core/contracts/libraries/Position.sol/Position.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "Position", - "sourceName": "@uniswap/v3-core/contracts/libraries/Position.sol", - "abi": [], - "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122079c73334e0d65dbc58f33f19279ebe836b087abd845d0118dc6faaebfc52673064736f6c63430007060033", - "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122079c73334e0d65dbc58f33f19279ebe836b087abd845d0118dc6faaebfc52673064736f6c63430007060033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/artifacts/@uniswap/v3-core/contracts/libraries/SafeCast.sol/SafeCast.dbg.json b/artifacts/@uniswap/v3-core/contracts/libraries/SafeCast.sol/SafeCast.dbg.json deleted file mode 100644 index f6d3b80..0000000 --- a/artifacts/@uniswap/v3-core/contracts/libraries/SafeCast.sol/SafeCast.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/f3d46276c3abf0612f2d14f482c05ecc.json" -} diff --git a/artifacts/@uniswap/v3-core/contracts/libraries/SafeCast.sol/SafeCast.json b/artifacts/@uniswap/v3-core/contracts/libraries/SafeCast.sol/SafeCast.json deleted file mode 100644 index d6ebe80..0000000 --- a/artifacts/@uniswap/v3-core/contracts/libraries/SafeCast.sol/SafeCast.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "SafeCast", - "sourceName": "@uniswap/v3-core/contracts/libraries/SafeCast.sol", - "abi": [], - "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208d8da890114d70f34a49adf57e6fa6936687dc15b694fdb3f57c59954c9f86c664736f6c63430007060033", - "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208d8da890114d70f34a49adf57e6fa6936687dc15b694fdb3f57c59954c9f86c664736f6c63430007060033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/artifacts/@uniswap/v3-core/contracts/libraries/SqrtPriceMath.sol/SqrtPriceMath.dbg.json b/artifacts/@uniswap/v3-core/contracts/libraries/SqrtPriceMath.sol/SqrtPriceMath.dbg.json deleted file mode 100644 index f6d3b80..0000000 --- a/artifacts/@uniswap/v3-core/contracts/libraries/SqrtPriceMath.sol/SqrtPriceMath.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/f3d46276c3abf0612f2d14f482c05ecc.json" -} diff --git a/artifacts/@uniswap/v3-core/contracts/libraries/SqrtPriceMath.sol/SqrtPriceMath.json b/artifacts/@uniswap/v3-core/contracts/libraries/SqrtPriceMath.sol/SqrtPriceMath.json deleted file mode 100644 index 9592bc4..0000000 --- a/artifacts/@uniswap/v3-core/contracts/libraries/SqrtPriceMath.sol/SqrtPriceMath.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "SqrtPriceMath", - "sourceName": "@uniswap/v3-core/contracts/libraries/SqrtPriceMath.sol", - "abi": [], - "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220cbfbea9f79e0651104f6cff810c4225254aa4bbcf2a62a698ac0ec1805ff2c5e64736f6c63430007060033", - "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220cbfbea9f79e0651104f6cff810c4225254aa4bbcf2a62a698ac0ec1805ff2c5e64736f6c63430007060033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/artifacts/@uniswap/v3-core/contracts/libraries/SwapMath.sol/SwapMath.dbg.json b/artifacts/@uniswap/v3-core/contracts/libraries/SwapMath.sol/SwapMath.dbg.json deleted file mode 100644 index f6d3b80..0000000 --- a/artifacts/@uniswap/v3-core/contracts/libraries/SwapMath.sol/SwapMath.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/f3d46276c3abf0612f2d14f482c05ecc.json" -} diff --git a/artifacts/@uniswap/v3-core/contracts/libraries/SwapMath.sol/SwapMath.json b/artifacts/@uniswap/v3-core/contracts/libraries/SwapMath.sol/SwapMath.json deleted file mode 100644 index f2a1061..0000000 --- a/artifacts/@uniswap/v3-core/contracts/libraries/SwapMath.sol/SwapMath.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "SwapMath", - "sourceName": "@uniswap/v3-core/contracts/libraries/SwapMath.sol", - "abi": [], - "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208070a0f66e4b820cf42dd587fa3b58ccad8172dba62bfd7cf8717d1afc5091d164736f6c63430007060033", - "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208070a0f66e4b820cf42dd587fa3b58ccad8172dba62bfd7cf8717d1afc5091d164736f6c63430007060033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/artifacts/@uniswap/v3-core/contracts/libraries/Tick.sol/Tick.dbg.json b/artifacts/@uniswap/v3-core/contracts/libraries/Tick.sol/Tick.dbg.json deleted file mode 100644 index f6d3b80..0000000 --- a/artifacts/@uniswap/v3-core/contracts/libraries/Tick.sol/Tick.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/f3d46276c3abf0612f2d14f482c05ecc.json" -} diff --git a/artifacts/@uniswap/v3-core/contracts/libraries/Tick.sol/Tick.json b/artifacts/@uniswap/v3-core/contracts/libraries/Tick.sol/Tick.json deleted file mode 100644 index fff5c7e..0000000 --- a/artifacts/@uniswap/v3-core/contracts/libraries/Tick.sol/Tick.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "Tick", - "sourceName": "@uniswap/v3-core/contracts/libraries/Tick.sol", - "abi": [], - "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202f0c927a1b0f3e2e79b8ce08764f908ec645bac859a322dd0516560a30da911264736f6c63430007060033", - "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202f0c927a1b0f3e2e79b8ce08764f908ec645bac859a322dd0516560a30da911264736f6c63430007060033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/artifacts/@uniswap/v3-core/contracts/libraries/TickBitmap.sol/TickBitmap.dbg.json b/artifacts/@uniswap/v3-core/contracts/libraries/TickBitmap.sol/TickBitmap.dbg.json deleted file mode 100644 index f6d3b80..0000000 --- a/artifacts/@uniswap/v3-core/contracts/libraries/TickBitmap.sol/TickBitmap.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/f3d46276c3abf0612f2d14f482c05ecc.json" -} diff --git a/artifacts/@uniswap/v3-core/contracts/libraries/TickBitmap.sol/TickBitmap.json b/artifacts/@uniswap/v3-core/contracts/libraries/TickBitmap.sol/TickBitmap.json deleted file mode 100644 index c4c25aa..0000000 --- a/artifacts/@uniswap/v3-core/contracts/libraries/TickBitmap.sol/TickBitmap.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "TickBitmap", - "sourceName": "@uniswap/v3-core/contracts/libraries/TickBitmap.sol", - "abi": [], - "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220350830785ee455d7102d09291f774754530cb1d9a0664728ce396863e0e6532964736f6c63430007060033", - "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220350830785ee455d7102d09291f774754530cb1d9a0664728ce396863e0e6532964736f6c63430007060033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/artifacts/@uniswap/v3-core/contracts/libraries/TickMath.sol/TickMath.dbg.json b/artifacts/@uniswap/v3-core/contracts/libraries/TickMath.sol/TickMath.dbg.json deleted file mode 100644 index f6d3b80..0000000 --- a/artifacts/@uniswap/v3-core/contracts/libraries/TickMath.sol/TickMath.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/f3d46276c3abf0612f2d14f482c05ecc.json" -} diff --git a/artifacts/@uniswap/v3-core/contracts/libraries/TickMath.sol/TickMath.json b/artifacts/@uniswap/v3-core/contracts/libraries/TickMath.sol/TickMath.json deleted file mode 100644 index c7f6e2f..0000000 --- a/artifacts/@uniswap/v3-core/contracts/libraries/TickMath.sol/TickMath.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "TickMath", - "sourceName": "@uniswap/v3-core/contracts/libraries/TickMath.sol", - "abi": [], - "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203a4942a5d8ef6f36c092aabf5e62ffe9922806a00642e7587fa40de9f7d896d464736f6c63430007060033", - "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203a4942a5d8ef6f36c092aabf5e62ffe9922806a00642e7587fa40de9f7d896d464736f6c63430007060033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/artifacts/@uniswap/v3-core/contracts/libraries/TransferHelper.sol/TransferHelper.dbg.json b/artifacts/@uniswap/v3-core/contracts/libraries/TransferHelper.sol/TransferHelper.dbg.json deleted file mode 100644 index f6d3b80..0000000 --- a/artifacts/@uniswap/v3-core/contracts/libraries/TransferHelper.sol/TransferHelper.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/f3d46276c3abf0612f2d14f482c05ecc.json" -} diff --git a/artifacts/@uniswap/v3-core/contracts/libraries/TransferHelper.sol/TransferHelper.json b/artifacts/@uniswap/v3-core/contracts/libraries/TransferHelper.sol/TransferHelper.json deleted file mode 100644 index 89a8179..0000000 --- a/artifacts/@uniswap/v3-core/contracts/libraries/TransferHelper.sol/TransferHelper.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "TransferHelper", - "sourceName": "@uniswap/v3-core/contracts/libraries/TransferHelper.sol", - "abi": [], - "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220317791c5102593efdbaf0a6e747cf1f06dfd1fb8726a7912cd51c74d5e66cabc64736f6c63430007060033", - "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220317791c5102593efdbaf0a6e747cf1f06dfd1fb8726a7912cd51c74d5e66cabc64736f6c63430007060033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/artifacts/@uniswap/v3-core/contracts/libraries/UnsafeMath.sol/UnsafeMath.dbg.json b/artifacts/@uniswap/v3-core/contracts/libraries/UnsafeMath.sol/UnsafeMath.dbg.json deleted file mode 100644 index f6d3b80..0000000 --- a/artifacts/@uniswap/v3-core/contracts/libraries/UnsafeMath.sol/UnsafeMath.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../../build-info/f3d46276c3abf0612f2d14f482c05ecc.json" -} diff --git a/artifacts/@uniswap/v3-core/contracts/libraries/UnsafeMath.sol/UnsafeMath.json b/artifacts/@uniswap/v3-core/contracts/libraries/UnsafeMath.sol/UnsafeMath.json deleted file mode 100644 index 9cfc9b5..0000000 --- a/artifacts/@uniswap/v3-core/contracts/libraries/UnsafeMath.sol/UnsafeMath.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "UnsafeMath", - "sourceName": "@uniswap/v3-core/contracts/libraries/UnsafeMath.sol", - "abi": [], - "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201688abb6ab30b6d7da362591fc0da78c587b0d378a6ef34c9ded2b2337b37e7964736f6c63430007060033", - "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201688abb6ab30b6d7da362591fc0da78c587b0d378a6ef34c9ded2b2337b37e7964736f6c63430007060033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/artifacts/build-info/f3d46276c3abf0612f2d14f482c05ecc.json b/artifacts/build-info/f3d46276c3abf0612f2d14f482c05ecc.json deleted file mode 100644 index 58875e7..0000000 --- a/artifacts/build-info/f3d46276c3abf0612f2d14f482c05ecc.json +++ /dev/null @@ -1,151557 +0,0 @@ -{ - "id": "f3d46276c3abf0612f2d14f482c05ecc", - "_format": "hh-sol-build-info-1", - "solcVersion": "0.7.6", - "solcLongVersion": "0.7.6+commit.7338295f", - "input": { - "language": "Solidity", - "sources": { - "contracts/BandPriceFeed.sol": { - "content": "// SPDX-License-Identifier: MIT License\npragma solidity 0.7.6;\npragma experimental ABIEncoderV2;\n\nimport { Address } from \"@openzeppelin/contracts/utils/Address.sol\";\nimport { BlockContext } from \"./base/BlockContext.sol\";\nimport { IPriceFeed } from \"./interface/IPriceFeed.sol\";\nimport { IStdReference } from \"./interface/bandProtocol/IStdReference.sol\";\nimport { CachedTwap } from \"./twap/CachedTwap.sol\";\n\ncontract BandPriceFeed is IPriceFeed, BlockContext, CachedTwap {\n using Address for address;\n\n //\n // STATE\n //\n string public constant QUOTE_ASSET = \"USD\";\n\n string public baseAsset;\n IStdReference public stdRef;\n\n //\n // EXTERNAL NON-VIEW\n //\n\n constructor(\n IStdReference stdRefArg,\n string memory baseAssetArg,\n uint80 cacheTwapInterval\n ) CachedTwap(cacheTwapInterval) {\n // BPF_ANC: Reference address is not contract\n require(address(stdRefArg).isContract(), \"BPF_ANC\");\n\n stdRef = stdRefArg;\n baseAsset = baseAssetArg;\n }\n\n /// @dev anyone can help update it.\n function update() external {\n IStdReference.ReferenceData memory bandData = _getReferenceData();\n _update(bandData.rate, bandData.lastUpdatedBase);\n }\n\n function cacheTwap(uint256 interval) external override returns (uint256) {\n IStdReference.ReferenceData memory latestBandData = _getReferenceData();\n if (interval == 0) {\n return latestBandData.rate;\n }\n return _cacheTwap(interval, latestBandData.rate, latestBandData.lastUpdatedBase);\n }\n\n //\n // EXTERNAL VIEW\n //\n\n function getPrice(uint256 interval) public view override returns (uint256) {\n IStdReference.ReferenceData memory latestBandData = _getReferenceData();\n if (interval == 0) {\n return latestBandData.rate;\n }\n return _getCachedTwap(interval, latestBandData.rate, latestBandData.lastUpdatedBase);\n }\n\n //\n // EXTERNAL PURE\n //\n\n function decimals() external pure override returns (uint8) {\n // We assume Band Protocol always has 18 decimals\n // https://docs.bandchain.org/band-standard-dataset/using-band-dataset/using-band-dataset-evm.html\n return 18;\n }\n\n //\n // INTERNAL VIEW\n //\n\n function _getReferenceData() internal view returns (IStdReference.ReferenceData memory) {\n IStdReference.ReferenceData memory bandData = stdRef.getReferenceData(baseAsset, QUOTE_ASSET);\n // BPF_TQZ: timestamp for quote is zero\n require(bandData.lastUpdatedQuote > 0, \"BPF_TQZ\");\n // BPF_TBZ: timestamp for base is zero\n require(bandData.lastUpdatedBase > 0, \"BPF_TBZ\");\n // BPF_IP: invalid price\n require(bandData.rate > 0, \"BPF_IP\");\n\n return bandData;\n }\n}\n" - }, - "@openzeppelin/contracts/utils/Address.sol": { - "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.6.2 <0.8.0;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n /**\n * @dev Returns true if `account` is a contract.\n *\n * [IMPORTANT]\n * ====\n * It is unsafe to assume that an address for which this function returns\n * false is an externally-owned account (EOA) and not a contract.\n *\n * Among others, `isContract` will return false for the following\n * types of addresses:\n *\n * - an externally-owned account\n * - a contract in construction\n * - an address where a contract will be created\n * - an address where a contract lived, but was destroyed\n * ====\n */\n function isContract(address account) internal view returns (bool) {\n // This method relies on extcodesize, which returns 0 for contracts in\n // construction, since the code is only stored at the end of the\n // constructor execution.\n\n uint256 size;\n // solhint-disable-next-line no-inline-assembly\n assembly { size := extcodesize(account) }\n return size > 0;\n }\n\n /**\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n * `recipient`, forwarding all available gas and reverting on errors.\n *\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\n * imposed by `transfer`, making them unable to receive funds via\n * `transfer`. {sendValue} removes this limitation.\n *\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n *\n * IMPORTANT: because control is transferred to `recipient`, care must be\n * taken to not create reentrancy vulnerabilities. Consider using\n * {ReentrancyGuard} or the\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n */\n function sendValue(address payable recipient, uint256 amount) internal {\n require(address(this).balance >= amount, \"Address: insufficient balance\");\n\n // solhint-disable-next-line avoid-low-level-calls, avoid-call-value\n (bool success, ) = recipient.call{ value: amount }(\"\");\n require(success, \"Address: unable to send value, recipient may have reverted\");\n }\n\n /**\n * @dev Performs a Solidity function call using a low level `call`. A\n * plain`call` is an unsafe replacement for a function call: use this\n * function instead.\n *\n * If `target` reverts with a revert reason, it is bubbled up by this\n * function (like regular Solidity function calls).\n *\n * Returns the raw returned data. To convert to the expected return value,\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n *\n * Requirements:\n *\n * - `target` must be a contract.\n * - calling `target` with `data` must not revert.\n *\n * _Available since v3.1._\n */\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionCall(target, data, \"Address: low-level call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n * `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but also transferring `value` wei to `target`.\n *\n * Requirements:\n *\n * - the calling contract must have an ETH balance of at least `value`.\n * - the called Solidity function must be `payable`.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\n return functionCallWithValue(target, data, value, \"Address: low-level call with value failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n * with `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {\n require(address(this).balance >= value, \"Address: insufficient balance for call\");\n require(isContract(target), \"Address: call to non-contract\");\n\n // solhint-disable-next-line avoid-low-level-calls\n (bool success, bytes memory returndata) = target.call{ value: value }(data);\n return _verifyCallResult(success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n return functionStaticCall(target, data, \"Address: low-level static call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {\n require(isContract(target), \"Address: static call to non-contract\");\n\n // solhint-disable-next-line avoid-low-level-calls\n (bool success, bytes memory returndata) = target.staticcall(data);\n return _verifyCallResult(success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionDelegateCall(target, data, \"Address: low-level delegate call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {\n require(isContract(target), \"Address: delegate call to non-contract\");\n\n // solhint-disable-next-line avoid-low-level-calls\n (bool success, bytes memory returndata) = target.delegatecall(data);\n return _verifyCallResult(success, returndata, errorMessage);\n }\n\n function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {\n if (success) {\n return returndata;\n } else {\n // Look for revert reason and bubble it up if present\n if (returndata.length > 0) {\n // The easiest way to bubble the revert reason is using memory via assembly\n\n // solhint-disable-next-line no-inline-assembly\n assembly {\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n }\n } else {\n revert(errorMessage);\n }\n }\n }\n}\n" - }, - "contracts/base/BlockContext.sol": { - "content": "// SPDX-License-Identifier: MIT License\npragma solidity 0.7.6;\n\nabstract contract BlockContext {\n function _blockTimestamp() internal view virtual returns (uint256) {\n // Reply from Arbitrum\n // block.timestamp returns timestamp at the time at which the sequencer receives the tx.\n // It may not actually correspond to a particular L1 block\n return block.timestamp;\n }\n\n function _blockNumber() internal view virtual returns (uint256) {\n return block.number;\n }\n}\n" - }, - "contracts/interface/IPriceFeed.sol": { - "content": "// SPDX-License-Identifier: MIT License\npragma solidity 0.7.6;\n\ninterface IPriceFeed {\n /// @dev Returns the cached index price of the token.\n /// @param interval The interval represents twap interval.\n function cacheTwap(uint256 interval) external returns (uint256);\n\n function decimals() external view returns (uint8);\n\n /// @dev Returns the index price of the token.\n /// @param interval The interval represents twap interval.\n function getPrice(uint256 interval) external view returns (uint256);\n}\n" - }, - "contracts/interface/bandProtocol/IStdReference.sol": { - "content": "// SPDX-License-Identifier: MIT License\npragma solidity 0.7.6;\npragma experimental ABIEncoderV2;\n\n// Copy from https://docs.bandchain.org/band-standard-dataset/using-band-dataset/using-band-dataset-evm.html\ninterface IStdReference {\n /// A structure returned whenever someone requests for standard reference data.\n struct ReferenceData {\n uint256 rate; // base/quote exchange rate, multiplied by 1e18.\n uint256 lastUpdatedBase; // UNIX epoch of the last time when base price gets updated.\n uint256 lastUpdatedQuote; // UNIX epoch of the last time when quote price gets updated.\n }\n\n /// Returns the price data for the given base/quote pair. Revert if not available.\n function getReferenceData(string memory _base, string memory _quote) external view returns (ReferenceData memory);\n\n /// Similar to getReferenceData, but with multiple base/quote pairs at once.\n function getReferenceDataBulk(string[] memory _bases, string[] memory _quotes)\n external\n view\n returns (ReferenceData[] memory);\n}\n" - }, - "contracts/twap/CachedTwap.sol": { - "content": "// SPDX-License-Identifier: MIT License\npragma solidity 0.7.6;\npragma experimental ABIEncoderV2;\n\nimport { CumulativeTwap } from \"./CumulativeTwap.sol\";\n\nabstract contract CachedTwap is CumulativeTwap {\n uint256 internal _cachedTwap;\n uint160 internal _lastUpdatedAt;\n uint80 internal _interval;\n\n constructor(uint80 interval) {\n _interval = interval;\n }\n\n function _cacheTwap(\n uint256 interval,\n uint256 latestPrice,\n uint256 latestUpdatedTimestamp\n ) internal virtual returns (uint256) {\n // if requested interval is not the same as the one we have cached, then call _getPrice() directly\n if (_interval != interval) {\n return _calculateTwapPrice(interval, latestPrice, latestUpdatedTimestamp);\n }\n\n // if twap has been calculated in this block, then return cached value directly\n if (_blockTimestamp() == _lastUpdatedAt) {\n return _cachedTwap;\n }\n\n _update(latestPrice, latestUpdatedTimestamp);\n _lastUpdatedAt = uint160(_blockTimestamp());\n _cachedTwap = _calculateTwapPrice(interval, latestPrice, latestUpdatedTimestamp);\n\n return _cachedTwap;\n }\n\n function _getCachedTwap(\n uint256 interval,\n uint256 latestPrice,\n uint256 latestUpdatedTimestamp\n ) internal view returns (uint256) {\n if (_blockTimestamp() == _lastUpdatedAt) {\n return _cachedTwap;\n }\n return _calculateTwapPrice(interval, latestPrice, latestUpdatedTimestamp);\n }\n}\n" - }, - "contracts/twap/CumulativeTwap.sol": { - "content": "// SPDX-License-Identifier: MIT License\npragma solidity 0.7.6;\npragma experimental ABIEncoderV2;\n\nimport { BlockContext } from \"../base/BlockContext.sol\";\nimport { SafeMath } from \"@openzeppelin/contracts/math/SafeMath.sol\";\n\ncontract CumulativeTwap is BlockContext {\n using SafeMath for uint256;\n\n //\n // STRUCT\n //\n struct Observation {\n uint256 price;\n uint256 priceCumulative;\n uint256 timestamp;\n }\n\n //\n // EVENT\n //\n event PriceUpdated(uint256 price, uint256 timestamp, uint8 indexAt);\n\n //\n // STATE\n //\n // let's use 15 mins and 1 hr twap as example\n // if the price is being updated 15 secs, then needs 60 and 240 historical data for 15mins and 1hr twap.\n Observation[256] public observations;\n\n uint8 public currentObservationIndex;\n\n function _update(uint256 price, uint256 lastUpdatedTimestamp) internal {\n // for the first time update\n if (currentObservationIndex == 0 && observations[0].timestamp == 0) {\n observations[0] = Observation({ price: price, priceCumulative: 0, timestamp: lastUpdatedTimestamp });\n emit PriceUpdated(price, lastUpdatedTimestamp, 0);\n return;\n }\n\n // CT_IT: invalid timestamp\n // add `==` in the require statement in case that two or more price with the same timestamp\n // this might happen on Optimism bcs their timestamp is not up-to-date\n Observation memory lastObservation = observations[currentObservationIndex];\n require(lastUpdatedTimestamp >= lastObservation.timestamp, \"CT_IT\");\n\n // overflow of currentObservationIndex is desired since currentObservationIndex is uint8 (0 - 255),\n // so 255 + 1 will be 0\n currentObservationIndex++;\n\n uint256 elapsedTime = lastUpdatedTimestamp - lastObservation.timestamp;\n observations[currentObservationIndex] = Observation({\n priceCumulative: lastObservation.priceCumulative + (lastObservation.price * elapsedTime),\n timestamp: lastUpdatedTimestamp,\n price: price\n });\n\n emit PriceUpdated(price, lastUpdatedTimestamp, currentObservationIndex);\n }\n\n function _calculateTwapPrice(\n uint256 interval,\n uint256 latestPrice,\n uint256 latestUpdatedTimestamp\n ) internal view returns (uint256) {\n Observation memory latestObservation = observations[currentObservationIndex];\n if (latestObservation.price == 0) {\n // CT_ND: no data\n revert(\"CT_ND\");\n }\n\n uint256 currentTimestamp = _blockTimestamp();\n uint256 targetTimestamp = currentTimestamp.sub(interval);\n (Observation memory beforeOrAt, Observation memory atOrAfter) = _getSurroundingObservations(targetTimestamp);\n uint256 currentCumulativePrice =\n latestObservation.priceCumulative.add(\n (latestObservation.price.mul(latestUpdatedTimestamp.sub(latestObservation.timestamp))).add(\n latestPrice.mul(currentTimestamp.sub(latestUpdatedTimestamp))\n )\n );\n\n //\n // beforeOrAt atOrAfter\n // ------------------+-------------+---------------+------------------\n // <-------| | |\n // case 1 targetTimestamp | |------->\n // case 2 | targetTimestamp\n // case 3 targetTimestamp\n //\n uint256 targetCumulativePrice;\n // case1. not enough historical data or just enough (`==` case)\n if (targetTimestamp <= beforeOrAt.timestamp) {\n targetTimestamp = beforeOrAt.timestamp;\n targetCumulativePrice = beforeOrAt.priceCumulative;\n }\n // case2. the latest data is older than or equal the request\n else if (atOrAfter.timestamp <= targetTimestamp) {\n targetTimestamp = atOrAfter.timestamp;\n targetCumulativePrice = atOrAfter.priceCumulative;\n }\n // case3. in the middle\n else {\n uint256 observationTimeDelta = atOrAfter.timestamp - beforeOrAt.timestamp;\n uint256 targetTimeDelta = targetTimestamp - beforeOrAt.timestamp;\n targetCumulativePrice = beforeOrAt.priceCumulative.add(\n ((atOrAfter.priceCumulative.sub(beforeOrAt.priceCumulative)).mul(targetTimeDelta)).div(\n observationTimeDelta\n )\n );\n }\n\n return currentCumulativePrice.sub(targetCumulativePrice).div(currentTimestamp - targetTimestamp);\n }\n\n function _getSurroundingObservations(uint256 targetTimestamp)\n internal\n view\n returns (Observation memory beforeOrAt, Observation memory atOrAfter)\n {\n uint8 index = currentObservationIndex;\n uint8 beforeOrAtIndex;\n uint8 atOrAfterIndex;\n\n // run at most 256 times\n uint256 observationLen = observations.length;\n uint256 i;\n for (i = 0; i < observationLen; i++) {\n if (observations[index].timestamp <= targetTimestamp) {\n // if the next observation is empty, using the last one\n // it implies the historical data is not enough\n if (observations[index].timestamp == 0) {\n atOrAfterIndex = beforeOrAtIndex = index + 1;\n break;\n }\n beforeOrAtIndex = index;\n atOrAfterIndex = beforeOrAtIndex + 1;\n break;\n }\n index--;\n }\n\n // not enough historical data to query\n if (i == observationLen) {\n // CT_NEH: no enough historical data\n revert(\"CT_NEH\");\n }\n\n beforeOrAt = observations[beforeOrAtIndex];\n atOrAfter = observations[atOrAfterIndex];\n\n // if timestamp of the right bound is earlier than timestamp of the left bound,\n // it means the left bound is the lastest observation.\n // It implies the latest observation is older than requested\n // Then we set the right bound to the left bound.\n if (atOrAfter.timestamp < beforeOrAt.timestamp) {\n atOrAfter = beforeOrAt;\n }\n }\n}\n" - }, - "@openzeppelin/contracts/math/SafeMath.sol": { - "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.6.0 <0.8.0;\n\n/**\n * @dev Wrappers over Solidity's arithmetic operations with added overflow\n * checks.\n *\n * Arithmetic operations in Solidity wrap on overflow. This can easily result\n * in bugs, because programmers usually assume that an overflow raises an\n * error, which is the standard behavior in high level programming languages.\n * `SafeMath` restores this intuition by reverting the transaction when an\n * operation overflows.\n *\n * Using this library instead of the unchecked operations eliminates an entire\n * class of bugs, so it's recommended to use it always.\n */\nlibrary SafeMath {\n /**\n * @dev Returns the addition of two unsigned integers, with an overflow flag.\n *\n * _Available since v3.4._\n */\n function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n uint256 c = a + b;\n if (c < a) return (false, 0);\n return (true, c);\n }\n\n /**\n * @dev Returns the substraction of two unsigned integers, with an overflow flag.\n *\n * _Available since v3.4._\n */\n function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n if (b > a) return (false, 0);\n return (true, a - b);\n }\n\n /**\n * @dev Returns the multiplication of two unsigned integers, with an overflow flag.\n *\n * _Available since v3.4._\n */\n function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\n // benefit is lost if 'b' is also tested.\n // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\n if (a == 0) return (true, 0);\n uint256 c = a * b;\n if (c / a != b) return (false, 0);\n return (true, c);\n }\n\n /**\n * @dev Returns the division of two unsigned integers, with a division by zero flag.\n *\n * _Available since v3.4._\n */\n function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n if (b == 0) return (false, 0);\n return (true, a / b);\n }\n\n /**\n * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.\n *\n * _Available since v3.4._\n */\n function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n if (b == 0) return (false, 0);\n return (true, a % b);\n }\n\n /**\n * @dev Returns the addition of two unsigned integers, reverting on\n * overflow.\n *\n * Counterpart to Solidity's `+` operator.\n *\n * Requirements:\n *\n * - Addition cannot overflow.\n */\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\n uint256 c = a + b;\n require(c >= a, \"SafeMath: addition overflow\");\n return c;\n }\n\n /**\n * @dev Returns the subtraction of two unsigned integers, reverting on\n * overflow (when the result is negative).\n *\n * Counterpart to Solidity's `-` operator.\n *\n * Requirements:\n *\n * - Subtraction cannot overflow.\n */\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n require(b <= a, \"SafeMath: subtraction overflow\");\n return a - b;\n }\n\n /**\n * @dev Returns the multiplication of two unsigned integers, reverting on\n * overflow.\n *\n * Counterpart to Solidity's `*` operator.\n *\n * Requirements:\n *\n * - Multiplication cannot overflow.\n */\n function mul(uint256 a, uint256 b) internal pure returns (uint256) {\n if (a == 0) return 0;\n uint256 c = a * b;\n require(c / a == b, \"SafeMath: multiplication overflow\");\n return c;\n }\n\n /**\n * @dev Returns the integer division of two unsigned integers, reverting on\n * division by zero. The result is rounded towards zero.\n *\n * Counterpart to Solidity's `/` operator. Note: this function uses a\n * `revert` opcode (which leaves remaining gas untouched) while Solidity\n * uses an invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n *\n * - The divisor cannot be zero.\n */\n function div(uint256 a, uint256 b) internal pure returns (uint256) {\n require(b > 0, \"SafeMath: division by zero\");\n return a / b;\n }\n\n /**\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n * reverting when dividing by zero.\n *\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\n * opcode (which leaves remaining gas untouched) while Solidity uses an\n * invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n *\n * - The divisor cannot be zero.\n */\n function mod(uint256 a, uint256 b) internal pure returns (uint256) {\n require(b > 0, \"SafeMath: modulo by zero\");\n return a % b;\n }\n\n /**\n * @dev Returns the subtraction of two unsigned integers, reverting with custom message on\n * overflow (when the result is negative).\n *\n * CAUTION: This function is deprecated because it requires allocating memory for the error\n * message unnecessarily. For custom revert reasons use {trySub}.\n *\n * Counterpart to Solidity's `-` operator.\n *\n * Requirements:\n *\n * - Subtraction cannot overflow.\n */\n function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\n require(b <= a, errorMessage);\n return a - b;\n }\n\n /**\n * @dev Returns the integer division of two unsigned integers, reverting with custom message on\n * division by zero. The result is rounded towards zero.\n *\n * CAUTION: This function is deprecated because it requires allocating memory for the error\n * message unnecessarily. For custom revert reasons use {tryDiv}.\n *\n * Counterpart to Solidity's `/` operator. Note: this function uses a\n * `revert` opcode (which leaves remaining gas untouched) while Solidity\n * uses an invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n *\n * - The divisor cannot be zero.\n */\n function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\n require(b > 0, errorMessage);\n return a / b;\n }\n\n /**\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n * reverting with custom message when dividing by zero.\n *\n * CAUTION: This function is deprecated because it requires allocating memory for the error\n * message unnecessarily. For custom revert reasons use {tryMod}.\n *\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\n * opcode (which leaves remaining gas untouched) while Solidity uses an\n * invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n *\n * - The divisor cannot be zero.\n */\n function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\n require(b > 0, errorMessage);\n return a % b;\n }\n}\n" - }, - "contracts/ChainlinkPriceFeed.sol": { - "content": "// SPDX-License-Identifier: MIT License\npragma solidity 0.7.6;\n\nimport { Address } from \"@openzeppelin/contracts/utils/Address.sol\";\nimport { AggregatorV3Interface } from \"@chainlink/contracts/src/v0.6/interfaces/AggregatorV3Interface.sol\";\nimport { IPriceFeed } from \"./interface/IPriceFeed.sol\";\nimport { BlockContext } from \"./base/BlockContext.sol\";\nimport { CachedTwap } from \"./twap/CachedTwap.sol\";\n\ncontract ChainlinkPriceFeed is IPriceFeed, BlockContext, CachedTwap {\n using Address for address;\n\n AggregatorV3Interface private immutable _aggregator;\n\n constructor(AggregatorV3Interface aggregator, uint80 cacheTwapInterval) CachedTwap(cacheTwapInterval) {\n // CPF_ANC: Aggregator address is not contract\n require(address(aggregator).isContract(), \"CPF_ANC\");\n\n _aggregator = aggregator;\n }\n\n /// @dev anyone can help update it.\n function update() external {\n (, uint256 latestPrice, uint256 latestTimestamp) = _getLatestRoundData();\n\n _update(latestPrice, latestTimestamp);\n }\n\n function cacheTwap(uint256 interval) external override returns (uint256) {\n (uint80 round, uint256 latestPrice, uint256 latestTimestamp) = _getLatestRoundData();\n\n if (interval == 0 || round == 0) {\n return latestPrice;\n }\n return _cacheTwap(interval, latestPrice, latestTimestamp);\n }\n\n function decimals() external view override returns (uint8) {\n return _aggregator.decimals();\n }\n\n function getPrice(uint256 interval) external view override returns (uint256) {\n (uint80 round, uint256 latestPrice, uint256 latestTimestamp) = _getLatestRoundData();\n\n if (interval == 0 || round == 0) {\n return latestPrice;\n }\n\n return _getCachedTwap(interval, latestPrice, latestTimestamp);\n }\n\n function _getLatestRoundData()\n private\n view\n returns (\n uint80,\n uint256 finalPrice,\n uint256\n )\n {\n (uint80 round, int256 latestPrice, , uint256 latestTimestamp, ) = _aggregator.latestRoundData();\n finalPrice = uint256(latestPrice);\n if (latestPrice < 0) {\n _requireEnoughHistory(round);\n (round, finalPrice, latestTimestamp) = _getRoundData(round - 1);\n }\n return (round, finalPrice, latestTimestamp);\n }\n\n function _getRoundData(uint80 _round)\n private\n view\n returns (\n uint80,\n uint256,\n uint256\n )\n {\n (uint80 round, int256 latestPrice, , uint256 latestTimestamp, ) = _aggregator.getRoundData(_round);\n while (latestPrice < 0) {\n _requireEnoughHistory(round);\n round = round - 1;\n (, latestPrice, , latestTimestamp, ) = _aggregator.getRoundData(round);\n }\n return (round, uint256(latestPrice), latestTimestamp);\n }\n\n function _requireEnoughHistory(uint80 _round) private pure {\n // CPF_NEH: no enough history\n require(_round > 0, \"CPF_NEH\");\n }\n}\n" - }, - "@chainlink/contracts/src/v0.6/interfaces/AggregatorV3Interface.sol": { - "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.6.0;\n\ninterface AggregatorV3Interface {\n\n function decimals() external view returns (uint8);\n function description() external view returns (string memory);\n function version() external view returns (uint256);\n\n // getRoundData and latestRoundData should both raise \"No data present\"\n // if they do not have data to report, instead of returning unset values\n // which could be misinterpreted as actual reported values.\n function getRoundData(uint80 _roundId)\n external\n view\n returns (\n uint80 roundId,\n int256 answer,\n uint256 startedAt,\n uint256 updatedAt,\n uint80 answeredInRound\n );\n function latestRoundData()\n external\n view\n returns (\n uint80 roundId,\n int256 answer,\n uint256 startedAt,\n uint256 updatedAt,\n uint80 answeredInRound\n );\n\n}\n" - }, - "contracts/EmergencyPriceFeed.sol": { - "content": "// SPDX-License-Identifier: MIT License\npragma solidity 0.7.6;\npragma experimental ABIEncoderV2;\n\nimport { Address } from \"@openzeppelin/contracts/utils/Address.sol\";\nimport { IUniswapV3Pool } from \"@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol\";\nimport { FixedPoint96 } from \"@uniswap/v3-core/contracts/libraries/FixedPoint96.sol\";\nimport { FullMath } from \"@uniswap/v3-core/contracts/libraries/FullMath.sol\";\nimport { TickMath } from \"@uniswap/v3-core/contracts/libraries/TickMath.sol\";\nimport { IPriceFeed } from \"./interface/IPriceFeed.sol\";\nimport { BlockContext } from \"./base/BlockContext.sol\";\n\ncontract EmergencyPriceFeed is IPriceFeed, BlockContext {\n using Address for address;\n\n //\n // STATE\n //\n\n address public pool;\n\n //\n // EXTERNAL NON-VIEW\n //\n\n constructor(address poolArg) {\n // EPF_EANC: pool address is not contract\n require(address(poolArg).isContract(), \"EPF_EANC\");\n\n pool = poolArg;\n }\n\n function cacheTwap(uint256 interval) external override returns (uint256) {}\n\n //\n // EXTERNAL VIEW\n //\n\n function getPrice(uint256 interval) external view override returns (uint256) {\n uint256 markTwapX96 = _formatSqrtPriceX96ToPriceX96(_getSqrtMarkTwapX96(_toUint32(interval)));\n return _formatX96ToX10_18(markTwapX96);\n }\n\n //\n // EXTERNAL PURE\n //\n\n function decimals() external pure override returns (uint8) {\n return 18;\n }\n\n /// @dev if twapInterval < 10 (should be less than 1 block), return mark price without twap directly,\n /// as twapInterval is too short and makes getting twap over such a short period meaningless\n function _getSqrtMarkTwapX96(uint32 twapInterval) internal view returns (uint160) {\n // return the current price as twapInterval is too short/ meaningless\n if (twapInterval < 10) {\n (uint160 sqrtMarkPrice, , , , , , ) = IUniswapV3Pool(pool).slot0();\n return sqrtMarkPrice;\n }\n uint32[] memory secondsAgos = new uint32[](2);\n\n // solhint-disable-next-line not-rely-on-time\n secondsAgos[0] = twapInterval;\n secondsAgos[1] = 0;\n (int56[] memory tickCumulatives, ) = IUniswapV3Pool(pool).observe(secondsAgos);\n\n // tick(imprecise as it's an integer) to price\n return TickMath.getSqrtRatioAtTick(int24((tickCumulatives[1] - tickCumulatives[0]) / twapInterval));\n }\n\n /**\n * @dev Returns the downcasted uint32 from uint256, reverting on\n * overflow (when the input is greater than largest uint32).\n *\n * Counterpart to Solidity's `uint32` operator.\n *\n * Requirements:\n *\n * - input must fit into 32 bits\n */\n function _toUint32(uint256 value) internal pure returns (uint32 returnValue) {\n require(((returnValue = uint32(value)) == value), \"SafeCast: value doesn't fit in 32 bits\");\n }\n\n function _formatSqrtPriceX96ToPriceX96(uint160 sqrtPriceX96) internal pure returns (uint256) {\n return FullMath.mulDiv(sqrtPriceX96, sqrtPriceX96, FixedPoint96.Q96);\n }\n\n function _formatX96ToX10_18(uint256 valueX96) internal pure returns (uint256) {\n return FullMath.mulDiv(valueX96, 1e18, FixedPoint96.Q96);\n }\n}\n" - }, - "@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol": { - "content": "// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\nimport './pool/IUniswapV3PoolImmutables.sol';\nimport './pool/IUniswapV3PoolState.sol';\nimport './pool/IUniswapV3PoolDerivedState.sol';\nimport './pool/IUniswapV3PoolActions.sol';\nimport './pool/IUniswapV3PoolOwnerActions.sol';\nimport './pool/IUniswapV3PoolEvents.sol';\n\n/// @title The interface for a Uniswap V3 Pool\n/// @notice A Uniswap pool facilitates swapping and automated market making between any two assets that strictly conform\n/// to the ERC20 specification\n/// @dev The pool interface is broken up into many smaller pieces\ninterface IUniswapV3Pool is\n IUniswapV3PoolImmutables,\n IUniswapV3PoolState,\n IUniswapV3PoolDerivedState,\n IUniswapV3PoolActions,\n IUniswapV3PoolOwnerActions,\n IUniswapV3PoolEvents\n{\n\n}\n" - }, - "@uniswap/v3-core/contracts/libraries/FixedPoint96.sol": { - "content": "// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.4.0;\n\n/// @title FixedPoint96\n/// @notice A library for handling binary fixed point numbers, see https://en.wikipedia.org/wiki/Q_(number_format)\n/// @dev Used in SqrtPriceMath.sol\nlibrary FixedPoint96 {\n uint8 internal constant RESOLUTION = 96;\n uint256 internal constant Q96 = 0x1000000000000000000000000;\n}\n" - }, - "@uniswap/v3-core/contracts/libraries/FullMath.sol": { - "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.4.0;\n\n/// @title Contains 512-bit math functions\n/// @notice Facilitates multiplication and division that can have overflow of an intermediate value without any loss of precision\n/// @dev Handles \"phantom overflow\" i.e., allows multiplication and division where an intermediate value overflows 256 bits\nlibrary FullMath {\n /// @notice Calculates floor(a×b÷denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\n /// @param a The multiplicand\n /// @param b The multiplier\n /// @param denominator The divisor\n /// @return result The 256-bit result\n /// @dev Credit to Remco Bloemen under MIT license https://xn--2-umb.com/21/muldiv\n function mulDiv(\n uint256 a,\n uint256 b,\n uint256 denominator\n ) internal pure returns (uint256 result) {\n // 512-bit multiply [prod1 prod0] = a * b\n // Compute the product mod 2**256 and mod 2**256 - 1\n // then use the Chinese Remainder Theorem to reconstruct\n // the 512 bit result. The result is stored in two 256\n // variables such that product = prod1 * 2**256 + prod0\n uint256 prod0; // Least significant 256 bits of the product\n uint256 prod1; // Most significant 256 bits of the product\n assembly {\n let mm := mulmod(a, b, not(0))\n prod0 := mul(a, b)\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\n }\n\n // Handle non-overflow cases, 256 by 256 division\n if (prod1 == 0) {\n require(denominator > 0);\n assembly {\n result := div(prod0, denominator)\n }\n return result;\n }\n\n // Make sure the result is less than 2**256.\n // Also prevents denominator == 0\n require(denominator > prod1);\n\n ///////////////////////////////////////////////\n // 512 by 256 division.\n ///////////////////////////////////////////////\n\n // Make division exact by subtracting the remainder from [prod1 prod0]\n // Compute remainder using mulmod\n uint256 remainder;\n assembly {\n remainder := mulmod(a, b, denominator)\n }\n // Subtract 256 bit number from 512 bit number\n assembly {\n prod1 := sub(prod1, gt(remainder, prod0))\n prod0 := sub(prod0, remainder)\n }\n\n // Factor powers of two out of denominator\n // Compute largest power of two divisor of denominator.\n // Always >= 1.\n uint256 twos = -denominator & denominator;\n // Divide denominator by power of two\n assembly {\n denominator := div(denominator, twos)\n }\n\n // Divide [prod1 prod0] by the factors of two\n assembly {\n prod0 := div(prod0, twos)\n }\n // Shift in bits from prod1 into prod0. For this we need\n // to flip `twos` such that it is 2**256 / twos.\n // If twos is zero, then it becomes one\n assembly {\n twos := add(div(sub(0, twos), twos), 1)\n }\n prod0 |= prod1 * twos;\n\n // Invert denominator mod 2**256\n // Now that denominator is an odd number, it has an inverse\n // modulo 2**256 such that denominator * inv = 1 mod 2**256.\n // Compute the inverse by starting with a seed that is correct\n // correct for four bits. That is, denominator * inv = 1 mod 2**4\n uint256 inv = (3 * denominator) ^ 2;\n // Now use Newton-Raphson iteration to improve the precision.\n // Thanks to Hensel's lifting lemma, this also works in modular\n // arithmetic, doubling the correct bits in each step.\n inv *= 2 - denominator * inv; // inverse mod 2**8\n inv *= 2 - denominator * inv; // inverse mod 2**16\n inv *= 2 - denominator * inv; // inverse mod 2**32\n inv *= 2 - denominator * inv; // inverse mod 2**64\n inv *= 2 - denominator * inv; // inverse mod 2**128\n inv *= 2 - denominator * inv; // inverse mod 2**256\n\n // Because the division is now exact we can divide by multiplying\n // with the modular inverse of denominator. This will give us the\n // correct result modulo 2**256. Since the precoditions guarantee\n // that the outcome is less than 2**256, this is the final result.\n // We don't need to compute the high bits of the result and prod1\n // is no longer required.\n result = prod0 * inv;\n return result;\n }\n\n /// @notice Calculates ceil(a×b÷denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\n /// @param a The multiplicand\n /// @param b The multiplier\n /// @param denominator The divisor\n /// @return result The 256-bit result\n function mulDivRoundingUp(\n uint256 a,\n uint256 b,\n uint256 denominator\n ) internal pure returns (uint256 result) {\n result = mulDiv(a, b, denominator);\n if (mulmod(a, b, denominator) > 0) {\n require(result < type(uint256).max);\n result++;\n }\n }\n}\n" - }, - "@uniswap/v3-core/contracts/libraries/TickMath.sol": { - "content": "// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\n/// @title Math library for computing sqrt prices from ticks and vice versa\n/// @notice Computes sqrt price for ticks of size 1.0001, i.e. sqrt(1.0001^tick) as fixed point Q64.96 numbers. Supports\n/// prices between 2**-128 and 2**128\nlibrary TickMath {\n /// @dev The minimum tick that may be passed to #getSqrtRatioAtTick computed from log base 1.0001 of 2**-128\n int24 internal constant MIN_TICK = -887272;\n /// @dev The maximum tick that may be passed to #getSqrtRatioAtTick computed from log base 1.0001 of 2**128\n int24 internal constant MAX_TICK = -MIN_TICK;\n\n /// @dev The minimum value that can be returned from #getSqrtRatioAtTick. Equivalent to getSqrtRatioAtTick(MIN_TICK)\n uint160 internal constant MIN_SQRT_RATIO = 4295128739;\n /// @dev The maximum value that can be returned from #getSqrtRatioAtTick. Equivalent to getSqrtRatioAtTick(MAX_TICK)\n uint160 internal constant MAX_SQRT_RATIO = 1461446703485210103287273052203988822378723970342;\n\n /// @notice Calculates sqrt(1.0001^tick) * 2^96\n /// @dev Throws if |tick| > max tick\n /// @param tick The input tick for the above formula\n /// @return sqrtPriceX96 A Fixed point Q64.96 number representing the sqrt of the ratio of the two assets (token1/token0)\n /// at the given tick\n function getSqrtRatioAtTick(int24 tick) internal pure returns (uint160 sqrtPriceX96) {\n uint256 absTick = tick < 0 ? uint256(-int256(tick)) : uint256(int256(tick));\n require(absTick <= uint256(MAX_TICK), 'T');\n\n uint256 ratio = absTick & 0x1 != 0 ? 0xfffcb933bd6fad37aa2d162d1a594001 : 0x100000000000000000000000000000000;\n if (absTick & 0x2 != 0) ratio = (ratio * 0xfff97272373d413259a46990580e213a) >> 128;\n if (absTick & 0x4 != 0) ratio = (ratio * 0xfff2e50f5f656932ef12357cf3c7fdcc) >> 128;\n if (absTick & 0x8 != 0) ratio = (ratio * 0xffe5caca7e10e4e61c3624eaa0941cd0) >> 128;\n if (absTick & 0x10 != 0) ratio = (ratio * 0xffcb9843d60f6159c9db58835c926644) >> 128;\n if (absTick & 0x20 != 0) ratio = (ratio * 0xff973b41fa98c081472e6896dfb254c0) >> 128;\n if (absTick & 0x40 != 0) ratio = (ratio * 0xff2ea16466c96a3843ec78b326b52861) >> 128;\n if (absTick & 0x80 != 0) ratio = (ratio * 0xfe5dee046a99a2a811c461f1969c3053) >> 128;\n if (absTick & 0x100 != 0) ratio = (ratio * 0xfcbe86c7900a88aedcffc83b479aa3a4) >> 128;\n if (absTick & 0x200 != 0) ratio = (ratio * 0xf987a7253ac413176f2b074cf7815e54) >> 128;\n if (absTick & 0x400 != 0) ratio = (ratio * 0xf3392b0822b70005940c7a398e4b70f3) >> 128;\n if (absTick & 0x800 != 0) ratio = (ratio * 0xe7159475a2c29b7443b29c7fa6e889d9) >> 128;\n if (absTick & 0x1000 != 0) ratio = (ratio * 0xd097f3bdfd2022b8845ad8f792aa5825) >> 128;\n if (absTick & 0x2000 != 0) ratio = (ratio * 0xa9f746462d870fdf8a65dc1f90e061e5) >> 128;\n if (absTick & 0x4000 != 0) ratio = (ratio * 0x70d869a156d2a1b890bb3df62baf32f7) >> 128;\n if (absTick & 0x8000 != 0) ratio = (ratio * 0x31be135f97d08fd981231505542fcfa6) >> 128;\n if (absTick & 0x10000 != 0) ratio = (ratio * 0x9aa508b5b7a84e1c677de54f3e99bc9) >> 128;\n if (absTick & 0x20000 != 0) ratio = (ratio * 0x5d6af8dedb81196699c329225ee604) >> 128;\n if (absTick & 0x40000 != 0) ratio = (ratio * 0x2216e584f5fa1ea926041bedfe98) >> 128;\n if (absTick & 0x80000 != 0) ratio = (ratio * 0x48a170391f7dc42444e8fa2) >> 128;\n\n if (tick > 0) ratio = type(uint256).max / ratio;\n\n // this divides by 1<<32 rounding up to go from a Q128.128 to a Q128.96.\n // we then downcast because we know the result always fits within 160 bits due to our tick input constraint\n // we round up in the division so getTickAtSqrtRatio of the output price is always consistent\n sqrtPriceX96 = uint160((ratio >> 32) + (ratio % (1 << 32) == 0 ? 0 : 1));\n }\n\n /// @notice Calculates the greatest tick value such that getRatioAtTick(tick) <= ratio\n /// @dev Throws in case sqrtPriceX96 < MIN_SQRT_RATIO, as MIN_SQRT_RATIO is the lowest value getRatioAtTick may\n /// ever return.\n /// @param sqrtPriceX96 The sqrt ratio for which to compute the tick as a Q64.96\n /// @return tick The greatest tick for which the ratio is less than or equal to the input ratio\n function getTickAtSqrtRatio(uint160 sqrtPriceX96) internal pure returns (int24 tick) {\n // second inequality must be < because the price can never reach the price at the max tick\n require(sqrtPriceX96 >= MIN_SQRT_RATIO && sqrtPriceX96 < MAX_SQRT_RATIO, 'R');\n uint256 ratio = uint256(sqrtPriceX96) << 32;\n\n uint256 r = ratio;\n uint256 msb = 0;\n\n assembly {\n let f := shl(7, gt(r, 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF))\n msb := or(msb, f)\n r := shr(f, r)\n }\n assembly {\n let f := shl(6, gt(r, 0xFFFFFFFFFFFFFFFF))\n msb := or(msb, f)\n r := shr(f, r)\n }\n assembly {\n let f := shl(5, gt(r, 0xFFFFFFFF))\n msb := or(msb, f)\n r := shr(f, r)\n }\n assembly {\n let f := shl(4, gt(r, 0xFFFF))\n msb := or(msb, f)\n r := shr(f, r)\n }\n assembly {\n let f := shl(3, gt(r, 0xFF))\n msb := or(msb, f)\n r := shr(f, r)\n }\n assembly {\n let f := shl(2, gt(r, 0xF))\n msb := or(msb, f)\n r := shr(f, r)\n }\n assembly {\n let f := shl(1, gt(r, 0x3))\n msb := or(msb, f)\n r := shr(f, r)\n }\n assembly {\n let f := gt(r, 0x1)\n msb := or(msb, f)\n }\n\n if (msb >= 128) r = ratio >> (msb - 127);\n else r = ratio << (127 - msb);\n\n int256 log_2 = (int256(msb) - 128) << 64;\n\n assembly {\n r := shr(127, mul(r, r))\n let f := shr(128, r)\n log_2 := or(log_2, shl(63, f))\n r := shr(f, r)\n }\n assembly {\n r := shr(127, mul(r, r))\n let f := shr(128, r)\n log_2 := or(log_2, shl(62, f))\n r := shr(f, r)\n }\n assembly {\n r := shr(127, mul(r, r))\n let f := shr(128, r)\n log_2 := or(log_2, shl(61, f))\n r := shr(f, r)\n }\n assembly {\n r := shr(127, mul(r, r))\n let f := shr(128, r)\n log_2 := or(log_2, shl(60, f))\n r := shr(f, r)\n }\n assembly {\n r := shr(127, mul(r, r))\n let f := shr(128, r)\n log_2 := or(log_2, shl(59, f))\n r := shr(f, r)\n }\n assembly {\n r := shr(127, mul(r, r))\n let f := shr(128, r)\n log_2 := or(log_2, shl(58, f))\n r := shr(f, r)\n }\n assembly {\n r := shr(127, mul(r, r))\n let f := shr(128, r)\n log_2 := or(log_2, shl(57, f))\n r := shr(f, r)\n }\n assembly {\n r := shr(127, mul(r, r))\n let f := shr(128, r)\n log_2 := or(log_2, shl(56, f))\n r := shr(f, r)\n }\n assembly {\n r := shr(127, mul(r, r))\n let f := shr(128, r)\n log_2 := or(log_2, shl(55, f))\n r := shr(f, r)\n }\n assembly {\n r := shr(127, mul(r, r))\n let f := shr(128, r)\n log_2 := or(log_2, shl(54, f))\n r := shr(f, r)\n }\n assembly {\n r := shr(127, mul(r, r))\n let f := shr(128, r)\n log_2 := or(log_2, shl(53, f))\n r := shr(f, r)\n }\n assembly {\n r := shr(127, mul(r, r))\n let f := shr(128, r)\n log_2 := or(log_2, shl(52, f))\n r := shr(f, r)\n }\n assembly {\n r := shr(127, mul(r, r))\n let f := shr(128, r)\n log_2 := or(log_2, shl(51, f))\n r := shr(f, r)\n }\n assembly {\n r := shr(127, mul(r, r))\n let f := shr(128, r)\n log_2 := or(log_2, shl(50, f))\n }\n\n int256 log_sqrt10001 = log_2 * 255738958999603826347141; // 128.128 number\n\n int24 tickLow = int24((log_sqrt10001 - 3402992956809132418596140100660247210) >> 128);\n int24 tickHi = int24((log_sqrt10001 + 291339464771989622907027621153398088495) >> 128);\n\n tick = tickLow == tickHi ? tickLow : getSqrtRatioAtTick(tickHi) <= sqrtPriceX96 ? tickHi : tickLow;\n }\n}\n" - }, - "@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol": { - "content": "// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\n/// @title Pool state that never changes\n/// @notice These parameters are fixed for a pool forever, i.e., the methods will always return the same values\ninterface IUniswapV3PoolImmutables {\n /// @notice The contract that deployed the pool, which must adhere to the IUniswapV3Factory interface\n /// @return The contract address\n function factory() external view returns (address);\n\n /// @notice The first of the two tokens of the pool, sorted by address\n /// @return The token contract address\n function token0() external view returns (address);\n\n /// @notice The second of the two tokens of the pool, sorted by address\n /// @return The token contract address\n function token1() external view returns (address);\n\n /// @notice The pool's fee in hundredths of a bip, i.e. 1e-6\n /// @return The fee\n function fee() external view returns (uint24);\n\n /// @notice The pool tick spacing\n /// @dev Ticks can only be used at multiples of this value, minimum of 1 and always positive\n /// e.g.: a tickSpacing of 3 means ticks can be initialized every 3rd tick, i.e., ..., -6, -3, 0, 3, 6, ...\n /// This value is an int24 to avoid casting even though it is always positive.\n /// @return The tick spacing\n function tickSpacing() external view returns (int24);\n\n /// @notice The maximum amount of position liquidity that can use any tick in the range\n /// @dev This parameter is enforced per tick to prevent liquidity from overflowing a uint128 at any point, and\n /// also prevents out-of-range liquidity from being used to prevent adding in-range liquidity to a pool\n /// @return The max amount of liquidity per tick\n function maxLiquidityPerTick() external view returns (uint128);\n}\n" - }, - "@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol": { - "content": "// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\n/// @title Pool state that can change\n/// @notice These methods compose the pool's state, and can change with any frequency including multiple times\n/// per transaction\ninterface IUniswapV3PoolState {\n /// @notice The 0th storage slot in the pool stores many values, and is exposed as a single method to save gas\n /// when accessed externally.\n /// @return sqrtPriceX96 The current price of the pool as a sqrt(token1/token0) Q64.96 value\n /// tick The current tick of the pool, i.e. according to the last tick transition that was run.\n /// This value may not always be equal to SqrtTickMath.getTickAtSqrtRatio(sqrtPriceX96) if the price is on a tick\n /// boundary.\n /// observationIndex The index of the last oracle observation that was written,\n /// observationCardinality The current maximum number of observations stored in the pool,\n /// observationCardinalityNext The next maximum number of observations, to be updated when the observation.\n /// feeProtocol The protocol fee for both tokens of the pool.\n /// Encoded as two 4 bit values, where the protocol fee of token1 is shifted 4 bits and the protocol fee of token0\n /// is the lower 4 bits. Used as the denominator of a fraction of the swap fee, e.g. 4 means 1/4th of the swap fee.\n /// unlocked Whether the pool is currently locked to reentrancy\n function slot0()\n external\n view\n returns (\n uint160 sqrtPriceX96,\n int24 tick,\n uint16 observationIndex,\n uint16 observationCardinality,\n uint16 observationCardinalityNext,\n uint8 feeProtocol,\n bool unlocked\n );\n\n /// @notice The fee growth as a Q128.128 fees of token0 collected per unit of liquidity for the entire life of the pool\n /// @dev This value can overflow the uint256\n function feeGrowthGlobal0X128() external view returns (uint256);\n\n /// @notice The fee growth as a Q128.128 fees of token1 collected per unit of liquidity for the entire life of the pool\n /// @dev This value can overflow the uint256\n function feeGrowthGlobal1X128() external view returns (uint256);\n\n /// @notice The amounts of token0 and token1 that are owed to the protocol\n /// @dev Protocol fees will never exceed uint128 max in either token\n function protocolFees() external view returns (uint128 token0, uint128 token1);\n\n /// @notice The currently in range liquidity available to the pool\n /// @dev This value has no relationship to the total liquidity across all ticks\n function liquidity() external view returns (uint128);\n\n /// @notice Look up information about a specific tick in the pool\n /// @param tick The tick to look up\n /// @return liquidityGross the total amount of position liquidity that uses the pool either as tick lower or\n /// tick upper,\n /// liquidityNet how much liquidity changes when the pool price crosses the tick,\n /// feeGrowthOutside0X128 the fee growth on the other side of the tick from the current tick in token0,\n /// feeGrowthOutside1X128 the fee growth on the other side of the tick from the current tick in token1,\n /// tickCumulativeOutside the cumulative tick value on the other side of the tick from the current tick\n /// secondsPerLiquidityOutsideX128 the seconds spent per liquidity on the other side of the tick from the current tick,\n /// secondsOutside the seconds spent on the other side of the tick from the current tick,\n /// initialized Set to true if the tick is initialized, i.e. liquidityGross is greater than 0, otherwise equal to false.\n /// Outside values can only be used if the tick is initialized, i.e. if liquidityGross is greater than 0.\n /// In addition, these values are only relative and must be used only in comparison to previous snapshots for\n /// a specific position.\n function ticks(int24 tick)\n external\n view\n returns (\n uint128 liquidityGross,\n int128 liquidityNet,\n uint256 feeGrowthOutside0X128,\n uint256 feeGrowthOutside1X128,\n int56 tickCumulativeOutside,\n uint160 secondsPerLiquidityOutsideX128,\n uint32 secondsOutside,\n bool initialized\n );\n\n /// @notice Returns 256 packed tick initialized boolean values. See TickBitmap for more information\n function tickBitmap(int16 wordPosition) external view returns (uint256);\n\n /// @notice Returns the information about a position by the position's key\n /// @param key The position's key is a hash of a preimage composed by the owner, tickLower and tickUpper\n /// @return _liquidity The amount of liquidity in the position,\n /// Returns feeGrowthInside0LastX128 fee growth of token0 inside the tick range as of the last mint/burn/poke,\n /// Returns feeGrowthInside1LastX128 fee growth of token1 inside the tick range as of the last mint/burn/poke,\n /// Returns tokensOwed0 the computed amount of token0 owed to the position as of the last mint/burn/poke,\n /// Returns tokensOwed1 the computed amount of token1 owed to the position as of the last mint/burn/poke\n function positions(bytes32 key)\n external\n view\n returns (\n uint128 _liquidity,\n uint256 feeGrowthInside0LastX128,\n uint256 feeGrowthInside1LastX128,\n uint128 tokensOwed0,\n uint128 tokensOwed1\n );\n\n /// @notice Returns data about a specific observation index\n /// @param index The element of the observations array to fetch\n /// @dev You most likely want to use #observe() instead of this method to get an observation as of some amount of time\n /// ago, rather than at a specific index in the array.\n /// @return blockTimestamp The timestamp of the observation,\n /// Returns tickCumulative the tick multiplied by seconds elapsed for the life of the pool as of the observation timestamp,\n /// Returns secondsPerLiquidityCumulativeX128 the seconds per in range liquidity for the life of the pool as of the observation timestamp,\n /// Returns initialized whether the observation has been initialized and the values are safe to use\n function observations(uint256 index)\n external\n view\n returns (\n uint32 blockTimestamp,\n int56 tickCumulative,\n uint160 secondsPerLiquidityCumulativeX128,\n bool initialized\n );\n}\n" - }, - "@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol": { - "content": "// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\n/// @title Pool state that is not stored\n/// @notice Contains view functions to provide information about the pool that is computed rather than stored on the\n/// blockchain. The functions here may have variable gas costs.\ninterface IUniswapV3PoolDerivedState {\n /// @notice Returns the cumulative tick and liquidity as of each timestamp `secondsAgo` from the current block timestamp\n /// @dev To get a time weighted average tick or liquidity-in-range, you must call this with two values, one representing\n /// the beginning of the period and another for the end of the period. E.g., to get the last hour time-weighted average tick,\n /// you must call it with secondsAgos = [3600, 0].\n /// @dev The time weighted average tick represents the geometric time weighted average price of the pool, in\n /// log base sqrt(1.0001) of token1 / token0. The TickMath library can be used to go from a tick value to a ratio.\n /// @param secondsAgos From how long ago each cumulative tick and liquidity value should be returned\n /// @return tickCumulatives Cumulative tick values as of each `secondsAgos` from the current block timestamp\n /// @return secondsPerLiquidityCumulativeX128s Cumulative seconds per liquidity-in-range value as of each `secondsAgos` from the current block\n /// timestamp\n function observe(uint32[] calldata secondsAgos)\n external\n view\n returns (int56[] memory tickCumulatives, uint160[] memory secondsPerLiquidityCumulativeX128s);\n\n /// @notice Returns a snapshot of the tick cumulative, seconds per liquidity and seconds inside a tick range\n /// @dev Snapshots must only be compared to other snapshots, taken over a period for which a position existed.\n /// I.e., snapshots cannot be compared if a position is not held for the entire period between when the first\n /// snapshot is taken and the second snapshot is taken.\n /// @param tickLower The lower tick of the range\n /// @param tickUpper The upper tick of the range\n /// @return tickCumulativeInside The snapshot of the tick accumulator for the range\n /// @return secondsPerLiquidityInsideX128 The snapshot of seconds per liquidity for the range\n /// @return secondsInside The snapshot of seconds per liquidity for the range\n function snapshotCumulativesInside(int24 tickLower, int24 tickUpper)\n external\n view\n returns (\n int56 tickCumulativeInside,\n uint160 secondsPerLiquidityInsideX128,\n uint32 secondsInside\n );\n}\n" - }, - "@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol": { - "content": "// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\n/// @title Permissionless pool actions\n/// @notice Contains pool methods that can be called by anyone\ninterface IUniswapV3PoolActions {\n /// @notice Sets the initial price for the pool\n /// @dev Price is represented as a sqrt(amountToken1/amountToken0) Q64.96 value\n /// @param sqrtPriceX96 the initial sqrt price of the pool as a Q64.96\n function initialize(uint160 sqrtPriceX96) external;\n\n /// @notice Adds liquidity for the given recipient/tickLower/tickUpper position\n /// @dev The caller of this method receives a callback in the form of IUniswapV3MintCallback#uniswapV3MintCallback\n /// in which they must pay any token0 or token1 owed for the liquidity. The amount of token0/token1 due depends\n /// on tickLower, tickUpper, the amount of liquidity, and the current price.\n /// @param recipient The address for which the liquidity will be created\n /// @param tickLower The lower tick of the position in which to add liquidity\n /// @param tickUpper The upper tick of the position in which to add liquidity\n /// @param amount The amount of liquidity to mint\n /// @param data Any data that should be passed through to the callback\n /// @return amount0 The amount of token0 that was paid to mint the given amount of liquidity. Matches the value in the callback\n /// @return amount1 The amount of token1 that was paid to mint the given amount of liquidity. Matches the value in the callback\n function mint(\n address recipient,\n int24 tickLower,\n int24 tickUpper,\n uint128 amount,\n bytes calldata data\n ) external returns (uint256 amount0, uint256 amount1);\n\n /// @notice Collects tokens owed to a position\n /// @dev Does not recompute fees earned, which must be done either via mint or burn of any amount of liquidity.\n /// Collect must be called by the position owner. To withdraw only token0 or only token1, amount0Requested or\n /// amount1Requested may be set to zero. To withdraw all tokens owed, caller may pass any value greater than the\n /// actual tokens owed, e.g. type(uint128).max. Tokens owed may be from accumulated swap fees or burned liquidity.\n /// @param recipient The address which should receive the fees collected\n /// @param tickLower The lower tick of the position for which to collect fees\n /// @param tickUpper The upper tick of the position for which to collect fees\n /// @param amount0Requested How much token0 should be withdrawn from the fees owed\n /// @param amount1Requested How much token1 should be withdrawn from the fees owed\n /// @return amount0 The amount of fees collected in token0\n /// @return amount1 The amount of fees collected in token1\n function collect(\n address recipient,\n int24 tickLower,\n int24 tickUpper,\n uint128 amount0Requested,\n uint128 amount1Requested\n ) external returns (uint128 amount0, uint128 amount1);\n\n /// @notice Burn liquidity from the sender and account tokens owed for the liquidity to the position\n /// @dev Can be used to trigger a recalculation of fees owed to a position by calling with an amount of 0\n /// @dev Fees must be collected separately via a call to #collect\n /// @param tickLower The lower tick of the position for which to burn liquidity\n /// @param tickUpper The upper tick of the position for which to burn liquidity\n /// @param amount How much liquidity to burn\n /// @return amount0 The amount of token0 sent to the recipient\n /// @return amount1 The amount of token1 sent to the recipient\n function burn(\n int24 tickLower,\n int24 tickUpper,\n uint128 amount\n ) external returns (uint256 amount0, uint256 amount1);\n\n /// @notice Swap token0 for token1, or token1 for token0\n /// @dev The caller of this method receives a callback in the form of IUniswapV3SwapCallback#uniswapV3SwapCallback\n /// @param recipient The address to receive the output of the swap\n /// @param zeroForOne The direction of the swap, true for token0 to token1, false for token1 to token0\n /// @param amountSpecified The amount of the swap, which implicitly configures the swap as exact input (positive), or exact output (negative)\n /// @param sqrtPriceLimitX96 The Q64.96 sqrt price limit. If zero for one, the price cannot be less than this\n /// value after the swap. If one for zero, the price cannot be greater than this value after the swap\n /// @param data Any data to be passed through to the callback\n /// @return amount0 The delta of the balance of token0 of the pool, exact when negative, minimum when positive\n /// @return amount1 The delta of the balance of token1 of the pool, exact when negative, minimum when positive\n function swap(\n address recipient,\n bool zeroForOne,\n int256 amountSpecified,\n uint160 sqrtPriceLimitX96,\n bytes calldata data\n ) external returns (int256 amount0, int256 amount1);\n\n /// @notice Receive token0 and/or token1 and pay it back, plus a fee, in the callback\n /// @dev The caller of this method receives a callback in the form of IUniswapV3FlashCallback#uniswapV3FlashCallback\n /// @dev Can be used to donate underlying tokens pro-rata to currently in-range liquidity providers by calling\n /// with 0 amount{0,1} and sending the donation amount(s) from the callback\n /// @param recipient The address which will receive the token0 and token1 amounts\n /// @param amount0 The amount of token0 to send\n /// @param amount1 The amount of token1 to send\n /// @param data Any data to be passed through to the callback\n function flash(\n address recipient,\n uint256 amount0,\n uint256 amount1,\n bytes calldata data\n ) external;\n\n /// @notice Increase the maximum number of price and liquidity observations that this pool will store\n /// @dev This method is no-op if the pool already has an observationCardinalityNext greater than or equal to\n /// the input observationCardinalityNext.\n /// @param observationCardinalityNext The desired minimum number of observations for the pool to store\n function increaseObservationCardinalityNext(uint16 observationCardinalityNext) external;\n}\n" - }, - "@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol": { - "content": "// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\n/// @title Permissioned pool actions\n/// @notice Contains pool methods that may only be called by the factory owner\ninterface IUniswapV3PoolOwnerActions {\n /// @notice Set the denominator of the protocol's % share of the fees\n /// @param feeProtocol0 new protocol fee for token0 of the pool\n /// @param feeProtocol1 new protocol fee for token1 of the pool\n function setFeeProtocol(uint8 feeProtocol0, uint8 feeProtocol1) external;\n\n /// @notice Collect the protocol fee accrued to the pool\n /// @param recipient The address to which collected protocol fees should be sent\n /// @param amount0Requested The maximum amount of token0 to send, can be 0 to collect fees in only token1\n /// @param amount1Requested The maximum amount of token1 to send, can be 0 to collect fees in only token0\n /// @return amount0 The protocol fee collected in token0\n /// @return amount1 The protocol fee collected in token1\n function collectProtocol(\n address recipient,\n uint128 amount0Requested,\n uint128 amount1Requested\n ) external returns (uint128 amount0, uint128 amount1);\n}\n" - }, - "@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol": { - "content": "// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\n/// @title Events emitted by a pool\n/// @notice Contains all events emitted by the pool\ninterface IUniswapV3PoolEvents {\n /// @notice Emitted exactly once by a pool when #initialize is first called on the pool\n /// @dev Mint/Burn/Swap cannot be emitted by the pool before Initialize\n /// @param sqrtPriceX96 The initial sqrt price of the pool, as a Q64.96\n /// @param tick The initial tick of the pool, i.e. log base 1.0001 of the starting price of the pool\n event Initialize(uint160 sqrtPriceX96, int24 tick);\n\n /// @notice Emitted when liquidity is minted for a given position\n /// @param sender The address that minted the liquidity\n /// @param owner The owner of the position and recipient of any minted liquidity\n /// @param tickLower The lower tick of the position\n /// @param tickUpper The upper tick of the position\n /// @param amount The amount of liquidity minted to the position range\n /// @param amount0 How much token0 was required for the minted liquidity\n /// @param amount1 How much token1 was required for the minted liquidity\n event Mint(\n address sender,\n address indexed owner,\n int24 indexed tickLower,\n int24 indexed tickUpper,\n uint128 amount,\n uint256 amount0,\n uint256 amount1\n );\n\n /// @notice Emitted when fees are collected by the owner of a position\n /// @dev Collect events may be emitted with zero amount0 and amount1 when the caller chooses not to collect fees\n /// @param owner The owner of the position for which fees are collected\n /// @param tickLower The lower tick of the position\n /// @param tickUpper The upper tick of the position\n /// @param amount0 The amount of token0 fees collected\n /// @param amount1 The amount of token1 fees collected\n event Collect(\n address indexed owner,\n address recipient,\n int24 indexed tickLower,\n int24 indexed tickUpper,\n uint128 amount0,\n uint128 amount1\n );\n\n /// @notice Emitted when a position's liquidity is removed\n /// @dev Does not withdraw any fees earned by the liquidity position, which must be withdrawn via #collect\n /// @param owner The owner of the position for which liquidity is removed\n /// @param tickLower The lower tick of the position\n /// @param tickUpper The upper tick of the position\n /// @param amount The amount of liquidity to remove\n /// @param amount0 The amount of token0 withdrawn\n /// @param amount1 The amount of token1 withdrawn\n event Burn(\n address indexed owner,\n int24 indexed tickLower,\n int24 indexed tickUpper,\n uint128 amount,\n uint256 amount0,\n uint256 amount1\n );\n\n /// @notice Emitted by the pool for any swaps between token0 and token1\n /// @param sender The address that initiated the swap call, and that received the callback\n /// @param recipient The address that received the output of the swap\n /// @param amount0 The delta of the token0 balance of the pool\n /// @param amount1 The delta of the token1 balance of the pool\n /// @param sqrtPriceX96 The sqrt(price) of the pool after the swap, as a Q64.96\n /// @param liquidity The liquidity of the pool after the swap\n /// @param tick The log base 1.0001 of price of the pool after the swap\n event Swap(\n address indexed sender,\n address indexed recipient,\n int256 amount0,\n int256 amount1,\n uint160 sqrtPriceX96,\n uint128 liquidity,\n int24 tick\n );\n\n /// @notice Emitted by the pool for any flashes of token0/token1\n /// @param sender The address that initiated the swap call, and that received the callback\n /// @param recipient The address that received the tokens from flash\n /// @param amount0 The amount of token0 that was flashed\n /// @param amount1 The amount of token1 that was flashed\n /// @param paid0 The amount of token0 paid for the flash, which can exceed the amount0 plus the fee\n /// @param paid1 The amount of token1 paid for the flash, which can exceed the amount1 plus the fee\n event Flash(\n address indexed sender,\n address indexed recipient,\n uint256 amount0,\n uint256 amount1,\n uint256 paid0,\n uint256 paid1\n );\n\n /// @notice Emitted by the pool for increases to the number of observations that can be stored\n /// @dev observationCardinalityNext is not the observation cardinality until an observation is written at the index\n /// just before a mint/swap/burn.\n /// @param observationCardinalityNextOld The previous value of the next observation cardinality\n /// @param observationCardinalityNextNew The updated value of the next observation cardinality\n event IncreaseObservationCardinalityNext(\n uint16 observationCardinalityNextOld,\n uint16 observationCardinalityNextNew\n );\n\n /// @notice Emitted when the protocol fee is changed by the pool\n /// @param feeProtocol0Old The previous value of the token0 protocol fee\n /// @param feeProtocol1Old The previous value of the token1 protocol fee\n /// @param feeProtocol0New The updated value of the token0 protocol fee\n /// @param feeProtocol1New The updated value of the token1 protocol fee\n event SetFeeProtocol(uint8 feeProtocol0Old, uint8 feeProtocol1Old, uint8 feeProtocol0New, uint8 feeProtocol1New);\n\n /// @notice Emitted when the collected protocol fees are withdrawn by the factory owner\n /// @param sender The address that collects the protocol fees\n /// @param recipient The address that receives the collected protocol fees\n /// @param amount0 The amount of token0 protocol fees that is withdrawn\n /// @param amount0 The amount of token1 protocol fees that is withdrawn\n event CollectProtocol(address indexed sender, address indexed recipient, uint128 amount0, uint128 amount1);\n}\n" - }, - "contracts/test/TestPriceFeed.sol": { - "content": "// SPDX-License-Identifier: MIT License\npragma solidity 0.7.6;\n\nimport { IPriceFeed } from \"../interface/IPriceFeed.sol\";\n\ncontract TestPriceFeed {\n address public chainlink;\n address public bandProtocol;\n\n uint256 public currentPrice;\n\n constructor(address _chainlink, address _bandProtocol) {\n chainlink = _chainlink;\n bandProtocol = _bandProtocol;\n currentPrice = 10;\n }\n\n //\n // for gas usage testing\n //\n function fetchChainlinkPrice(uint256 interval) external {\n for (uint256 i = 0; i < 17; i++) {\n IPriceFeed(chainlink).getPrice(interval);\n }\n currentPrice = IPriceFeed(chainlink).getPrice(interval);\n }\n\n function fetchBandProtocolPrice(uint256 interval) external {\n for (uint256 i = 0; i < 17; i++) {\n IPriceFeed(bandProtocol).getPrice(interval);\n }\n currentPrice = IPriceFeed(bandProtocol).getPrice(interval);\n }\n\n function cachedChainlinkPrice(uint256 interval) external {\n for (uint256 i = 0; i < 17; i++) {\n IPriceFeed(chainlink).cacheTwap(interval);\n }\n currentPrice = IPriceFeed(chainlink).cacheTwap(interval);\n }\n\n function cachedBandProtocolPrice(uint256 interval) external {\n for (uint256 i = 0; i < 17; i++) {\n IPriceFeed(bandProtocol).cacheTwap(interval);\n }\n currentPrice = IPriceFeed(bandProtocol).cacheTwap(interval);\n }\n\n //\n // for cached twap testing\n //\n\n // having this function for testing getPrice() and cacheTwap()\n // timestamp moves if any txs happen in hardhat env and which causes cacheTwap() will recalculate all the time\n function getPrice(uint256 interval) external returns (uint256 twap, uint256 cachedTwap) {\n twap = IPriceFeed(bandProtocol).getPrice(interval);\n cachedTwap = IPriceFeed(bandProtocol).cacheTwap(interval);\n }\n}\n" - }, - "@uniswap/v3-core/contracts/libraries/Tick.sol": { - "content": "// SPDX-License-Identifier: BUSL-1.1\npragma solidity >=0.5.0;\n\nimport './LowGasSafeMath.sol';\nimport './SafeCast.sol';\n\nimport './TickMath.sol';\nimport './LiquidityMath.sol';\n\n/// @title Tick\n/// @notice Contains functions for managing tick processes and relevant calculations\nlibrary Tick {\n using LowGasSafeMath for int256;\n using SafeCast for int256;\n\n // info stored for each initialized individual tick\n struct Info {\n // the total position liquidity that references this tick\n uint128 liquidityGross;\n // amount of net liquidity added (subtracted) when tick is crossed from left to right (right to left),\n int128 liquidityNet;\n // fee growth per unit of liquidity on the _other_ side of this tick (relative to the current tick)\n // only has relative meaning, not absolute — the value depends on when the tick is initialized\n uint256 feeGrowthOutside0X128;\n uint256 feeGrowthOutside1X128;\n // the cumulative tick value on the other side of the tick\n int56 tickCumulativeOutside;\n // the seconds per unit of liquidity on the _other_ side of this tick (relative to the current tick)\n // only has relative meaning, not absolute — the value depends on when the tick is initialized\n uint160 secondsPerLiquidityOutsideX128;\n // the seconds spent on the other side of the tick (relative to the current tick)\n // only has relative meaning, not absolute — the value depends on when the tick is initialized\n uint32 secondsOutside;\n // true iff the tick is initialized, i.e. the value is exactly equivalent to the expression liquidityGross != 0\n // these 8 bits are set to prevent fresh sstores when crossing newly initialized ticks\n bool initialized;\n }\n\n /// @notice Derives max liquidity per tick from given tick spacing\n /// @dev Executed within the pool constructor\n /// @param tickSpacing The amount of required tick separation, realized in multiples of `tickSpacing`\n /// e.g., a tickSpacing of 3 requires ticks to be initialized every 3rd tick i.e., ..., -6, -3, 0, 3, 6, ...\n /// @return The max liquidity per tick\n function tickSpacingToMaxLiquidityPerTick(int24 tickSpacing) internal pure returns (uint128) {\n int24 minTick = (TickMath.MIN_TICK / tickSpacing) * tickSpacing;\n int24 maxTick = (TickMath.MAX_TICK / tickSpacing) * tickSpacing;\n uint24 numTicks = uint24((maxTick - minTick) / tickSpacing) + 1;\n return type(uint128).max / numTicks;\n }\n\n /// @notice Retrieves fee growth data\n /// @param self The mapping containing all tick information for initialized ticks\n /// @param tickLower The lower tick boundary of the position\n /// @param tickUpper The upper tick boundary of the position\n /// @param tickCurrent The current tick\n /// @param feeGrowthGlobal0X128 The all-time global fee growth, per unit of liquidity, in token0\n /// @param feeGrowthGlobal1X128 The all-time global fee growth, per unit of liquidity, in token1\n /// @return feeGrowthInside0X128 The all-time fee growth in token0, per unit of liquidity, inside the position's tick boundaries\n /// @return feeGrowthInside1X128 The all-time fee growth in token1, per unit of liquidity, inside the position's tick boundaries\n function getFeeGrowthInside(\n mapping(int24 => Tick.Info) storage self,\n int24 tickLower,\n int24 tickUpper,\n int24 tickCurrent,\n uint256 feeGrowthGlobal0X128,\n uint256 feeGrowthGlobal1X128\n ) internal view returns (uint256 feeGrowthInside0X128, uint256 feeGrowthInside1X128) {\n Info storage lower = self[tickLower];\n Info storage upper = self[tickUpper];\n\n // calculate fee growth below\n uint256 feeGrowthBelow0X128;\n uint256 feeGrowthBelow1X128;\n if (tickCurrent >= tickLower) {\n feeGrowthBelow0X128 = lower.feeGrowthOutside0X128;\n feeGrowthBelow1X128 = lower.feeGrowthOutside1X128;\n } else {\n feeGrowthBelow0X128 = feeGrowthGlobal0X128 - lower.feeGrowthOutside0X128;\n feeGrowthBelow1X128 = feeGrowthGlobal1X128 - lower.feeGrowthOutside1X128;\n }\n\n // calculate fee growth above\n uint256 feeGrowthAbove0X128;\n uint256 feeGrowthAbove1X128;\n if (tickCurrent < tickUpper) {\n feeGrowthAbove0X128 = upper.feeGrowthOutside0X128;\n feeGrowthAbove1X128 = upper.feeGrowthOutside1X128;\n } else {\n feeGrowthAbove0X128 = feeGrowthGlobal0X128 - upper.feeGrowthOutside0X128;\n feeGrowthAbove1X128 = feeGrowthGlobal1X128 - upper.feeGrowthOutside1X128;\n }\n\n feeGrowthInside0X128 = feeGrowthGlobal0X128 - feeGrowthBelow0X128 - feeGrowthAbove0X128;\n feeGrowthInside1X128 = feeGrowthGlobal1X128 - feeGrowthBelow1X128 - feeGrowthAbove1X128;\n }\n\n /// @notice Updates a tick and returns true if the tick was flipped from initialized to uninitialized, or vice versa\n /// @param self The mapping containing all tick information for initialized ticks\n /// @param tick The tick that will be updated\n /// @param tickCurrent The current tick\n /// @param liquidityDelta A new amount of liquidity to be added (subtracted) when tick is crossed from left to right (right to left)\n /// @param feeGrowthGlobal0X128 The all-time global fee growth, per unit of liquidity, in token0\n /// @param feeGrowthGlobal1X128 The all-time global fee growth, per unit of liquidity, in token1\n /// @param secondsPerLiquidityCumulativeX128 The all-time seconds per max(1, liquidity) of the pool\n /// @param time The current block timestamp cast to a uint32\n /// @param upper true for updating a position's upper tick, or false for updating a position's lower tick\n /// @param maxLiquidity The maximum liquidity allocation for a single tick\n /// @return flipped Whether the tick was flipped from initialized to uninitialized, or vice versa\n function update(\n mapping(int24 => Tick.Info) storage self,\n int24 tick,\n int24 tickCurrent,\n int128 liquidityDelta,\n uint256 feeGrowthGlobal0X128,\n uint256 feeGrowthGlobal1X128,\n uint160 secondsPerLiquidityCumulativeX128,\n int56 tickCumulative,\n uint32 time,\n bool upper,\n uint128 maxLiquidity\n ) internal returns (bool flipped) {\n Tick.Info storage info = self[tick];\n\n uint128 liquidityGrossBefore = info.liquidityGross;\n uint128 liquidityGrossAfter = LiquidityMath.addDelta(liquidityGrossBefore, liquidityDelta);\n\n require(liquidityGrossAfter <= maxLiquidity, 'LO');\n\n flipped = (liquidityGrossAfter == 0) != (liquidityGrossBefore == 0);\n\n if (liquidityGrossBefore == 0) {\n // by convention, we assume that all growth before a tick was initialized happened _below_ the tick\n if (tick <= tickCurrent) {\n info.feeGrowthOutside0X128 = feeGrowthGlobal0X128;\n info.feeGrowthOutside1X128 = feeGrowthGlobal1X128;\n info.secondsPerLiquidityOutsideX128 = secondsPerLiquidityCumulativeX128;\n info.tickCumulativeOutside = tickCumulative;\n info.secondsOutside = time;\n }\n info.initialized = true;\n }\n\n info.liquidityGross = liquidityGrossAfter;\n\n // when the lower (upper) tick is crossed left to right (right to left), liquidity must be added (removed)\n info.liquidityNet = upper\n ? int256(info.liquidityNet).sub(liquidityDelta).toInt128()\n : int256(info.liquidityNet).add(liquidityDelta).toInt128();\n }\n\n /// @notice Clears tick data\n /// @param self The mapping containing all initialized tick information for initialized ticks\n /// @param tick The tick that will be cleared\n function clear(mapping(int24 => Tick.Info) storage self, int24 tick) internal {\n delete self[tick];\n }\n\n /// @notice Transitions to next tick as needed by price movement\n /// @param self The mapping containing all tick information for initialized ticks\n /// @param tick The destination tick of the transition\n /// @param feeGrowthGlobal0X128 The all-time global fee growth, per unit of liquidity, in token0\n /// @param feeGrowthGlobal1X128 The all-time global fee growth, per unit of liquidity, in token1\n /// @param secondsPerLiquidityCumulativeX128 The current seconds per liquidity\n /// @param time The current block.timestamp\n /// @return liquidityNet The amount of liquidity added (subtracted) when tick is crossed from left to right (right to left)\n function cross(\n mapping(int24 => Tick.Info) storage self,\n int24 tick,\n uint256 feeGrowthGlobal0X128,\n uint256 feeGrowthGlobal1X128,\n uint160 secondsPerLiquidityCumulativeX128,\n int56 tickCumulative,\n uint32 time\n ) internal returns (int128 liquidityNet) {\n Tick.Info storage info = self[tick];\n info.feeGrowthOutside0X128 = feeGrowthGlobal0X128 - info.feeGrowthOutside0X128;\n info.feeGrowthOutside1X128 = feeGrowthGlobal1X128 - info.feeGrowthOutside1X128;\n info.secondsPerLiquidityOutsideX128 = secondsPerLiquidityCumulativeX128 - info.secondsPerLiquidityOutsideX128;\n info.tickCumulativeOutside = tickCumulative - info.tickCumulativeOutside;\n info.secondsOutside = time - info.secondsOutside;\n liquidityNet = info.liquidityNet;\n }\n}\n" - }, - "@uniswap/v3-core/contracts/libraries/LowGasSafeMath.sol": { - "content": "// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.7.0;\n\n/// @title Optimized overflow and underflow safe math operations\n/// @notice Contains methods for doing math operations that revert on overflow or underflow for minimal gas cost\nlibrary LowGasSafeMath {\n /// @notice Returns x + y, reverts if sum overflows uint256\n /// @param x The augend\n /// @param y The addend\n /// @return z The sum of x and y\n function add(uint256 x, uint256 y) internal pure returns (uint256 z) {\n require((z = x + y) >= x);\n }\n\n /// @notice Returns x - y, reverts if underflows\n /// @param x The minuend\n /// @param y The subtrahend\n /// @return z The difference of x and y\n function sub(uint256 x, uint256 y) internal pure returns (uint256 z) {\n require((z = x - y) <= x);\n }\n\n /// @notice Returns x * y, reverts if overflows\n /// @param x The multiplicand\n /// @param y The multiplier\n /// @return z The product of x and y\n function mul(uint256 x, uint256 y) internal pure returns (uint256 z) {\n require(x == 0 || (z = x * y) / x == y);\n }\n\n /// @notice Returns x + y, reverts if overflows or underflows\n /// @param x The augend\n /// @param y The addend\n /// @return z The sum of x and y\n function add(int256 x, int256 y) internal pure returns (int256 z) {\n require((z = x + y) >= x == (y >= 0));\n }\n\n /// @notice Returns x - y, reverts if overflows or underflows\n /// @param x The minuend\n /// @param y The subtrahend\n /// @return z The difference of x and y\n function sub(int256 x, int256 y) internal pure returns (int256 z) {\n require((z = x - y) <= x == (y >= 0));\n }\n}\n" - }, - "@uniswap/v3-core/contracts/libraries/SafeCast.sol": { - "content": "// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\n/// @title Safe casting methods\n/// @notice Contains methods for safely casting between types\nlibrary SafeCast {\n /// @notice Cast a uint256 to a uint160, revert on overflow\n /// @param y The uint256 to be downcasted\n /// @return z The downcasted integer, now type uint160\n function toUint160(uint256 y) internal pure returns (uint160 z) {\n require((z = uint160(y)) == y);\n }\n\n /// @notice Cast a int256 to a int128, revert on overflow or underflow\n /// @param y The int256 to be downcasted\n /// @return z The downcasted integer, now type int128\n function toInt128(int256 y) internal pure returns (int128 z) {\n require((z = int128(y)) == y);\n }\n\n /// @notice Cast a uint256 to a int256, revert on overflow\n /// @param y The uint256 to be casted\n /// @return z The casted integer, now type int256\n function toInt256(uint256 y) internal pure returns (int256 z) {\n require(y < 2**255);\n z = int256(y);\n }\n}\n" - }, - "@uniswap/v3-core/contracts/libraries/LiquidityMath.sol": { - "content": "// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\n/// @title Math library for liquidity\nlibrary LiquidityMath {\n /// @notice Add a signed liquidity delta to liquidity and revert if it overflows or underflows\n /// @param x The liquidity before change\n /// @param y The delta by which liquidity should be changed\n /// @return z The liquidity delta\n function addDelta(uint128 x, int128 y) internal pure returns (uint128 z) {\n if (y < 0) {\n require((z = x - uint128(-y)) < x, 'LS');\n } else {\n require((z = x + uint128(y)) >= x, 'LA');\n }\n }\n}\n" - }, - "@uniswap/v3-core/contracts/libraries/Position.sol": { - "content": "// SPDX-License-Identifier: BUSL-1.1\npragma solidity >=0.5.0;\n\nimport './FullMath.sol';\nimport './FixedPoint128.sol';\nimport './LiquidityMath.sol';\n\n/// @title Position\n/// @notice Positions represent an owner address' liquidity between a lower and upper tick boundary\n/// @dev Positions store additional state for tracking fees owed to the position\nlibrary Position {\n // info stored for each user's position\n struct Info {\n // the amount of liquidity owned by this position\n uint128 liquidity;\n // fee growth per unit of liquidity as of the last update to liquidity or fees owed\n uint256 feeGrowthInside0LastX128;\n uint256 feeGrowthInside1LastX128;\n // the fees owed to the position owner in token0/token1\n uint128 tokensOwed0;\n uint128 tokensOwed1;\n }\n\n /// @notice Returns the Info struct of a position, given an owner and position boundaries\n /// @param self The mapping containing all user positions\n /// @param owner The address of the position owner\n /// @param tickLower The lower tick boundary of the position\n /// @param tickUpper The upper tick boundary of the position\n /// @return position The position info struct of the given owners' position\n function get(\n mapping(bytes32 => Info) storage self,\n address owner,\n int24 tickLower,\n int24 tickUpper\n ) internal view returns (Position.Info storage position) {\n position = self[keccak256(abi.encodePacked(owner, tickLower, tickUpper))];\n }\n\n /// @notice Credits accumulated fees to a user's position\n /// @param self The individual position to update\n /// @param liquidityDelta The change in pool liquidity as a result of the position update\n /// @param feeGrowthInside0X128 The all-time fee growth in token0, per unit of liquidity, inside the position's tick boundaries\n /// @param feeGrowthInside1X128 The all-time fee growth in token1, per unit of liquidity, inside the position's tick boundaries\n function update(\n Info storage self,\n int128 liquidityDelta,\n uint256 feeGrowthInside0X128,\n uint256 feeGrowthInside1X128\n ) internal {\n Info memory _self = self;\n\n uint128 liquidityNext;\n if (liquidityDelta == 0) {\n require(_self.liquidity > 0, 'NP'); // disallow pokes for 0 liquidity positions\n liquidityNext = _self.liquidity;\n } else {\n liquidityNext = LiquidityMath.addDelta(_self.liquidity, liquidityDelta);\n }\n\n // calculate accumulated fees\n uint128 tokensOwed0 =\n uint128(\n FullMath.mulDiv(\n feeGrowthInside0X128 - _self.feeGrowthInside0LastX128,\n _self.liquidity,\n FixedPoint128.Q128\n )\n );\n uint128 tokensOwed1 =\n uint128(\n FullMath.mulDiv(\n feeGrowthInside1X128 - _self.feeGrowthInside1LastX128,\n _self.liquidity,\n FixedPoint128.Q128\n )\n );\n\n // update the position\n if (liquidityDelta != 0) self.liquidity = liquidityNext;\n self.feeGrowthInside0LastX128 = feeGrowthInside0X128;\n self.feeGrowthInside1LastX128 = feeGrowthInside1X128;\n if (tokensOwed0 > 0 || tokensOwed1 > 0) {\n // overflow is acceptable, have to withdraw before you hit type(uint128).max fees\n self.tokensOwed0 += tokensOwed0;\n self.tokensOwed1 += tokensOwed1;\n }\n }\n}\n" - }, - "@uniswap/v3-core/contracts/libraries/FixedPoint128.sol": { - "content": "// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.4.0;\n\n/// @title FixedPoint128\n/// @notice A library for handling binary fixed point numbers, see https://en.wikipedia.org/wiki/Q_(number_format)\nlibrary FixedPoint128 {\n uint256 internal constant Q128 = 0x100000000000000000000000000000000;\n}\n" - }, - "@uniswap/v3-core/contracts/UniswapV3Pool.sol": { - "content": "// SPDX-License-Identifier: BUSL-1.1\npragma solidity =0.7.6;\n\nimport './interfaces/IUniswapV3Pool.sol';\n\nimport './NoDelegateCall.sol';\n\nimport './libraries/LowGasSafeMath.sol';\nimport './libraries/SafeCast.sol';\nimport './libraries/Tick.sol';\nimport './libraries/TickBitmap.sol';\nimport './libraries/Position.sol';\nimport './libraries/Oracle.sol';\n\nimport './libraries/FullMath.sol';\nimport './libraries/FixedPoint128.sol';\nimport './libraries/TransferHelper.sol';\nimport './libraries/TickMath.sol';\nimport './libraries/LiquidityMath.sol';\nimport './libraries/SqrtPriceMath.sol';\nimport './libraries/SwapMath.sol';\n\nimport './interfaces/IUniswapV3PoolDeployer.sol';\nimport './interfaces/IUniswapV3Factory.sol';\nimport './interfaces/IERC20Minimal.sol';\nimport './interfaces/callback/IUniswapV3MintCallback.sol';\nimport './interfaces/callback/IUniswapV3SwapCallback.sol';\nimport './interfaces/callback/IUniswapV3FlashCallback.sol';\n\ncontract UniswapV3Pool is IUniswapV3Pool, NoDelegateCall {\n using LowGasSafeMath for uint256;\n using LowGasSafeMath for int256;\n using SafeCast for uint256;\n using SafeCast for int256;\n using Tick for mapping(int24 => Tick.Info);\n using TickBitmap for mapping(int16 => uint256);\n using Position for mapping(bytes32 => Position.Info);\n using Position for Position.Info;\n using Oracle for Oracle.Observation[65535];\n\n /// @inheritdoc IUniswapV3PoolImmutables\n address public immutable override factory;\n /// @inheritdoc IUniswapV3PoolImmutables\n address public immutable override token0;\n /// @inheritdoc IUniswapV3PoolImmutables\n address public immutable override token1;\n /// @inheritdoc IUniswapV3PoolImmutables\n uint24 public immutable override fee;\n\n /// @inheritdoc IUniswapV3PoolImmutables\n int24 public immutable override tickSpacing;\n\n /// @inheritdoc IUniswapV3PoolImmutables\n uint128 public immutable override maxLiquidityPerTick;\n\n struct Slot0 {\n // the current price\n uint160 sqrtPriceX96;\n // the current tick\n int24 tick;\n // the most-recently updated index of the observations array\n uint16 observationIndex;\n // the current maximum number of observations that are being stored\n uint16 observationCardinality;\n // the next maximum number of observations to store, triggered in observations.write\n uint16 observationCardinalityNext;\n // the current protocol fee as a percentage of the swap fee taken on withdrawal\n // represented as an integer denominator (1/x)%\n uint8 feeProtocol;\n // whether the pool is locked\n bool unlocked;\n }\n /// @inheritdoc IUniswapV3PoolState\n Slot0 public override slot0;\n\n /// @inheritdoc IUniswapV3PoolState\n uint256 public override feeGrowthGlobal0X128;\n /// @inheritdoc IUniswapV3PoolState\n uint256 public override feeGrowthGlobal1X128;\n\n // accumulated protocol fees in token0/token1 units\n struct ProtocolFees {\n uint128 token0;\n uint128 token1;\n }\n /// @inheritdoc IUniswapV3PoolState\n ProtocolFees public override protocolFees;\n\n /// @inheritdoc IUniswapV3PoolState\n uint128 public override liquidity;\n\n /// @inheritdoc IUniswapV3PoolState\n mapping(int24 => Tick.Info) public override ticks;\n /// @inheritdoc IUniswapV3PoolState\n mapping(int16 => uint256) public override tickBitmap;\n /// @inheritdoc IUniswapV3PoolState\n mapping(bytes32 => Position.Info) public override positions;\n /// @inheritdoc IUniswapV3PoolState\n Oracle.Observation[65535] public override observations;\n\n /// @dev Mutually exclusive reentrancy protection into the pool to/from a method. This method also prevents entrance\n /// to a function before the pool is initialized. The reentrancy guard is required throughout the contract because\n /// we use balance checks to determine the payment status of interactions such as mint, swap and flash.\n modifier lock() {\n require(slot0.unlocked, 'LOK');\n slot0.unlocked = false;\n _;\n slot0.unlocked = true;\n }\n\n /// @dev Prevents calling a function from anyone except the address returned by IUniswapV3Factory#owner()\n modifier onlyFactoryOwner() {\n require(msg.sender == IUniswapV3Factory(factory).owner());\n _;\n }\n\n constructor() {\n int24 _tickSpacing;\n (factory, token0, token1, fee, _tickSpacing) = IUniswapV3PoolDeployer(msg.sender).parameters();\n tickSpacing = _tickSpacing;\n\n maxLiquidityPerTick = Tick.tickSpacingToMaxLiquidityPerTick(_tickSpacing);\n }\n\n /// @dev Common checks for valid tick inputs.\n function checkTicks(int24 tickLower, int24 tickUpper) private pure {\n require(tickLower < tickUpper, 'TLU');\n require(tickLower >= TickMath.MIN_TICK, 'TLM');\n require(tickUpper <= TickMath.MAX_TICK, 'TUM');\n }\n\n /// @dev Returns the block timestamp truncated to 32 bits, i.e. mod 2**32. This method is overridden in tests.\n function _blockTimestamp() internal view virtual returns (uint32) {\n return uint32(block.timestamp); // truncation is desired\n }\n\n /// @dev Get the pool's balance of token0\n /// @dev This function is gas optimized to avoid a redundant extcodesize check in addition to the returndatasize\n /// check\n function balance0() private view returns (uint256) {\n (bool success, bytes memory data) =\n token0.staticcall(abi.encodeWithSelector(IERC20Minimal.balanceOf.selector, address(this)));\n require(success && data.length >= 32);\n return abi.decode(data, (uint256));\n }\n\n /// @dev Get the pool's balance of token1\n /// @dev This function is gas optimized to avoid a redundant extcodesize check in addition to the returndatasize\n /// check\n function balance1() private view returns (uint256) {\n (bool success, bytes memory data) =\n token1.staticcall(abi.encodeWithSelector(IERC20Minimal.balanceOf.selector, address(this)));\n require(success && data.length >= 32);\n return abi.decode(data, (uint256));\n }\n\n /// @inheritdoc IUniswapV3PoolDerivedState\n function snapshotCumulativesInside(int24 tickLower, int24 tickUpper)\n external\n view\n override\n noDelegateCall\n returns (\n int56 tickCumulativeInside,\n uint160 secondsPerLiquidityInsideX128,\n uint32 secondsInside\n )\n {\n checkTicks(tickLower, tickUpper);\n\n int56 tickCumulativeLower;\n int56 tickCumulativeUpper;\n uint160 secondsPerLiquidityOutsideLowerX128;\n uint160 secondsPerLiquidityOutsideUpperX128;\n uint32 secondsOutsideLower;\n uint32 secondsOutsideUpper;\n\n {\n Tick.Info storage lower = ticks[tickLower];\n Tick.Info storage upper = ticks[tickUpper];\n bool initializedLower;\n (tickCumulativeLower, secondsPerLiquidityOutsideLowerX128, secondsOutsideLower, initializedLower) = (\n lower.tickCumulativeOutside,\n lower.secondsPerLiquidityOutsideX128,\n lower.secondsOutside,\n lower.initialized\n );\n require(initializedLower);\n\n bool initializedUpper;\n (tickCumulativeUpper, secondsPerLiquidityOutsideUpperX128, secondsOutsideUpper, initializedUpper) = (\n upper.tickCumulativeOutside,\n upper.secondsPerLiquidityOutsideX128,\n upper.secondsOutside,\n upper.initialized\n );\n require(initializedUpper);\n }\n\n Slot0 memory _slot0 = slot0;\n\n if (_slot0.tick < tickLower) {\n return (\n tickCumulativeLower - tickCumulativeUpper,\n secondsPerLiquidityOutsideLowerX128 - secondsPerLiquidityOutsideUpperX128,\n secondsOutsideLower - secondsOutsideUpper\n );\n } else if (_slot0.tick < tickUpper) {\n uint32 time = _blockTimestamp();\n (int56 tickCumulative, uint160 secondsPerLiquidityCumulativeX128) =\n observations.observeSingle(\n time,\n 0,\n _slot0.tick,\n _slot0.observationIndex,\n liquidity,\n _slot0.observationCardinality\n );\n return (\n tickCumulative - tickCumulativeLower - tickCumulativeUpper,\n secondsPerLiquidityCumulativeX128 -\n secondsPerLiquidityOutsideLowerX128 -\n secondsPerLiquidityOutsideUpperX128,\n time - secondsOutsideLower - secondsOutsideUpper\n );\n } else {\n return (\n tickCumulativeUpper - tickCumulativeLower,\n secondsPerLiquidityOutsideUpperX128 - secondsPerLiquidityOutsideLowerX128,\n secondsOutsideUpper - secondsOutsideLower\n );\n }\n }\n\n /// @inheritdoc IUniswapV3PoolDerivedState\n function observe(uint32[] calldata secondsAgos)\n external\n view\n override\n noDelegateCall\n returns (int56[] memory tickCumulatives, uint160[] memory secondsPerLiquidityCumulativeX128s)\n {\n return\n observations.observe(\n _blockTimestamp(),\n secondsAgos,\n slot0.tick,\n slot0.observationIndex,\n liquidity,\n slot0.observationCardinality\n );\n }\n\n /// @inheritdoc IUniswapV3PoolActions\n function increaseObservationCardinalityNext(uint16 observationCardinalityNext)\n external\n override\n lock\n noDelegateCall\n {\n uint16 observationCardinalityNextOld = slot0.observationCardinalityNext; // for the event\n uint16 observationCardinalityNextNew =\n observations.grow(observationCardinalityNextOld, observationCardinalityNext);\n slot0.observationCardinalityNext = observationCardinalityNextNew;\n if (observationCardinalityNextOld != observationCardinalityNextNew)\n emit IncreaseObservationCardinalityNext(observationCardinalityNextOld, observationCardinalityNextNew);\n }\n\n /// @inheritdoc IUniswapV3PoolActions\n /// @dev not locked because it initializes unlocked\n function initialize(uint160 sqrtPriceX96) external override {\n require(slot0.sqrtPriceX96 == 0, 'AI');\n\n int24 tick = TickMath.getTickAtSqrtRatio(sqrtPriceX96);\n\n (uint16 cardinality, uint16 cardinalityNext) = observations.initialize(_blockTimestamp());\n\n slot0 = Slot0({\n sqrtPriceX96: sqrtPriceX96,\n tick: tick,\n observationIndex: 0,\n observationCardinality: cardinality,\n observationCardinalityNext: cardinalityNext,\n feeProtocol: 0,\n unlocked: true\n });\n\n emit Initialize(sqrtPriceX96, tick);\n }\n\n struct ModifyPositionParams {\n // the address that owns the position\n address owner;\n // the lower and upper tick of the position\n int24 tickLower;\n int24 tickUpper;\n // any change in liquidity\n int128 liquidityDelta;\n }\n\n /// @dev Effect some changes to a position\n /// @param params the position details and the change to the position's liquidity to effect\n /// @return position a storage pointer referencing the position with the given owner and tick range\n /// @return amount0 the amount of token0 owed to the pool, negative if the pool should pay the recipient\n /// @return amount1 the amount of token1 owed to the pool, negative if the pool should pay the recipient\n function _modifyPosition(ModifyPositionParams memory params)\n private\n noDelegateCall\n returns (\n Position.Info storage position,\n int256 amount0,\n int256 amount1\n )\n {\n checkTicks(params.tickLower, params.tickUpper);\n\n Slot0 memory _slot0 = slot0; // SLOAD for gas optimization\n\n position = _updatePosition(\n params.owner,\n params.tickLower,\n params.tickUpper,\n params.liquidityDelta,\n _slot0.tick\n );\n\n if (params.liquidityDelta != 0) {\n if (_slot0.tick < params.tickLower) {\n // current tick is below the passed range; liquidity can only become in range by crossing from left to\n // right, when we'll need _more_ token0 (it's becoming more valuable) so user must provide it\n amount0 = SqrtPriceMath.getAmount0Delta(\n TickMath.getSqrtRatioAtTick(params.tickLower),\n TickMath.getSqrtRatioAtTick(params.tickUpper),\n params.liquidityDelta\n );\n } else if (_slot0.tick < params.tickUpper) {\n // current tick is inside the passed range\n uint128 liquidityBefore = liquidity; // SLOAD for gas optimization\n\n // write an oracle entry\n (slot0.observationIndex, slot0.observationCardinality) = observations.write(\n _slot0.observationIndex,\n _blockTimestamp(),\n _slot0.tick,\n liquidityBefore,\n _slot0.observationCardinality,\n _slot0.observationCardinalityNext\n );\n\n amount0 = SqrtPriceMath.getAmount0Delta(\n _slot0.sqrtPriceX96,\n TickMath.getSqrtRatioAtTick(params.tickUpper),\n params.liquidityDelta\n );\n amount1 = SqrtPriceMath.getAmount1Delta(\n TickMath.getSqrtRatioAtTick(params.tickLower),\n _slot0.sqrtPriceX96,\n params.liquidityDelta\n );\n\n liquidity = LiquidityMath.addDelta(liquidityBefore, params.liquidityDelta);\n } else {\n // current tick is above the passed range; liquidity can only become in range by crossing from right to\n // left, when we'll need _more_ token1 (it's becoming more valuable) so user must provide it\n amount1 = SqrtPriceMath.getAmount1Delta(\n TickMath.getSqrtRatioAtTick(params.tickLower),\n TickMath.getSqrtRatioAtTick(params.tickUpper),\n params.liquidityDelta\n );\n }\n }\n }\n\n /// @dev Gets and updates a position with the given liquidity delta\n /// @param owner the owner of the position\n /// @param tickLower the lower tick of the position's tick range\n /// @param tickUpper the upper tick of the position's tick range\n /// @param tick the current tick, passed to avoid sloads\n function _updatePosition(\n address owner,\n int24 tickLower,\n int24 tickUpper,\n int128 liquidityDelta,\n int24 tick\n ) private returns (Position.Info storage position) {\n position = positions.get(owner, tickLower, tickUpper);\n\n uint256 _feeGrowthGlobal0X128 = feeGrowthGlobal0X128; // SLOAD for gas optimization\n uint256 _feeGrowthGlobal1X128 = feeGrowthGlobal1X128; // SLOAD for gas optimization\n\n // if we need to update the ticks, do it\n bool flippedLower;\n bool flippedUpper;\n if (liquidityDelta != 0) {\n uint32 time = _blockTimestamp();\n (int56 tickCumulative, uint160 secondsPerLiquidityCumulativeX128) =\n observations.observeSingle(\n time,\n 0,\n slot0.tick,\n slot0.observationIndex,\n liquidity,\n slot0.observationCardinality\n );\n\n flippedLower = ticks.update(\n tickLower,\n tick,\n liquidityDelta,\n _feeGrowthGlobal0X128,\n _feeGrowthGlobal1X128,\n secondsPerLiquidityCumulativeX128,\n tickCumulative,\n time,\n false,\n maxLiquidityPerTick\n );\n flippedUpper = ticks.update(\n tickUpper,\n tick,\n liquidityDelta,\n _feeGrowthGlobal0X128,\n _feeGrowthGlobal1X128,\n secondsPerLiquidityCumulativeX128,\n tickCumulative,\n time,\n true,\n maxLiquidityPerTick\n );\n\n if (flippedLower) {\n tickBitmap.flipTick(tickLower, tickSpacing);\n }\n if (flippedUpper) {\n tickBitmap.flipTick(tickUpper, tickSpacing);\n }\n }\n\n (uint256 feeGrowthInside0X128, uint256 feeGrowthInside1X128) =\n ticks.getFeeGrowthInside(tickLower, tickUpper, tick, _feeGrowthGlobal0X128, _feeGrowthGlobal1X128);\n\n position.update(liquidityDelta, feeGrowthInside0X128, feeGrowthInside1X128);\n\n // clear any tick data that is no longer needed\n if (liquidityDelta < 0) {\n if (flippedLower) {\n ticks.clear(tickLower);\n }\n if (flippedUpper) {\n ticks.clear(tickUpper);\n }\n }\n }\n\n /// @inheritdoc IUniswapV3PoolActions\n /// @dev noDelegateCall is applied indirectly via _modifyPosition\n function mint(\n address recipient,\n int24 tickLower,\n int24 tickUpper,\n uint128 amount,\n bytes calldata data\n ) external override lock returns (uint256 amount0, uint256 amount1) {\n require(amount > 0);\n (, int256 amount0Int, int256 amount1Int) =\n _modifyPosition(\n ModifyPositionParams({\n owner: recipient,\n tickLower: tickLower,\n tickUpper: tickUpper,\n liquidityDelta: int256(amount).toInt128()\n })\n );\n\n amount0 = uint256(amount0Int);\n amount1 = uint256(amount1Int);\n\n uint256 balance0Before;\n uint256 balance1Before;\n if (amount0 > 0) balance0Before = balance0();\n if (amount1 > 0) balance1Before = balance1();\n IUniswapV3MintCallback(msg.sender).uniswapV3MintCallback(amount0, amount1, data);\n if (amount0 > 0) require(balance0Before.add(amount0) <= balance0(), 'M0');\n if (amount1 > 0) require(balance1Before.add(amount1) <= balance1(), 'M1');\n\n emit Mint(msg.sender, recipient, tickLower, tickUpper, amount, amount0, amount1);\n }\n\n /// @inheritdoc IUniswapV3PoolActions\n function collect(\n address recipient,\n int24 tickLower,\n int24 tickUpper,\n uint128 amount0Requested,\n uint128 amount1Requested\n ) external override lock returns (uint128 amount0, uint128 amount1) {\n // we don't need to checkTicks here, because invalid positions will never have non-zero tokensOwed{0,1}\n Position.Info storage position = positions.get(msg.sender, tickLower, tickUpper);\n\n amount0 = amount0Requested > position.tokensOwed0 ? position.tokensOwed0 : amount0Requested;\n amount1 = amount1Requested > position.tokensOwed1 ? position.tokensOwed1 : amount1Requested;\n\n if (amount0 > 0) {\n position.tokensOwed0 -= amount0;\n TransferHelper.safeTransfer(token0, recipient, amount0);\n }\n if (amount1 > 0) {\n position.tokensOwed1 -= amount1;\n TransferHelper.safeTransfer(token1, recipient, amount1);\n }\n\n emit Collect(msg.sender, recipient, tickLower, tickUpper, amount0, amount1);\n }\n\n /// @inheritdoc IUniswapV3PoolActions\n /// @dev noDelegateCall is applied indirectly via _modifyPosition\n function burn(\n int24 tickLower,\n int24 tickUpper,\n uint128 amount\n ) external override lock returns (uint256 amount0, uint256 amount1) {\n (Position.Info storage position, int256 amount0Int, int256 amount1Int) =\n _modifyPosition(\n ModifyPositionParams({\n owner: msg.sender,\n tickLower: tickLower,\n tickUpper: tickUpper,\n liquidityDelta: -int256(amount).toInt128()\n })\n );\n\n amount0 = uint256(-amount0Int);\n amount1 = uint256(-amount1Int);\n\n if (amount0 > 0 || amount1 > 0) {\n (position.tokensOwed0, position.tokensOwed1) = (\n position.tokensOwed0 + uint128(amount0),\n position.tokensOwed1 + uint128(amount1)\n );\n }\n\n emit Burn(msg.sender, tickLower, tickUpper, amount, amount0, amount1);\n }\n\n struct SwapCache {\n // the protocol fee for the input token\n uint8 feeProtocol;\n // liquidity at the beginning of the swap\n uint128 liquidityStart;\n // the timestamp of the current block\n uint32 blockTimestamp;\n // the current value of the tick accumulator, computed only if we cross an initialized tick\n int56 tickCumulative;\n // the current value of seconds per liquidity accumulator, computed only if we cross an initialized tick\n uint160 secondsPerLiquidityCumulativeX128;\n // whether we've computed and cached the above two accumulators\n bool computedLatestObservation;\n }\n\n // the top level state of the swap, the results of which are recorded in storage at the end\n struct SwapState {\n // the amount remaining to be swapped in/out of the input/output asset\n int256 amountSpecifiedRemaining;\n // the amount already swapped out/in of the output/input asset\n int256 amountCalculated;\n // current sqrt(price)\n uint160 sqrtPriceX96;\n // the tick associated with the current price\n int24 tick;\n // the global fee growth of the input token\n uint256 feeGrowthGlobalX128;\n // amount of input token paid as protocol fee\n uint128 protocolFee;\n // the current liquidity in range\n uint128 liquidity;\n }\n\n struct StepComputations {\n // the price at the beginning of the step\n uint160 sqrtPriceStartX96;\n // the next tick to swap to from the current tick in the swap direction\n int24 tickNext;\n // whether tickNext is initialized or not\n bool initialized;\n // sqrt(price) for the next tick (1/0)\n uint160 sqrtPriceNextX96;\n // how much is being swapped in in this step\n uint256 amountIn;\n // how much is being swapped out\n uint256 amountOut;\n // how much fee is being paid in\n uint256 feeAmount;\n }\n\n /// @inheritdoc IUniswapV3PoolActions\n function swap(\n address recipient,\n bool zeroForOne,\n int256 amountSpecified,\n uint160 sqrtPriceLimitX96,\n bytes calldata data\n ) external override noDelegateCall returns (int256 amount0, int256 amount1) {\n require(amountSpecified != 0, 'AS');\n\n Slot0 memory slot0Start = slot0;\n\n require(slot0Start.unlocked, 'LOK');\n require(\n zeroForOne\n ? sqrtPriceLimitX96 < slot0Start.sqrtPriceX96 && sqrtPriceLimitX96 > TickMath.MIN_SQRT_RATIO\n : sqrtPriceLimitX96 > slot0Start.sqrtPriceX96 && sqrtPriceLimitX96 < TickMath.MAX_SQRT_RATIO,\n 'SPL'\n );\n\n slot0.unlocked = false;\n\n SwapCache memory cache =\n SwapCache({\n liquidityStart: liquidity,\n blockTimestamp: _blockTimestamp(),\n feeProtocol: zeroForOne ? (slot0Start.feeProtocol % 16) : (slot0Start.feeProtocol >> 4),\n secondsPerLiquidityCumulativeX128: 0,\n tickCumulative: 0,\n computedLatestObservation: false\n });\n\n bool exactInput = amountSpecified > 0;\n\n SwapState memory state =\n SwapState({\n amountSpecifiedRemaining: amountSpecified,\n amountCalculated: 0,\n sqrtPriceX96: slot0Start.sqrtPriceX96,\n tick: slot0Start.tick,\n feeGrowthGlobalX128: zeroForOne ? feeGrowthGlobal0X128 : feeGrowthGlobal1X128,\n protocolFee: 0,\n liquidity: cache.liquidityStart\n });\n\n // continue swapping as long as we haven't used the entire input/output and haven't reached the price limit\n while (state.amountSpecifiedRemaining != 0 && state.sqrtPriceX96 != sqrtPriceLimitX96) {\n StepComputations memory step;\n\n step.sqrtPriceStartX96 = state.sqrtPriceX96;\n\n (step.tickNext, step.initialized) = tickBitmap.nextInitializedTickWithinOneWord(\n state.tick,\n tickSpacing,\n zeroForOne\n );\n\n // ensure that we do not overshoot the min/max tick, as the tick bitmap is not aware of these bounds\n if (step.tickNext < TickMath.MIN_TICK) {\n step.tickNext = TickMath.MIN_TICK;\n } else if (step.tickNext > TickMath.MAX_TICK) {\n step.tickNext = TickMath.MAX_TICK;\n }\n\n // get the price for the next tick\n step.sqrtPriceNextX96 = TickMath.getSqrtRatioAtTick(step.tickNext);\n\n // compute values to swap to the target tick, price limit, or point where input/output amount is exhausted\n (state.sqrtPriceX96, step.amountIn, step.amountOut, step.feeAmount) = SwapMath.computeSwapStep(\n state.sqrtPriceX96,\n (zeroForOne ? step.sqrtPriceNextX96 < sqrtPriceLimitX96 : step.sqrtPriceNextX96 > sqrtPriceLimitX96)\n ? sqrtPriceLimitX96\n : step.sqrtPriceNextX96,\n state.liquidity,\n state.amountSpecifiedRemaining,\n fee\n );\n\n if (exactInput) {\n state.amountSpecifiedRemaining -= (step.amountIn + step.feeAmount).toInt256();\n state.amountCalculated = state.amountCalculated.sub(step.amountOut.toInt256());\n } else {\n state.amountSpecifiedRemaining += step.amountOut.toInt256();\n state.amountCalculated = state.amountCalculated.add((step.amountIn + step.feeAmount).toInt256());\n }\n\n // if the protocol fee is on, calculate how much is owed, decrement feeAmount, and increment protocolFee\n if (cache.feeProtocol > 0) {\n uint256 delta = step.feeAmount / cache.feeProtocol;\n step.feeAmount -= delta;\n state.protocolFee += uint128(delta);\n }\n\n // update global fee tracker\n if (state.liquidity > 0)\n state.feeGrowthGlobalX128 += FullMath.mulDiv(step.feeAmount, FixedPoint128.Q128, state.liquidity);\n\n // shift tick if we reached the next price\n if (state.sqrtPriceX96 == step.sqrtPriceNextX96) {\n // if the tick is initialized, run the tick transition\n if (step.initialized) {\n // check for the placeholder value, which we replace with the actual value the first time the swap\n // crosses an initialized tick\n if (!cache.computedLatestObservation) {\n (cache.tickCumulative, cache.secondsPerLiquidityCumulativeX128) = observations.observeSingle(\n cache.blockTimestamp,\n 0,\n slot0Start.tick,\n slot0Start.observationIndex,\n cache.liquidityStart,\n slot0Start.observationCardinality\n );\n cache.computedLatestObservation = true;\n }\n int128 liquidityNet =\n ticks.cross(\n step.tickNext,\n (zeroForOne ? state.feeGrowthGlobalX128 : feeGrowthGlobal0X128),\n (zeroForOne ? feeGrowthGlobal1X128 : state.feeGrowthGlobalX128),\n cache.secondsPerLiquidityCumulativeX128,\n cache.tickCumulative,\n cache.blockTimestamp\n );\n // if we're moving leftward, we interpret liquidityNet as the opposite sign\n // safe because liquidityNet cannot be type(int128).min\n if (zeroForOne) liquidityNet = -liquidityNet;\n\n state.liquidity = LiquidityMath.addDelta(state.liquidity, liquidityNet);\n }\n\n state.tick = zeroForOne ? step.tickNext - 1 : step.tickNext;\n } else if (state.sqrtPriceX96 != step.sqrtPriceStartX96) {\n // recompute unless we're on a lower tick boundary (i.e. already transitioned ticks), and haven't moved\n state.tick = TickMath.getTickAtSqrtRatio(state.sqrtPriceX96);\n }\n }\n\n // update tick and write an oracle entry if the tick change\n if (state.tick != slot0Start.tick) {\n (uint16 observationIndex, uint16 observationCardinality) =\n observations.write(\n slot0Start.observationIndex,\n cache.blockTimestamp,\n slot0Start.tick,\n cache.liquidityStart,\n slot0Start.observationCardinality,\n slot0Start.observationCardinalityNext\n );\n (slot0.sqrtPriceX96, slot0.tick, slot0.observationIndex, slot0.observationCardinality) = (\n state.sqrtPriceX96,\n state.tick,\n observationIndex,\n observationCardinality\n );\n } else {\n // otherwise just update the price\n slot0.sqrtPriceX96 = state.sqrtPriceX96;\n }\n\n // update liquidity if it changed\n if (cache.liquidityStart != state.liquidity) liquidity = state.liquidity;\n\n // update fee growth global and, if necessary, protocol fees\n // overflow is acceptable, protocol has to withdraw before it hits type(uint128).max fees\n if (zeroForOne) {\n feeGrowthGlobal0X128 = state.feeGrowthGlobalX128;\n if (state.protocolFee > 0) protocolFees.token0 += state.protocolFee;\n } else {\n feeGrowthGlobal1X128 = state.feeGrowthGlobalX128;\n if (state.protocolFee > 0) protocolFees.token1 += state.protocolFee;\n }\n\n (amount0, amount1) = zeroForOne == exactInput\n ? (amountSpecified - state.amountSpecifiedRemaining, state.amountCalculated)\n : (state.amountCalculated, amountSpecified - state.amountSpecifiedRemaining);\n\n // do the transfers and collect payment\n if (zeroForOne) {\n if (amount1 < 0) TransferHelper.safeTransfer(token1, recipient, uint256(-amount1));\n\n uint256 balance0Before = balance0();\n IUniswapV3SwapCallback(msg.sender).uniswapV3SwapCallback(amount0, amount1, data);\n require(balance0Before.add(uint256(amount0)) <= balance0(), 'IIA');\n } else {\n if (amount0 < 0) TransferHelper.safeTransfer(token0, recipient, uint256(-amount0));\n\n uint256 balance1Before = balance1();\n IUniswapV3SwapCallback(msg.sender).uniswapV3SwapCallback(amount0, amount1, data);\n require(balance1Before.add(uint256(amount1)) <= balance1(), 'IIA');\n }\n\n emit Swap(msg.sender, recipient, amount0, amount1, state.sqrtPriceX96, state.liquidity, state.tick);\n slot0.unlocked = true;\n }\n\n /// @inheritdoc IUniswapV3PoolActions\n function flash(\n address recipient,\n uint256 amount0,\n uint256 amount1,\n bytes calldata data\n ) external override lock noDelegateCall {\n uint128 _liquidity = liquidity;\n require(_liquidity > 0, 'L');\n\n uint256 fee0 = FullMath.mulDivRoundingUp(amount0, fee, 1e6);\n uint256 fee1 = FullMath.mulDivRoundingUp(amount1, fee, 1e6);\n uint256 balance0Before = balance0();\n uint256 balance1Before = balance1();\n\n if (amount0 > 0) TransferHelper.safeTransfer(token0, recipient, amount0);\n if (amount1 > 0) TransferHelper.safeTransfer(token1, recipient, amount1);\n\n IUniswapV3FlashCallback(msg.sender).uniswapV3FlashCallback(fee0, fee1, data);\n\n uint256 balance0After = balance0();\n uint256 balance1After = balance1();\n\n require(balance0Before.add(fee0) <= balance0After, 'F0');\n require(balance1Before.add(fee1) <= balance1After, 'F1');\n\n // sub is safe because we know balanceAfter is gt balanceBefore by at least fee\n uint256 paid0 = balance0After - balance0Before;\n uint256 paid1 = balance1After - balance1Before;\n\n if (paid0 > 0) {\n uint8 feeProtocol0 = slot0.feeProtocol % 16;\n uint256 fees0 = feeProtocol0 == 0 ? 0 : paid0 / feeProtocol0;\n if (uint128(fees0) > 0) protocolFees.token0 += uint128(fees0);\n feeGrowthGlobal0X128 += FullMath.mulDiv(paid0 - fees0, FixedPoint128.Q128, _liquidity);\n }\n if (paid1 > 0) {\n uint8 feeProtocol1 = slot0.feeProtocol >> 4;\n uint256 fees1 = feeProtocol1 == 0 ? 0 : paid1 / feeProtocol1;\n if (uint128(fees1) > 0) protocolFees.token1 += uint128(fees1);\n feeGrowthGlobal1X128 += FullMath.mulDiv(paid1 - fees1, FixedPoint128.Q128, _liquidity);\n }\n\n emit Flash(msg.sender, recipient, amount0, amount1, paid0, paid1);\n }\n\n /// @inheritdoc IUniswapV3PoolOwnerActions\n function setFeeProtocol(uint8 feeProtocol0, uint8 feeProtocol1) external override lock onlyFactoryOwner {\n require(\n (feeProtocol0 == 0 || (feeProtocol0 >= 4 && feeProtocol0 <= 10)) &&\n (feeProtocol1 == 0 || (feeProtocol1 >= 4 && feeProtocol1 <= 10))\n );\n uint8 feeProtocolOld = slot0.feeProtocol;\n slot0.feeProtocol = feeProtocol0 + (feeProtocol1 << 4);\n emit SetFeeProtocol(feeProtocolOld % 16, feeProtocolOld >> 4, feeProtocol0, feeProtocol1);\n }\n\n /// @inheritdoc IUniswapV3PoolOwnerActions\n function collectProtocol(\n address recipient,\n uint128 amount0Requested,\n uint128 amount1Requested\n ) external override lock onlyFactoryOwner returns (uint128 amount0, uint128 amount1) {\n amount0 = amount0Requested > protocolFees.token0 ? protocolFees.token0 : amount0Requested;\n amount1 = amount1Requested > protocolFees.token1 ? protocolFees.token1 : amount1Requested;\n\n if (amount0 > 0) {\n if (amount0 == protocolFees.token0) amount0--; // ensure that the slot is not cleared, for gas savings\n protocolFees.token0 -= amount0;\n TransferHelper.safeTransfer(token0, recipient, amount0);\n }\n if (amount1 > 0) {\n if (amount1 == protocolFees.token1) amount1--; // ensure that the slot is not cleared, for gas savings\n protocolFees.token1 -= amount1;\n TransferHelper.safeTransfer(token1, recipient, amount1);\n }\n\n emit CollectProtocol(msg.sender, recipient, amount0, amount1);\n }\n}\n" - }, - "@uniswap/v3-core/contracts/NoDelegateCall.sol": { - "content": "// SPDX-License-Identifier: BUSL-1.1\npragma solidity =0.7.6;\n\n/// @title Prevents delegatecall to a contract\n/// @notice Base contract that provides a modifier for preventing delegatecall to methods in a child contract\nabstract contract NoDelegateCall {\n /// @dev The original address of this contract\n address private immutable original;\n\n constructor() {\n // Immutables are computed in the init code of the contract, and then inlined into the deployed bytecode.\n // In other words, this variable won't change when it's checked at runtime.\n original = address(this);\n }\n\n /// @dev Private method is used instead of inlining into modifier because modifiers are copied into each method,\n /// and the use of immutable means the address bytes are copied in every place the modifier is used.\n function checkNotDelegateCall() private view {\n require(address(this) == original);\n }\n\n /// @notice Prevents delegatecall into the modified method\n modifier noDelegateCall() {\n checkNotDelegateCall();\n _;\n }\n}\n" - }, - "@uniswap/v3-core/contracts/libraries/TickBitmap.sol": { - "content": "// SPDX-License-Identifier: BUSL-1.1\npragma solidity >=0.5.0;\n\nimport './BitMath.sol';\n\n/// @title Packed tick initialized state library\n/// @notice Stores a packed mapping of tick index to its initialized state\n/// @dev The mapping uses int16 for keys since ticks are represented as int24 and there are 256 (2^8) values per word.\nlibrary TickBitmap {\n /// @notice Computes the position in the mapping where the initialized bit for a tick lives\n /// @param tick The tick for which to compute the position\n /// @return wordPos The key in the mapping containing the word in which the bit is stored\n /// @return bitPos The bit position in the word where the flag is stored\n function position(int24 tick) private pure returns (int16 wordPos, uint8 bitPos) {\n wordPos = int16(tick >> 8);\n bitPos = uint8(tick % 256);\n }\n\n /// @notice Flips the initialized state for a given tick from false to true, or vice versa\n /// @param self The mapping in which to flip the tick\n /// @param tick The tick to flip\n /// @param tickSpacing The spacing between usable ticks\n function flipTick(\n mapping(int16 => uint256) storage self,\n int24 tick,\n int24 tickSpacing\n ) internal {\n require(tick % tickSpacing == 0); // ensure that the tick is spaced\n (int16 wordPos, uint8 bitPos) = position(tick / tickSpacing);\n uint256 mask = 1 << bitPos;\n self[wordPos] ^= mask;\n }\n\n /// @notice Returns the next initialized tick contained in the same word (or adjacent word) as the tick that is either\n /// to the left (less than or equal to) or right (greater than) of the given tick\n /// @param self The mapping in which to compute the next initialized tick\n /// @param tick The starting tick\n /// @param tickSpacing The spacing between usable ticks\n /// @param lte Whether to search for the next initialized tick to the left (less than or equal to the starting tick)\n /// @return next The next initialized or uninitialized tick up to 256 ticks away from the current tick\n /// @return initialized Whether the next tick is initialized, as the function only searches within up to 256 ticks\n function nextInitializedTickWithinOneWord(\n mapping(int16 => uint256) storage self,\n int24 tick,\n int24 tickSpacing,\n bool lte\n ) internal view returns (int24 next, bool initialized) {\n int24 compressed = tick / tickSpacing;\n if (tick < 0 && tick % tickSpacing != 0) compressed--; // round towards negative infinity\n\n if (lte) {\n (int16 wordPos, uint8 bitPos) = position(compressed);\n // all the 1s at or to the right of the current bitPos\n uint256 mask = (1 << bitPos) - 1 + (1 << bitPos);\n uint256 masked = self[wordPos] & mask;\n\n // if there are no initialized ticks to the right of or at the current tick, return rightmost in the word\n initialized = masked != 0;\n // overflow/underflow is possible, but prevented externally by limiting both tickSpacing and tick\n next = initialized\n ? (compressed - int24(bitPos - BitMath.mostSignificantBit(masked))) * tickSpacing\n : (compressed - int24(bitPos)) * tickSpacing;\n } else {\n // start from the word of the next tick, since the current tick state doesn't matter\n (int16 wordPos, uint8 bitPos) = position(compressed + 1);\n // all the 1s at or to the left of the bitPos\n uint256 mask = ~((1 << bitPos) - 1);\n uint256 masked = self[wordPos] & mask;\n\n // if there are no initialized ticks to the left of the current tick, return leftmost in the word\n initialized = masked != 0;\n // overflow/underflow is possible, but prevented externally by limiting both tickSpacing and tick\n next = initialized\n ? (compressed + 1 + int24(BitMath.leastSignificantBit(masked) - bitPos)) * tickSpacing\n : (compressed + 1 + int24(type(uint8).max - bitPos)) * tickSpacing;\n }\n }\n}\n" - }, - "@uniswap/v3-core/contracts/libraries/Oracle.sol": { - "content": "// SPDX-License-Identifier: BUSL-1.1\npragma solidity >=0.5.0;\n\n/// @title Oracle\n/// @notice Provides price and liquidity data useful for a wide variety of system designs\n/// @dev Instances of stored oracle data, \"observations\", are collected in the oracle array\n/// Every pool is initialized with an oracle array length of 1. Anyone can pay the SSTOREs to increase the\n/// maximum length of the oracle array. New slots will be added when the array is fully populated.\n/// Observations are overwritten when the full length of the oracle array is populated.\n/// The most recent observation is available, independent of the length of the oracle array, by passing 0 to observe()\nlibrary Oracle {\n struct Observation {\n // the block timestamp of the observation\n uint32 blockTimestamp;\n // the tick accumulator, i.e. tick * time elapsed since the pool was first initialized\n int56 tickCumulative;\n // the seconds per liquidity, i.e. seconds elapsed / max(1, liquidity) since the pool was first initialized\n uint160 secondsPerLiquidityCumulativeX128;\n // whether or not the observation is initialized\n bool initialized;\n }\n\n /// @notice Transforms a previous observation into a new observation, given the passage of time and the current tick and liquidity values\n /// @dev blockTimestamp _must_ be chronologically equal to or greater than last.blockTimestamp, safe for 0 or 1 overflows\n /// @param last The specified observation to be transformed\n /// @param blockTimestamp The timestamp of the new observation\n /// @param tick The active tick at the time of the new observation\n /// @param liquidity The total in-range liquidity at the time of the new observation\n /// @return Observation The newly populated observation\n function transform(\n Observation memory last,\n uint32 blockTimestamp,\n int24 tick,\n uint128 liquidity\n ) private pure returns (Observation memory) {\n uint32 delta = blockTimestamp - last.blockTimestamp;\n return\n Observation({\n blockTimestamp: blockTimestamp,\n tickCumulative: last.tickCumulative + int56(tick) * delta,\n secondsPerLiquidityCumulativeX128: last.secondsPerLiquidityCumulativeX128 +\n ((uint160(delta) << 128) / (liquidity > 0 ? liquidity : 1)),\n initialized: true\n });\n }\n\n /// @notice Initialize the oracle array by writing the first slot. Called once for the lifecycle of the observations array\n /// @param self The stored oracle array\n /// @param time The time of the oracle initialization, via block.timestamp truncated to uint32\n /// @return cardinality The number of populated elements in the oracle array\n /// @return cardinalityNext The new length of the oracle array, independent of population\n function initialize(Observation[65535] storage self, uint32 time)\n internal\n returns (uint16 cardinality, uint16 cardinalityNext)\n {\n self[0] = Observation({\n blockTimestamp: time,\n tickCumulative: 0,\n secondsPerLiquidityCumulativeX128: 0,\n initialized: true\n });\n return (1, 1);\n }\n\n /// @notice Writes an oracle observation to the array\n /// @dev Writable at most once per block. Index represents the most recently written element. cardinality and index must be tracked externally.\n /// If the index is at the end of the allowable array length (according to cardinality), and the next cardinality\n /// is greater than the current one, cardinality may be increased. This restriction is created to preserve ordering.\n /// @param self The stored oracle array\n /// @param index The index of the observation that was most recently written to the observations array\n /// @param blockTimestamp The timestamp of the new observation\n /// @param tick The active tick at the time of the new observation\n /// @param liquidity The total in-range liquidity at the time of the new observation\n /// @param cardinality The number of populated elements in the oracle array\n /// @param cardinalityNext The new length of the oracle array, independent of population\n /// @return indexUpdated The new index of the most recently written element in the oracle array\n /// @return cardinalityUpdated The new cardinality of the oracle array\n function write(\n Observation[65535] storage self,\n uint16 index,\n uint32 blockTimestamp,\n int24 tick,\n uint128 liquidity,\n uint16 cardinality,\n uint16 cardinalityNext\n ) internal returns (uint16 indexUpdated, uint16 cardinalityUpdated) {\n Observation memory last = self[index];\n\n // early return if we've already written an observation this block\n if (last.blockTimestamp == blockTimestamp) return (index, cardinality);\n\n // if the conditions are right, we can bump the cardinality\n if (cardinalityNext > cardinality && index == (cardinality - 1)) {\n cardinalityUpdated = cardinalityNext;\n } else {\n cardinalityUpdated = cardinality;\n }\n\n indexUpdated = (index + 1) % cardinalityUpdated;\n self[indexUpdated] = transform(last, blockTimestamp, tick, liquidity);\n }\n\n /// @notice Prepares the oracle array to store up to `next` observations\n /// @param self The stored oracle array\n /// @param current The current next cardinality of the oracle array\n /// @param next The proposed next cardinality which will be populated in the oracle array\n /// @return next The next cardinality which will be populated in the oracle array\n function grow(\n Observation[65535] storage self,\n uint16 current,\n uint16 next\n ) internal returns (uint16) {\n require(current > 0, 'I');\n // no-op if the passed next value isn't greater than the current next value\n if (next <= current) return current;\n // store in each slot to prevent fresh SSTOREs in swaps\n // this data will not be used because the initialized boolean is still false\n for (uint16 i = current; i < next; i++) self[i].blockTimestamp = 1;\n return next;\n }\n\n /// @notice comparator for 32-bit timestamps\n /// @dev safe for 0 or 1 overflows, a and b _must_ be chronologically before or equal to time\n /// @param time A timestamp truncated to 32 bits\n /// @param a A comparison timestamp from which to determine the relative position of `time`\n /// @param b From which to determine the relative position of `time`\n /// @return bool Whether `a` is chronologically <= `b`\n function lte(\n uint32 time,\n uint32 a,\n uint32 b\n ) private pure returns (bool) {\n // if there hasn't been overflow, no need to adjust\n if (a <= time && b <= time) return a <= b;\n\n uint256 aAdjusted = a > time ? a : a + 2**32;\n uint256 bAdjusted = b > time ? b : b + 2**32;\n\n return aAdjusted <= bAdjusted;\n }\n\n /// @notice Fetches the observations beforeOrAt and atOrAfter a target, i.e. where [beforeOrAt, atOrAfter] is satisfied.\n /// The result may be the same observation, or adjacent observations.\n /// @dev The answer must be contained in the array, used when the target is located within the stored observation\n /// boundaries: older than the most recent observation and younger, or the same age as, the oldest observation\n /// @param self The stored oracle array\n /// @param time The current block.timestamp\n /// @param target The timestamp at which the reserved observation should be for\n /// @param index The index of the observation that was most recently written to the observations array\n /// @param cardinality The number of populated elements in the oracle array\n /// @return beforeOrAt The observation recorded before, or at, the target\n /// @return atOrAfter The observation recorded at, or after, the target\n function binarySearch(\n Observation[65535] storage self,\n uint32 time,\n uint32 target,\n uint16 index,\n uint16 cardinality\n ) private view returns (Observation memory beforeOrAt, Observation memory atOrAfter) {\n uint256 l = (index + 1) % cardinality; // oldest observation\n uint256 r = l + cardinality - 1; // newest observation\n uint256 i;\n while (true) {\n i = (l + r) / 2;\n\n beforeOrAt = self[i % cardinality];\n\n // we've landed on an uninitialized tick, keep searching higher (more recently)\n if (!beforeOrAt.initialized) {\n l = i + 1;\n continue;\n }\n\n atOrAfter = self[(i + 1) % cardinality];\n\n bool targetAtOrAfter = lte(time, beforeOrAt.blockTimestamp, target);\n\n // check if we've found the answer!\n if (targetAtOrAfter && lte(time, target, atOrAfter.blockTimestamp)) break;\n\n if (!targetAtOrAfter) r = i - 1;\n else l = i + 1;\n }\n }\n\n /// @notice Fetches the observations beforeOrAt and atOrAfter a given target, i.e. where [beforeOrAt, atOrAfter] is satisfied\n /// @dev Assumes there is at least 1 initialized observation.\n /// Used by observeSingle() to compute the counterfactual accumulator values as of a given block timestamp.\n /// @param self The stored oracle array\n /// @param time The current block.timestamp\n /// @param target The timestamp at which the reserved observation should be for\n /// @param tick The active tick at the time of the returned or simulated observation\n /// @param index The index of the observation that was most recently written to the observations array\n /// @param liquidity The total pool liquidity at the time of the call\n /// @param cardinality The number of populated elements in the oracle array\n /// @return beforeOrAt The observation which occurred at, or before, the given timestamp\n /// @return atOrAfter The observation which occurred at, or after, the given timestamp\n function getSurroundingObservations(\n Observation[65535] storage self,\n uint32 time,\n uint32 target,\n int24 tick,\n uint16 index,\n uint128 liquidity,\n uint16 cardinality\n ) private view returns (Observation memory beforeOrAt, Observation memory atOrAfter) {\n // optimistically set before to the newest observation\n beforeOrAt = self[index];\n\n // if the target is chronologically at or after the newest observation, we can early return\n if (lte(time, beforeOrAt.blockTimestamp, target)) {\n if (beforeOrAt.blockTimestamp == target) {\n // if newest observation equals target, we're in the same block, so we can ignore atOrAfter\n return (beforeOrAt, atOrAfter);\n } else {\n // otherwise, we need to transform\n return (beforeOrAt, transform(beforeOrAt, target, tick, liquidity));\n }\n }\n\n // now, set before to the oldest observation\n beforeOrAt = self[(index + 1) % cardinality];\n if (!beforeOrAt.initialized) beforeOrAt = self[0];\n\n // ensure that the target is chronologically at or after the oldest observation\n require(lte(time, beforeOrAt.blockTimestamp, target), 'OLD');\n\n // if we've reached this point, we have to binary search\n return binarySearch(self, time, target, index, cardinality);\n }\n\n /// @dev Reverts if an observation at or before the desired observation timestamp does not exist.\n /// 0 may be passed as `secondsAgo' to return the current cumulative values.\n /// If called with a timestamp falling between two observations, returns the counterfactual accumulator values\n /// at exactly the timestamp between the two observations.\n /// @param self The stored oracle array\n /// @param time The current block timestamp\n /// @param secondsAgo The amount of time to look back, in seconds, at which point to return an observation\n /// @param tick The current tick\n /// @param index The index of the observation that was most recently written to the observations array\n /// @param liquidity The current in-range pool liquidity\n /// @param cardinality The number of populated elements in the oracle array\n /// @return tickCumulative The tick * time elapsed since the pool was first initialized, as of `secondsAgo`\n /// @return secondsPerLiquidityCumulativeX128 The time elapsed / max(1, liquidity) since the pool was first initialized, as of `secondsAgo`\n function observeSingle(\n Observation[65535] storage self,\n uint32 time,\n uint32 secondsAgo,\n int24 tick,\n uint16 index,\n uint128 liquidity,\n uint16 cardinality\n ) internal view returns (int56 tickCumulative, uint160 secondsPerLiquidityCumulativeX128) {\n if (secondsAgo == 0) {\n Observation memory last = self[index];\n if (last.blockTimestamp != time) last = transform(last, time, tick, liquidity);\n return (last.tickCumulative, last.secondsPerLiquidityCumulativeX128);\n }\n\n uint32 target = time - secondsAgo;\n\n (Observation memory beforeOrAt, Observation memory atOrAfter) =\n getSurroundingObservations(self, time, target, tick, index, liquidity, cardinality);\n\n if (target == beforeOrAt.blockTimestamp) {\n // we're at the left boundary\n return (beforeOrAt.tickCumulative, beforeOrAt.secondsPerLiquidityCumulativeX128);\n } else if (target == atOrAfter.blockTimestamp) {\n // we're at the right boundary\n return (atOrAfter.tickCumulative, atOrAfter.secondsPerLiquidityCumulativeX128);\n } else {\n // we're in the middle\n uint32 observationTimeDelta = atOrAfter.blockTimestamp - beforeOrAt.blockTimestamp;\n uint32 targetDelta = target - beforeOrAt.blockTimestamp;\n return (\n beforeOrAt.tickCumulative +\n ((atOrAfter.tickCumulative - beforeOrAt.tickCumulative) / observationTimeDelta) *\n targetDelta,\n beforeOrAt.secondsPerLiquidityCumulativeX128 +\n uint160(\n (uint256(\n atOrAfter.secondsPerLiquidityCumulativeX128 - beforeOrAt.secondsPerLiquidityCumulativeX128\n ) * targetDelta) / observationTimeDelta\n )\n );\n }\n }\n\n /// @notice Returns the accumulator values as of each time seconds ago from the given time in the array of `secondsAgos`\n /// @dev Reverts if `secondsAgos` > oldest observation\n /// @param self The stored oracle array\n /// @param time The current block.timestamp\n /// @param secondsAgos Each amount of time to look back, in seconds, at which point to return an observation\n /// @param tick The current tick\n /// @param index The index of the observation that was most recently written to the observations array\n /// @param liquidity The current in-range pool liquidity\n /// @param cardinality The number of populated elements in the oracle array\n /// @return tickCumulatives The tick * time elapsed since the pool was first initialized, as of each `secondsAgo`\n /// @return secondsPerLiquidityCumulativeX128s The cumulative seconds / max(1, liquidity) since the pool was first initialized, as of each `secondsAgo`\n function observe(\n Observation[65535] storage self,\n uint32 time,\n uint32[] memory secondsAgos,\n int24 tick,\n uint16 index,\n uint128 liquidity,\n uint16 cardinality\n ) internal view returns (int56[] memory tickCumulatives, uint160[] memory secondsPerLiquidityCumulativeX128s) {\n require(cardinality > 0, 'I');\n\n tickCumulatives = new int56[](secondsAgos.length);\n secondsPerLiquidityCumulativeX128s = new uint160[](secondsAgos.length);\n for (uint256 i = 0; i < secondsAgos.length; i++) {\n (tickCumulatives[i], secondsPerLiquidityCumulativeX128s[i]) = observeSingle(\n self,\n time,\n secondsAgos[i],\n tick,\n index,\n liquidity,\n cardinality\n );\n }\n }\n}\n" - }, - "@uniswap/v3-core/contracts/libraries/TransferHelper.sol": { - "content": "// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.6.0;\n\nimport '../interfaces/IERC20Minimal.sol';\n\n/// @title TransferHelper\n/// @notice Contains helper methods for interacting with ERC20 tokens that do not consistently return true/false\nlibrary TransferHelper {\n /// @notice Transfers tokens from msg.sender to a recipient\n /// @dev Calls transfer on token contract, errors with TF if transfer fails\n /// @param token The contract address of the token which will be transferred\n /// @param to The recipient of the transfer\n /// @param value The value of the transfer\n function safeTransfer(\n address token,\n address to,\n uint256 value\n ) internal {\n (bool success, bytes memory data) =\n token.call(abi.encodeWithSelector(IERC20Minimal.transfer.selector, to, value));\n require(success && (data.length == 0 || abi.decode(data, (bool))), 'TF');\n }\n}\n" - }, - "@uniswap/v3-core/contracts/libraries/SqrtPriceMath.sol": { - "content": "// SPDX-License-Identifier: BUSL-1.1\npragma solidity >=0.5.0;\n\nimport './LowGasSafeMath.sol';\nimport './SafeCast.sol';\n\nimport './FullMath.sol';\nimport './UnsafeMath.sol';\nimport './FixedPoint96.sol';\n\n/// @title Functions based on Q64.96 sqrt price and liquidity\n/// @notice Contains the math that uses square root of price as a Q64.96 and liquidity to compute deltas\nlibrary SqrtPriceMath {\n using LowGasSafeMath for uint256;\n using SafeCast for uint256;\n\n /// @notice Gets the next sqrt price given a delta of token0\n /// @dev Always rounds up, because in the exact output case (increasing price) we need to move the price at least\n /// far enough to get the desired output amount, and in the exact input case (decreasing price) we need to move the\n /// price less in order to not send too much output.\n /// The most precise formula for this is liquidity * sqrtPX96 / (liquidity +- amount * sqrtPX96),\n /// if this is impossible because of overflow, we calculate liquidity / (liquidity / sqrtPX96 +- amount).\n /// @param sqrtPX96 The starting price, i.e. before accounting for the token0 delta\n /// @param liquidity The amount of usable liquidity\n /// @param amount How much of token0 to add or remove from virtual reserves\n /// @param add Whether to add or remove the amount of token0\n /// @return The price after adding or removing amount, depending on add\n function getNextSqrtPriceFromAmount0RoundingUp(\n uint160 sqrtPX96,\n uint128 liquidity,\n uint256 amount,\n bool add\n ) internal pure returns (uint160) {\n // we short circuit amount == 0 because the result is otherwise not guaranteed to equal the input price\n if (amount == 0) return sqrtPX96;\n uint256 numerator1 = uint256(liquidity) << FixedPoint96.RESOLUTION;\n\n if (add) {\n uint256 product;\n if ((product = amount * sqrtPX96) / amount == sqrtPX96) {\n uint256 denominator = numerator1 + product;\n if (denominator >= numerator1)\n // always fits in 160 bits\n return uint160(FullMath.mulDivRoundingUp(numerator1, sqrtPX96, denominator));\n }\n\n return uint160(UnsafeMath.divRoundingUp(numerator1, (numerator1 / sqrtPX96).add(amount)));\n } else {\n uint256 product;\n // if the product overflows, we know the denominator underflows\n // in addition, we must check that the denominator does not underflow\n require((product = amount * sqrtPX96) / amount == sqrtPX96 && numerator1 > product);\n uint256 denominator = numerator1 - product;\n return FullMath.mulDivRoundingUp(numerator1, sqrtPX96, denominator).toUint160();\n }\n }\n\n /// @notice Gets the next sqrt price given a delta of token1\n /// @dev Always rounds down, because in the exact output case (decreasing price) we need to move the price at least\n /// far enough to get the desired output amount, and in the exact input case (increasing price) we need to move the\n /// price less in order to not send too much output.\n /// The formula we compute is within <1 wei of the lossless version: sqrtPX96 +- amount / liquidity\n /// @param sqrtPX96 The starting price, i.e., before accounting for the token1 delta\n /// @param liquidity The amount of usable liquidity\n /// @param amount How much of token1 to add, or remove, from virtual reserves\n /// @param add Whether to add, or remove, the amount of token1\n /// @return The price after adding or removing `amount`\n function getNextSqrtPriceFromAmount1RoundingDown(\n uint160 sqrtPX96,\n uint128 liquidity,\n uint256 amount,\n bool add\n ) internal pure returns (uint160) {\n // if we're adding (subtracting), rounding down requires rounding the quotient down (up)\n // in both cases, avoid a mulDiv for most inputs\n if (add) {\n uint256 quotient =\n (\n amount <= type(uint160).max\n ? (amount << FixedPoint96.RESOLUTION) / liquidity\n : FullMath.mulDiv(amount, FixedPoint96.Q96, liquidity)\n );\n\n return uint256(sqrtPX96).add(quotient).toUint160();\n } else {\n uint256 quotient =\n (\n amount <= type(uint160).max\n ? UnsafeMath.divRoundingUp(amount << FixedPoint96.RESOLUTION, liquidity)\n : FullMath.mulDivRoundingUp(amount, FixedPoint96.Q96, liquidity)\n );\n\n require(sqrtPX96 > quotient);\n // always fits 160 bits\n return uint160(sqrtPX96 - quotient);\n }\n }\n\n /// @notice Gets the next sqrt price given an input amount of token0 or token1\n /// @dev Throws if price or liquidity are 0, or if the next price is out of bounds\n /// @param sqrtPX96 The starting price, i.e., before accounting for the input amount\n /// @param liquidity The amount of usable liquidity\n /// @param amountIn How much of token0, or token1, is being swapped in\n /// @param zeroForOne Whether the amount in is token0 or token1\n /// @return sqrtQX96 The price after adding the input amount to token0 or token1\n function getNextSqrtPriceFromInput(\n uint160 sqrtPX96,\n uint128 liquidity,\n uint256 amountIn,\n bool zeroForOne\n ) internal pure returns (uint160 sqrtQX96) {\n require(sqrtPX96 > 0);\n require(liquidity > 0);\n\n // round to make sure that we don't pass the target price\n return\n zeroForOne\n ? getNextSqrtPriceFromAmount0RoundingUp(sqrtPX96, liquidity, amountIn, true)\n : getNextSqrtPriceFromAmount1RoundingDown(sqrtPX96, liquidity, amountIn, true);\n }\n\n /// @notice Gets the next sqrt price given an output amount of token0 or token1\n /// @dev Throws if price or liquidity are 0 or the next price is out of bounds\n /// @param sqrtPX96 The starting price before accounting for the output amount\n /// @param liquidity The amount of usable liquidity\n /// @param amountOut How much of token0, or token1, is being swapped out\n /// @param zeroForOne Whether the amount out is token0 or token1\n /// @return sqrtQX96 The price after removing the output amount of token0 or token1\n function getNextSqrtPriceFromOutput(\n uint160 sqrtPX96,\n uint128 liquidity,\n uint256 amountOut,\n bool zeroForOne\n ) internal pure returns (uint160 sqrtQX96) {\n require(sqrtPX96 > 0);\n require(liquidity > 0);\n\n // round to make sure that we pass the target price\n return\n zeroForOne\n ? getNextSqrtPriceFromAmount1RoundingDown(sqrtPX96, liquidity, amountOut, false)\n : getNextSqrtPriceFromAmount0RoundingUp(sqrtPX96, liquidity, amountOut, false);\n }\n\n /// @notice Gets the amount0 delta between two prices\n /// @dev Calculates liquidity / sqrt(lower) - liquidity / sqrt(upper),\n /// i.e. liquidity * (sqrt(upper) - sqrt(lower)) / (sqrt(upper) * sqrt(lower))\n /// @param sqrtRatioAX96 A sqrt price\n /// @param sqrtRatioBX96 Another sqrt price\n /// @param liquidity The amount of usable liquidity\n /// @param roundUp Whether to round the amount up or down\n /// @return amount0 Amount of token0 required to cover a position of size liquidity between the two passed prices\n function getAmount0Delta(\n uint160 sqrtRatioAX96,\n uint160 sqrtRatioBX96,\n uint128 liquidity,\n bool roundUp\n ) internal pure returns (uint256 amount0) {\n if (sqrtRatioAX96 > sqrtRatioBX96) (sqrtRatioAX96, sqrtRatioBX96) = (sqrtRatioBX96, sqrtRatioAX96);\n\n uint256 numerator1 = uint256(liquidity) << FixedPoint96.RESOLUTION;\n uint256 numerator2 = sqrtRatioBX96 - sqrtRatioAX96;\n\n require(sqrtRatioAX96 > 0);\n\n return\n roundUp\n ? UnsafeMath.divRoundingUp(\n FullMath.mulDivRoundingUp(numerator1, numerator2, sqrtRatioBX96),\n sqrtRatioAX96\n )\n : FullMath.mulDiv(numerator1, numerator2, sqrtRatioBX96) / sqrtRatioAX96;\n }\n\n /// @notice Gets the amount1 delta between two prices\n /// @dev Calculates liquidity * (sqrt(upper) - sqrt(lower))\n /// @param sqrtRatioAX96 A sqrt price\n /// @param sqrtRatioBX96 Another sqrt price\n /// @param liquidity The amount of usable liquidity\n /// @param roundUp Whether to round the amount up, or down\n /// @return amount1 Amount of token1 required to cover a position of size liquidity between the two passed prices\n function getAmount1Delta(\n uint160 sqrtRatioAX96,\n uint160 sqrtRatioBX96,\n uint128 liquidity,\n bool roundUp\n ) internal pure returns (uint256 amount1) {\n if (sqrtRatioAX96 > sqrtRatioBX96) (sqrtRatioAX96, sqrtRatioBX96) = (sqrtRatioBX96, sqrtRatioAX96);\n\n return\n roundUp\n ? FullMath.mulDivRoundingUp(liquidity, sqrtRatioBX96 - sqrtRatioAX96, FixedPoint96.Q96)\n : FullMath.mulDiv(liquidity, sqrtRatioBX96 - sqrtRatioAX96, FixedPoint96.Q96);\n }\n\n /// @notice Helper that gets signed token0 delta\n /// @param sqrtRatioAX96 A sqrt price\n /// @param sqrtRatioBX96 Another sqrt price\n /// @param liquidity The change in liquidity for which to compute the amount0 delta\n /// @return amount0 Amount of token0 corresponding to the passed liquidityDelta between the two prices\n function getAmount0Delta(\n uint160 sqrtRatioAX96,\n uint160 sqrtRatioBX96,\n int128 liquidity\n ) internal pure returns (int256 amount0) {\n return\n liquidity < 0\n ? -getAmount0Delta(sqrtRatioAX96, sqrtRatioBX96, uint128(-liquidity), false).toInt256()\n : getAmount0Delta(sqrtRatioAX96, sqrtRatioBX96, uint128(liquidity), true).toInt256();\n }\n\n /// @notice Helper that gets signed token1 delta\n /// @param sqrtRatioAX96 A sqrt price\n /// @param sqrtRatioBX96 Another sqrt price\n /// @param liquidity The change in liquidity for which to compute the amount1 delta\n /// @return amount1 Amount of token1 corresponding to the passed liquidityDelta between the two prices\n function getAmount1Delta(\n uint160 sqrtRatioAX96,\n uint160 sqrtRatioBX96,\n int128 liquidity\n ) internal pure returns (int256 amount1) {\n return\n liquidity < 0\n ? -getAmount1Delta(sqrtRatioAX96, sqrtRatioBX96, uint128(-liquidity), false).toInt256()\n : getAmount1Delta(sqrtRatioAX96, sqrtRatioBX96, uint128(liquidity), true).toInt256();\n }\n}\n" - }, - "@uniswap/v3-core/contracts/libraries/SwapMath.sol": { - "content": "// SPDX-License-Identifier: BUSL-1.1\npragma solidity >=0.5.0;\n\nimport './FullMath.sol';\nimport './SqrtPriceMath.sol';\n\n/// @title Computes the result of a swap within ticks\n/// @notice Contains methods for computing the result of a swap within a single tick price range, i.e., a single tick.\nlibrary SwapMath {\n /// @notice Computes the result of swapping some amount in, or amount out, given the parameters of the swap\n /// @dev The fee, plus the amount in, will never exceed the amount remaining if the swap's `amountSpecified` is positive\n /// @param sqrtRatioCurrentX96 The current sqrt price of the pool\n /// @param sqrtRatioTargetX96 The price that cannot be exceeded, from which the direction of the swap is inferred\n /// @param liquidity The usable liquidity\n /// @param amountRemaining How much input or output amount is remaining to be swapped in/out\n /// @param feePips The fee taken from the input amount, expressed in hundredths of a bip\n /// @return sqrtRatioNextX96 The price after swapping the amount in/out, not to exceed the price target\n /// @return amountIn The amount to be swapped in, of either token0 or token1, based on the direction of the swap\n /// @return amountOut The amount to be received, of either token0 or token1, based on the direction of the swap\n /// @return feeAmount The amount of input that will be taken as a fee\n function computeSwapStep(\n uint160 sqrtRatioCurrentX96,\n uint160 sqrtRatioTargetX96,\n uint128 liquidity,\n int256 amountRemaining,\n uint24 feePips\n )\n internal\n pure\n returns (\n uint160 sqrtRatioNextX96,\n uint256 amountIn,\n uint256 amountOut,\n uint256 feeAmount\n )\n {\n bool zeroForOne = sqrtRatioCurrentX96 >= sqrtRatioTargetX96;\n bool exactIn = amountRemaining >= 0;\n\n if (exactIn) {\n uint256 amountRemainingLessFee = FullMath.mulDiv(uint256(amountRemaining), 1e6 - feePips, 1e6);\n amountIn = zeroForOne\n ? SqrtPriceMath.getAmount0Delta(sqrtRatioTargetX96, sqrtRatioCurrentX96, liquidity, true)\n : SqrtPriceMath.getAmount1Delta(sqrtRatioCurrentX96, sqrtRatioTargetX96, liquidity, true);\n if (amountRemainingLessFee >= amountIn) sqrtRatioNextX96 = sqrtRatioTargetX96;\n else\n sqrtRatioNextX96 = SqrtPriceMath.getNextSqrtPriceFromInput(\n sqrtRatioCurrentX96,\n liquidity,\n amountRemainingLessFee,\n zeroForOne\n );\n } else {\n amountOut = zeroForOne\n ? SqrtPriceMath.getAmount1Delta(sqrtRatioTargetX96, sqrtRatioCurrentX96, liquidity, false)\n : SqrtPriceMath.getAmount0Delta(sqrtRatioCurrentX96, sqrtRatioTargetX96, liquidity, false);\n if (uint256(-amountRemaining) >= amountOut) sqrtRatioNextX96 = sqrtRatioTargetX96;\n else\n sqrtRatioNextX96 = SqrtPriceMath.getNextSqrtPriceFromOutput(\n sqrtRatioCurrentX96,\n liquidity,\n uint256(-amountRemaining),\n zeroForOne\n );\n }\n\n bool max = sqrtRatioTargetX96 == sqrtRatioNextX96;\n\n // get the input/output amounts\n if (zeroForOne) {\n amountIn = max && exactIn\n ? amountIn\n : SqrtPriceMath.getAmount0Delta(sqrtRatioNextX96, sqrtRatioCurrentX96, liquidity, true);\n amountOut = max && !exactIn\n ? amountOut\n : SqrtPriceMath.getAmount1Delta(sqrtRatioNextX96, sqrtRatioCurrentX96, liquidity, false);\n } else {\n amountIn = max && exactIn\n ? amountIn\n : SqrtPriceMath.getAmount1Delta(sqrtRatioCurrentX96, sqrtRatioNextX96, liquidity, true);\n amountOut = max && !exactIn\n ? amountOut\n : SqrtPriceMath.getAmount0Delta(sqrtRatioCurrentX96, sqrtRatioNextX96, liquidity, false);\n }\n\n // cap the output amount to not exceed the remaining output amount\n if (!exactIn && amountOut > uint256(-amountRemaining)) {\n amountOut = uint256(-amountRemaining);\n }\n\n if (exactIn && sqrtRatioNextX96 != sqrtRatioTargetX96) {\n // we didn't reach the target, so take the remainder of the maximum input as fee\n feeAmount = uint256(amountRemaining) - amountIn;\n } else {\n feeAmount = FullMath.mulDivRoundingUp(amountIn, feePips, 1e6 - feePips);\n }\n }\n}\n" - }, - "@uniswap/v3-core/contracts/interfaces/IUniswapV3PoolDeployer.sol": { - "content": "// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\n/// @title An interface for a contract that is capable of deploying Uniswap V3 Pools\n/// @notice A contract that constructs a pool must implement this to pass arguments to the pool\n/// @dev This is used to avoid having constructor arguments in the pool contract, which results in the init code hash\n/// of the pool being constant allowing the CREATE2 address of the pool to be cheaply computed on-chain\ninterface IUniswapV3PoolDeployer {\n /// @notice Get the parameters to be used in constructing the pool, set transiently during pool creation.\n /// @dev Called by the pool constructor to fetch the parameters of the pool\n /// Returns factory The factory address\n /// Returns token0 The first token of the pool by address sort order\n /// Returns token1 The second token of the pool by address sort order\n /// Returns fee The fee collected upon every swap in the pool, denominated in hundredths of a bip\n /// Returns tickSpacing The minimum number of ticks between initialized ticks\n function parameters()\n external\n view\n returns (\n address factory,\n address token0,\n address token1,\n uint24 fee,\n int24 tickSpacing\n );\n}\n" - }, - "@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol": { - "content": "// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\n/// @title The interface for the Uniswap V3 Factory\n/// @notice The Uniswap V3 Factory facilitates creation of Uniswap V3 pools and control over the protocol fees\ninterface IUniswapV3Factory {\n /// @notice Emitted when the owner of the factory is changed\n /// @param oldOwner The owner before the owner was changed\n /// @param newOwner The owner after the owner was changed\n event OwnerChanged(address indexed oldOwner, address indexed newOwner);\n\n /// @notice Emitted when a pool is created\n /// @param token0 The first token of the pool by address sort order\n /// @param token1 The second token of the pool by address sort order\n /// @param fee The fee collected upon every swap in the pool, denominated in hundredths of a bip\n /// @param tickSpacing The minimum number of ticks between initialized ticks\n /// @param pool The address of the created pool\n event PoolCreated(\n address indexed token0,\n address indexed token1,\n uint24 indexed fee,\n int24 tickSpacing,\n address pool\n );\n\n /// @notice Emitted when a new fee amount is enabled for pool creation via the factory\n /// @param fee The enabled fee, denominated in hundredths of a bip\n /// @param tickSpacing The minimum number of ticks between initialized ticks for pools created with the given fee\n event FeeAmountEnabled(uint24 indexed fee, int24 indexed tickSpacing);\n\n /// @notice Returns the current owner of the factory\n /// @dev Can be changed by the current owner via setOwner\n /// @return The address of the factory owner\n function owner() external view returns (address);\n\n /// @notice Returns the tick spacing for a given fee amount, if enabled, or 0 if not enabled\n /// @dev A fee amount can never be removed, so this value should be hard coded or cached in the calling context\n /// @param fee The enabled fee, denominated in hundredths of a bip. Returns 0 in case of unenabled fee\n /// @return The tick spacing\n function feeAmountTickSpacing(uint24 fee) external view returns (int24);\n\n /// @notice Returns the pool address for a given pair of tokens and a fee, or address 0 if it does not exist\n /// @dev tokenA and tokenB may be passed in either token0/token1 or token1/token0 order\n /// @param tokenA The contract address of either token0 or token1\n /// @param tokenB The contract address of the other token\n /// @param fee The fee collected upon every swap in the pool, denominated in hundredths of a bip\n /// @return pool The pool address\n function getPool(\n address tokenA,\n address tokenB,\n uint24 fee\n ) external view returns (address pool);\n\n /// @notice Creates a pool for the given two tokens and fee\n /// @param tokenA One of the two tokens in the desired pool\n /// @param tokenB The other of the two tokens in the desired pool\n /// @param fee The desired fee for the pool\n /// @dev tokenA and tokenB may be passed in either order: token0/token1 or token1/token0. tickSpacing is retrieved\n /// from the fee. The call will revert if the pool already exists, the fee is invalid, or the token arguments\n /// are invalid.\n /// @return pool The address of the newly created pool\n function createPool(\n address tokenA,\n address tokenB,\n uint24 fee\n ) external returns (address pool);\n\n /// @notice Updates the owner of the factory\n /// @dev Must be called by the current owner\n /// @param _owner The new owner of the factory\n function setOwner(address _owner) external;\n\n /// @notice Enables a fee amount with the given tickSpacing\n /// @dev Fee amounts may never be removed once enabled\n /// @param fee The fee amount to enable, denominated in hundredths of a bip (i.e. 1e-6)\n /// @param tickSpacing The spacing between ticks to be enforced for all pools created with the given fee amount\n function enableFeeAmount(uint24 fee, int24 tickSpacing) external;\n}\n" - }, - "@uniswap/v3-core/contracts/interfaces/IERC20Minimal.sol": { - "content": "// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\n/// @title Minimal ERC20 interface for Uniswap\n/// @notice Contains a subset of the full ERC20 interface that is used in Uniswap V3\ninterface IERC20Minimal {\n /// @notice Returns the balance of a token\n /// @param account The account for which to look up the number of tokens it has, i.e. its balance\n /// @return The number of tokens held by the account\n function balanceOf(address account) external view returns (uint256);\n\n /// @notice Transfers the amount of token from the `msg.sender` to the recipient\n /// @param recipient The account that will receive the amount transferred\n /// @param amount The number of tokens to send from the sender to the recipient\n /// @return Returns true for a successful transfer, false for an unsuccessful transfer\n function transfer(address recipient, uint256 amount) external returns (bool);\n\n /// @notice Returns the current allowance given to a spender by an owner\n /// @param owner The account of the token owner\n /// @param spender The account of the token spender\n /// @return The current allowance granted by `owner` to `spender`\n function allowance(address owner, address spender) external view returns (uint256);\n\n /// @notice Sets the allowance of a spender from the `msg.sender` to the value `amount`\n /// @param spender The account which will be allowed to spend a given amount of the owners tokens\n /// @param amount The amount of tokens allowed to be used by `spender`\n /// @return Returns true for a successful approval, false for unsuccessful\n function approve(address spender, uint256 amount) external returns (bool);\n\n /// @notice Transfers `amount` tokens from `sender` to `recipient` up to the allowance given to the `msg.sender`\n /// @param sender The account from which the transfer will be initiated\n /// @param recipient The recipient of the transfer\n /// @param amount The amount of the transfer\n /// @return Returns true for a successful transfer, false for unsuccessful\n function transferFrom(\n address sender,\n address recipient,\n uint256 amount\n ) external returns (bool);\n\n /// @notice Event emitted when tokens are transferred from one address to another, either via `#transfer` or `#transferFrom`.\n /// @param from The account from which the tokens were sent, i.e. the balance decreased\n /// @param to The account to which the tokens were sent, i.e. the balance increased\n /// @param value The amount of tokens that were transferred\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n /// @notice Event emitted when the approval amount for the spender of a given owner's tokens changes.\n /// @param owner The account that approved spending of its tokens\n /// @param spender The account for which the spending allowance was modified\n /// @param value The new allowance from the owner to the spender\n event Approval(address indexed owner, address indexed spender, uint256 value);\n}\n" - }, - "@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3MintCallback.sol": { - "content": "// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\n/// @title Callback for IUniswapV3PoolActions#mint\n/// @notice Any contract that calls IUniswapV3PoolActions#mint must implement this interface\ninterface IUniswapV3MintCallback {\n /// @notice Called to `msg.sender` after minting liquidity to a position from IUniswapV3Pool#mint.\n /// @dev In the implementation you must pay the pool tokens owed for the minted liquidity.\n /// The caller of this method must be checked to be a UniswapV3Pool deployed by the canonical UniswapV3Factory.\n /// @param amount0Owed The amount of token0 due to the pool for the minted liquidity\n /// @param amount1Owed The amount of token1 due to the pool for the minted liquidity\n /// @param data Any data passed through by the caller via the IUniswapV3PoolActions#mint call\n function uniswapV3MintCallback(\n uint256 amount0Owed,\n uint256 amount1Owed,\n bytes calldata data\n ) external;\n}\n" - }, - "@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol": { - "content": "// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\n/// @title Callback for IUniswapV3PoolActions#swap\n/// @notice Any contract that calls IUniswapV3PoolActions#swap must implement this interface\ninterface IUniswapV3SwapCallback {\n /// @notice Called to `msg.sender` after executing a swap via IUniswapV3Pool#swap.\n /// @dev In the implementation you must pay the pool tokens owed for the swap.\n /// The caller of this method must be checked to be a UniswapV3Pool deployed by the canonical UniswapV3Factory.\n /// amount0Delta and amount1Delta can both be 0 if no tokens were swapped.\n /// @param amount0Delta The amount of token0 that was sent (negative) or must be received (positive) by the pool by\n /// the end of the swap. If positive, the callback must send that amount of token0 to the pool.\n /// @param amount1Delta The amount of token1 that was sent (negative) or must be received (positive) by the pool by\n /// the end of the swap. If positive, the callback must send that amount of token1 to the pool.\n /// @param data Any data passed through by the caller via the IUniswapV3PoolActions#swap call\n function uniswapV3SwapCallback(\n int256 amount0Delta,\n int256 amount1Delta,\n bytes calldata data\n ) external;\n}\n" - }, - "@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3FlashCallback.sol": { - "content": "// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\n/// @title Callback for IUniswapV3PoolActions#flash\n/// @notice Any contract that calls IUniswapV3PoolActions#flash must implement this interface\ninterface IUniswapV3FlashCallback {\n /// @notice Called to `msg.sender` after transferring to the recipient from IUniswapV3Pool#flash.\n /// @dev In the implementation you must repay the pool the tokens sent by flash plus the computed fee amounts.\n /// The caller of this method must be checked to be a UniswapV3Pool deployed by the canonical UniswapV3Factory.\n /// @param fee0 The fee amount in token0 due to the pool by the end of the flash\n /// @param fee1 The fee amount in token1 due to the pool by the end of the flash\n /// @param data Any data passed through by the caller via the IUniswapV3PoolActions#flash call\n function uniswapV3FlashCallback(\n uint256 fee0,\n uint256 fee1,\n bytes calldata data\n ) external;\n}\n" - }, - "@uniswap/v3-core/contracts/libraries/BitMath.sol": { - "content": "// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\n/// @title BitMath\n/// @dev This library provides functionality for computing bit properties of an unsigned integer\nlibrary BitMath {\n /// @notice Returns the index of the most significant bit of the number,\n /// where the least significant bit is at index 0 and the most significant bit is at index 255\n /// @dev The function satisfies the property:\n /// x >= 2**mostSignificantBit(x) and x < 2**(mostSignificantBit(x)+1)\n /// @param x the value for which to compute the most significant bit, must be greater than 0\n /// @return r the index of the most significant bit\n function mostSignificantBit(uint256 x) internal pure returns (uint8 r) {\n require(x > 0);\n\n if (x >= 0x100000000000000000000000000000000) {\n x >>= 128;\n r += 128;\n }\n if (x >= 0x10000000000000000) {\n x >>= 64;\n r += 64;\n }\n if (x >= 0x100000000) {\n x >>= 32;\n r += 32;\n }\n if (x >= 0x10000) {\n x >>= 16;\n r += 16;\n }\n if (x >= 0x100) {\n x >>= 8;\n r += 8;\n }\n if (x >= 0x10) {\n x >>= 4;\n r += 4;\n }\n if (x >= 0x4) {\n x >>= 2;\n r += 2;\n }\n if (x >= 0x2) r += 1;\n }\n\n /// @notice Returns the index of the least significant bit of the number,\n /// where the least significant bit is at index 0 and the most significant bit is at index 255\n /// @dev The function satisfies the property:\n /// (x & 2**leastSignificantBit(x)) != 0 and (x & (2**(leastSignificantBit(x)) - 1)) == 0)\n /// @param x the value for which to compute the least significant bit, must be greater than 0\n /// @return r the index of the least significant bit\n function leastSignificantBit(uint256 x) internal pure returns (uint8 r) {\n require(x > 0);\n\n r = 255;\n if (x & type(uint128).max > 0) {\n r -= 128;\n } else {\n x >>= 128;\n }\n if (x & type(uint64).max > 0) {\n r -= 64;\n } else {\n x >>= 64;\n }\n if (x & type(uint32).max > 0) {\n r -= 32;\n } else {\n x >>= 32;\n }\n if (x & type(uint16).max > 0) {\n r -= 16;\n } else {\n x >>= 16;\n }\n if (x & type(uint8).max > 0) {\n r -= 8;\n } else {\n x >>= 8;\n }\n if (x & 0xf > 0) {\n r -= 4;\n } else {\n x >>= 4;\n }\n if (x & 0x3 > 0) {\n r -= 2;\n } else {\n x >>= 2;\n }\n if (x & 0x1 > 0) r -= 1;\n }\n}\n" - }, - "@uniswap/v3-core/contracts/libraries/UnsafeMath.sol": { - "content": "// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity >=0.5.0;\n\n/// @title Math functions that do not check inputs or outputs\n/// @notice Contains methods that perform common math functions but do not do any overflow or underflow checks\nlibrary UnsafeMath {\n /// @notice Returns ceil(x / y)\n /// @dev division by 0 has unspecified behavior, and must be checked externally\n /// @param x The dividend\n /// @param y The divisor\n /// @return z The quotient, ceil(x / y)\n function divRoundingUp(uint256 x, uint256 y) internal pure returns (uint256 z) {\n assembly {\n z := add(div(x, y), gt(mod(x, y), 0))\n }\n }\n}\n" - }, - "contracts/hardhat-dependency-compiler/@uniswap/v3-core/contracts/UniswapV3Pool.sol": { - "content": "// SPDX-License-Identifier: UNLICENSED\npragma solidity >0.0.0;\nimport '@uniswap/v3-core/contracts/UniswapV3Pool.sol';\n" - }, - "@uniswap/v3-core/contracts/UniswapV3Factory.sol": { - "content": "// SPDX-License-Identifier: BUSL-1.1\npragma solidity =0.7.6;\n\nimport './interfaces/IUniswapV3Factory.sol';\n\nimport './UniswapV3PoolDeployer.sol';\nimport './NoDelegateCall.sol';\n\nimport './UniswapV3Pool.sol';\n\n/// @title Canonical Uniswap V3 factory\n/// @notice Deploys Uniswap V3 pools and manages ownership and control over pool protocol fees\ncontract UniswapV3Factory is IUniswapV3Factory, UniswapV3PoolDeployer, NoDelegateCall {\n /// @inheritdoc IUniswapV3Factory\n address public override owner;\n\n /// @inheritdoc IUniswapV3Factory\n mapping(uint24 => int24) public override feeAmountTickSpacing;\n /// @inheritdoc IUniswapV3Factory\n mapping(address => mapping(address => mapping(uint24 => address))) public override getPool;\n\n constructor() {\n owner = msg.sender;\n emit OwnerChanged(address(0), msg.sender);\n\n feeAmountTickSpacing[500] = 10;\n emit FeeAmountEnabled(500, 10);\n feeAmountTickSpacing[3000] = 60;\n emit FeeAmountEnabled(3000, 60);\n feeAmountTickSpacing[10000] = 200;\n emit FeeAmountEnabled(10000, 200);\n }\n\n /// @inheritdoc IUniswapV3Factory\n function createPool(\n address tokenA,\n address tokenB,\n uint24 fee\n ) external override noDelegateCall returns (address pool) {\n require(tokenA != tokenB);\n (address token0, address token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA);\n require(token0 != address(0));\n int24 tickSpacing = feeAmountTickSpacing[fee];\n require(tickSpacing != 0);\n require(getPool[token0][token1][fee] == address(0));\n pool = deploy(address(this), token0, token1, fee, tickSpacing);\n getPool[token0][token1][fee] = pool;\n // populate mapping in the reverse direction, deliberate choice to avoid the cost of comparing addresses\n getPool[token1][token0][fee] = pool;\n emit PoolCreated(token0, token1, fee, tickSpacing, pool);\n }\n\n /// @inheritdoc IUniswapV3Factory\n function setOwner(address _owner) external override {\n require(msg.sender == owner);\n emit OwnerChanged(owner, _owner);\n owner = _owner;\n }\n\n /// @inheritdoc IUniswapV3Factory\n function enableFeeAmount(uint24 fee, int24 tickSpacing) public override {\n require(msg.sender == owner);\n require(fee < 1000000);\n // tick spacing is capped at 16384 to prevent the situation where tickSpacing is so large that\n // TickBitmap#nextInitializedTickWithinOneWord overflows int24 container from a valid tick\n // 16384 ticks represents a >5x price change with ticks of 1 bips\n require(tickSpacing > 0 && tickSpacing < 16384);\n require(feeAmountTickSpacing[fee] == 0);\n\n feeAmountTickSpacing[fee] = tickSpacing;\n emit FeeAmountEnabled(fee, tickSpacing);\n }\n}\n" - }, - "@uniswap/v3-core/contracts/UniswapV3PoolDeployer.sol": { - "content": "// SPDX-License-Identifier: BUSL-1.1\npragma solidity =0.7.6;\n\nimport './interfaces/IUniswapV3PoolDeployer.sol';\n\nimport './UniswapV3Pool.sol';\n\ncontract UniswapV3PoolDeployer is IUniswapV3PoolDeployer {\n struct Parameters {\n address factory;\n address token0;\n address token1;\n uint24 fee;\n int24 tickSpacing;\n }\n\n /// @inheritdoc IUniswapV3PoolDeployer\n Parameters public override parameters;\n\n /// @dev Deploys a pool with the given parameters by transiently setting the parameters storage slot and then\n /// clearing it after deploying the pool.\n /// @param factory The contract address of the Uniswap V3 factory\n /// @param token0 The first token of the pool by address sort order\n /// @param token1 The second token of the pool by address sort order\n /// @param fee The fee collected upon every swap in the pool, denominated in hundredths of a bip\n /// @param tickSpacing The spacing between usable ticks\n function deploy(\n address factory,\n address token0,\n address token1,\n uint24 fee,\n int24 tickSpacing\n ) internal returns (address pool) {\n parameters = Parameters({factory: factory, token0: token0, token1: token1, fee: fee, tickSpacing: tickSpacing});\n pool = address(new UniswapV3Pool{salt: keccak256(abi.encode(token0, token1, fee))}());\n delete parameters;\n }\n}\n" - }, - "contracts/hardhat-dependency-compiler/@uniswap/v3-core/contracts/UniswapV3Factory.sol": { - "content": "// SPDX-License-Identifier: UNLICENSED\npragma solidity >0.0.0;\nimport '@uniswap/v3-core/contracts/UniswapV3Factory.sol';\n" - }, - "contracts/test/TestAggregatorV3.sol": { - "content": "// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity 0.7.6;\n\nimport { AggregatorV3Interface } from \"@chainlink/contracts/src/v0.6/interfaces/AggregatorV3Interface.sol\";\n\ncontract TestAggregatorV3 is AggregatorV3Interface {\n struct RoundData {\n int256 answer;\n uint256 startedAt;\n uint256 updatedAt;\n uint80 answeredInRound;\n }\n mapping(uint80 => RoundData) public roundData;\n uint80 public latestRound;\n\n constructor() {}\n\n function setRoundData(\n uint80 roundId,\n int256 answer,\n uint256 startedAt,\n uint256 updatedAt,\n uint80 answeredInRound\n ) external {\n roundData[roundId] = RoundData({\n answer: answer,\n startedAt: startedAt,\n updatedAt: updatedAt,\n answeredInRound: answeredInRound\n });\n latestRound = roundId;\n }\n\n function decimals() external view override returns (uint8) {\n 18;\n }\n\n function description() external view override returns (string memory) {\n revert();\n }\n\n function version() external view override returns (uint256) {\n revert();\n }\n\n function getRoundData(uint80 _roundId)\n external\n view\n override\n returns (\n uint80 roundId,\n int256 answer,\n uint256 startedAt,\n uint256 updatedAt,\n uint80 answeredInRound\n )\n {\n return (\n _roundId,\n roundData[_roundId].answer,\n roundData[_roundId].startedAt,\n roundData[_roundId].updatedAt,\n roundData[_roundId].answeredInRound\n );\n }\n\n function latestRoundData()\n external\n view\n override\n returns (\n uint80 roundId,\n int256 answer,\n uint256 startedAt,\n uint256 updatedAt,\n uint80 answeredInRound\n )\n {\n return (\n latestRound,\n roundData[latestRound].answer,\n roundData[latestRound].startedAt,\n roundData[latestRound].updatedAt,\n roundData[latestRound].answeredInRound\n );\n }\n}\n" - }, - "contracts/test/TestStdReference.sol": { - "content": "// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity 0.7.6;\npragma experimental ABIEncoderV2;\n\nimport { IStdReference } from \"../interface/bandProtocol/IStdReference.sol\";\n\ncontract TestStdReference is IStdReference {\n ReferenceData public refData;\n\n constructor() {}\n\n function setReferenceData(ReferenceData memory _refData) public {\n refData = _refData;\n }\n\n function getReferenceData(string memory _base, string memory _quote)\n external\n view\n override\n returns (ReferenceData memory)\n {\n return refData;\n }\n\n function getReferenceDataBulk(string[] memory _bases, string[] memory _quotes)\n external\n view\n override\n returns (ReferenceData[] memory)\n {\n revert();\n }\n}\n" - } - }, - "settings": { - "optimizer": { - "enabled": true, - "runs": 200 - }, - "evmVersion": "berlin", - "outputSelection": { - "*": { - "*": [ - "storageLayout", - "abi", - "evm.bytecode", - "evm.deployedBytecode", - "evm.methodIdentifiers" - ], - "": [ - "ast" - ] - } - } - } - }, - "output": { - "contracts": { - "@chainlink/contracts/src/v0.6/interfaces/AggregatorV3Interface.sol": { - "AggregatorV3Interface": { - "abi": [ - { - "inputs": [], - "name": "decimals", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "description", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint80", - "name": "_roundId", - "type": "uint80" - } - ], - "name": "getRoundData", - "outputs": [ - { - "internalType": "uint80", - "name": "roundId", - "type": "uint80" - }, - { - "internalType": "int256", - "name": "answer", - "type": "int256" - }, - { - "internalType": "uint256", - "name": "startedAt", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "updatedAt", - "type": "uint256" - }, - { - "internalType": "uint80", - "name": "answeredInRound", - "type": "uint80" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "latestRoundData", - "outputs": [ - { - "internalType": "uint80", - "name": "roundId", - "type": "uint80" - }, - { - "internalType": "int256", - "name": "answer", - "type": "int256" - }, - { - "internalType": "uint256", - "name": "startedAt", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "updatedAt", - "type": "uint256" - }, - { - "internalType": "uint80", - "name": "answeredInRound", - "type": "uint80" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "version", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "evm": { - "bytecode": { - "generatedSources": [], - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "deployedBytecode": { - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "methodIdentifiers": { - "decimals()": "313ce567", - "description()": "7284e416", - "getRoundData(uint80)": "9a6fc8f5", - "latestRoundData()": "feaf968c", - "version()": "54fd4d50" - } - }, - "storageLayout": { - "storage": [], - "types": null - } - } - }, - "@openzeppelin/contracts/math/SafeMath.sol": { - "SafeMath": { - "abi": [], - "evm": { - "bytecode": { - "generatedSources": [], - "linkReferences": {}, - "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122065f8637f11ac4a48627a5854d21894c1133bb039748e382a3f868f86905769a564736f6c63430007060033", - "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH6 0xF8637F11AC4A 0x48 PUSH3 0x7A5854 0xD2 XOR SWAP5 0xC1 SGT EXTCODESIZE 0xB0 CODECOPY PUSH21 0x8E382A3F868F86905769A564736F6C634300070600 CALLER ", - "sourceMap": "630:6594:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;" - }, - "deployedBytecode": { - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122065f8637f11ac4a48627a5854d21894c1133bb039748e382a3f868f86905769a564736f6c63430007060033", - "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH6 0xF8637F11AC4A 0x48 PUSH3 0x7A5854 0xD2 XOR SWAP5 0xC1 SGT EXTCODESIZE 0xB0 CODECOPY PUSH21 0x8E382A3F868F86905769A564736F6C634300070600 CALLER ", - "sourceMap": "630:6594:1:-:0;;;;;;;;" - }, - "methodIdentifiers": {} - }, - "storageLayout": { - "storage": [], - "types": null - } - } - }, - "@openzeppelin/contracts/utils/Address.sol": { - "Address": { - "abi": [], - "evm": { - "bytecode": { - "generatedSources": [], - "linkReferences": {}, - "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122022c699e416c38c6c7ad32d4328c99c2b8b2b264752b0cf86e1422d6625a9d58d64736f6c63430007060033", - "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x22 0xC6 SWAP10 0xE4 AND 0xC3 DUP13 PUSH13 0x7AD32D4328C99C2B8B2B264752 0xB0 0xCF DUP7 0xE1 TIMESTAMP 0x2D PUSH7 0x25A9D58D64736F PUSH13 0x63430007060033000000000000 ", - "sourceMap": "134:7684:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;" - }, - "deployedBytecode": { - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122022c699e416c38c6c7ad32d4328c99c2b8b2b264752b0cf86e1422d6625a9d58d64736f6c63430007060033", - "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x22 0xC6 SWAP10 0xE4 AND 0xC3 DUP13 PUSH13 0x7AD32D4328C99C2B8B2B264752 0xB0 0xCF DUP7 0xE1 TIMESTAMP 0x2D PUSH7 0x25A9D58D64736F PUSH13 0x63430007060033000000000000 ", - "sourceMap": "134:7684:2:-:0;;;;;;;;" - }, - "methodIdentifiers": {} - }, - "storageLayout": { - "storage": [], - "types": null - } - } - }, - "@uniswap/v3-core/contracts/NoDelegateCall.sol": { - "NoDelegateCall": { - "abi": [], - "evm": { - "bytecode": { - "generatedSources": [], - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "deployedBytecode": { - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "methodIdentifiers": {} - }, - "storageLayout": { - "storage": [], - "types": null - } - } - }, - "@uniswap/v3-core/contracts/UniswapV3Factory.sol": { - "UniswapV3Factory": { - "abi": [ - { - "inputs": [], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint24", - "name": "fee", - "type": "uint24" - }, - { - "indexed": true, - "internalType": "int24", - "name": "tickSpacing", - "type": "int24" - } - ], - "name": "FeeAmountEnabled", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "oldOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnerChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "token0", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "token1", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint24", - "name": "fee", - "type": "uint24" - }, - { - "indexed": false, - "internalType": "int24", - "name": "tickSpacing", - "type": "int24" - }, - { - "indexed": false, - "internalType": "address", - "name": "pool", - "type": "address" - } - ], - "name": "PoolCreated", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "tokenA", - "type": "address" - }, - { - "internalType": "address", - "name": "tokenB", - "type": "address" - }, - { - "internalType": "uint24", - "name": "fee", - "type": "uint24" - } - ], - "name": "createPool", - "outputs": [ - { - "internalType": "address", - "name": "pool", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint24", - "name": "fee", - "type": "uint24" - }, - { - "internalType": "int24", - "name": "tickSpacing", - "type": "int24" - } - ], - "name": "enableFeeAmount", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint24", - "name": "", - "type": "uint24" - } - ], - "name": "feeAmountTickSpacing", - "outputs": [ - { - "internalType": "int24", - "name": "", - "type": "int24" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "address", - "name": "", - "type": "address" - }, - { - "internalType": "uint24", - "name": "", - "type": "uint24" - } - ], - "name": "getPool", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "parameters", - "outputs": [ - { - "internalType": "address", - "name": "factory", - "type": "address" - }, - { - "internalType": "address", - "name": "token0", - "type": "address" - }, - { - "internalType": "address", - "name": "token1", - "type": "address" - }, - { - "internalType": "uint24", - "name": "fee", - "type": "uint24" - }, - { - "internalType": "int24", - "name": "tickSpacing", - "type": "int24" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_owner", - "type": "address" - } - ], - "name": "setOwner", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "evm": { - "bytecode": { - "generatedSources": [], - "linkReferences": {}, - "object": "60a060405234801561001057600080fd5b503060601b608052600380546001600160a01b031916339081179091556040516000907fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c908290a36101f4600081815260046020527ffb8cf1d12598d1a039dd1d106665851a96aadf67d0d9ed76fceea282119208b7805462ffffff1916600a908117909155604051909291600080516020615ffa83398151915291a3610bb8600081815260046020527f72dffa9b822156d9cf4b0090fa0b656bcb9cc2b2c60eb6acfc20a34f54b31743805462ffffff1916603c908117909155604051909291600080516020615ffa83398151915291a3612710600081815260046020527f8cc740d51daa94ff54f33bd779c2d20149f524c340519b49181be5a08615f829805462ffffff191660c8908117909155604051909291600080516020615ffa83398151915291a360805160601c615e86610174600039806105515250615e866000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063890357301161005b578063890357301461013b5780638a7c195f146101855780638da5cb5b146101b0578063a1671295146101b85761007d565b806313af4035146100825780631698ee82146100aa57806322afcccb14610102575b600080fd5b6100a86004803603602081101561009857600080fd5b50356001600160a01b03166101f4565b005b6100e6600480360360608110156100c057600080fd5b5080356001600160a01b03908116916020810135909116906040013562ffffff16610267565b604080516001600160a01b039092168252519081900360200190f35b6101246004803603602081101561011857600080fd5b503562ffffff16610293565b6040805160029290920b8252519081900360200190f35b6101436102a8565b604080516001600160a01b0396871681529486166020860152929094168383015262ffffff16606083015260029290920b608082015290519081900360a00190f35b6100a86004803603604081101561019b57600080fd5b5062ffffff813516906020013560020b6102de565b6100e66103a1565b6100e6600480360360608110156101ce57600080fd5b5080356001600160a01b03908116916020810135909116906040013562ffffff166103b0565b6003546001600160a01b0316331461020b57600080fd5b6003546040516001600160a01b038084169216907fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c90600090a3600380546001600160a01b0319166001600160a01b0392909216919091179055565b60056020908152600093845260408085208252928452828420905282529020546001600160a01b031681565b60046020526000908152604090205460020b81565b600054600154600280546001600160a01b03938416939283169281169162ffffff600160a01b83041691600160b81b9004900b85565b6003546001600160a01b031633146102f557600080fd5b620f42408262ffffff161061030957600080fd5b60008160020b13801561032057506140008160020b125b61032957600080fd5b62ffffff8216600090815260046020526040902054600290810b900b1561034f57600080fd5b62ffffff828116600081815260046020526040808220805462ffffff1916600287900b958616179055517fc66a3fdf07232cdd185febcc6579d408c241b47ae2f9907d84be655141eeaecc9190a35050565b6003546001600160a01b031681565b60006103ba610546565b826001600160a01b0316846001600160a01b031614156103d957600080fd5b600080846001600160a01b0316866001600160a01b0316106103fc5784866103ff565b85855b90925090506001600160a01b03821661041757600080fd5b62ffffff8416600090815260046020526040902054600290810b9081900b61043e57600080fd5b6001600160a01b0383811660009081526005602090815260408083208685168452825280832062ffffff8a168452909152902054161561047d57600080fd5b61048a308484888561057d565b6001600160a01b03808516600081815260056020818152604080842089871680865290835281852062ffffff8e168087529084528286208054988a166001600160a01b0319998a1681179091558287529484528286208787528452828620818752845294829020805490971684179096558051600289900b815291820192909252815195995091947f783cca1c0412dd0d695e784568c96da2e9c22ff989357a2e8b1d9b2b4e6b71189281900390910190a45050509392505050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461057b57600080fd5b565b6040805160a0810182526001600160a01b03878116808352878216602080850182905292881684860181905262ffffff888116606080880182905260028a810b6080998a01819052600080546001600160a01b03199081169099178155600180548a16891790558254909816861762ffffff60a01b1916600160a01b85021762ffffff60b81b1916600160b81b91830b9095160293909317909255875180870194909452838801929092528281019190915285518083039091018152930193849052825192909101919091209091610654906106ab565b8190604051809103906000f5905080158015610674573d6000803e3d6000fd5b50600080546001600160a01b0319908116909155600180549091169055600280546001600160d01b03191690559695505050505050565b615798806106b98339019056fe6101606040523480156200001257600080fd5b503060601b60805260408051630890357360e41b81529051600091339163890357309160048082019260a092909190829003018186803b1580156200005657600080fd5b505afa1580156200006b573d6000803e3d6000fd5b505050506040513d60a08110156200008257600080fd5b508051602080830151604084015160608086015160809096015160e896871b6001600160e81b0319166101005291811b6001600160601b031990811660e05292811b831660c0529390931b1660a052600282810b900b90921b610120529150620000f79082906200010f811b62002adb17901c565b60801b6001600160801b03191661014052506200017d565b60008082600281900b620d89e719816200012557fe5b05029050600083600281900b620d89e8816200013d57fe5b0502905060008460020b83830360020b816200015557fe5b0560010190508062ffffff166001600160801b038016816200017357fe5b0495945050505050565b60805160601c60a05160601c60c05160601c60e05160601c6101005160e81c6101205160e81c6101405160801c61554e6200024a60003980611fab5280614a4d5280614a84525080610bd852806128975280614ab85280614aea525080610cc7528061198852806119bf52806128df5250806111855280611a425280611eb152806123e652806128bb5280613d7c5250806108aa52806112b35280611a115280611e4b52806123605280613c33525080612038528061221f5280612873525080612b52525061554e6000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c806370cf754a116100de578063c45a015511610097578063ddca3f4311610071578063ddca3f43146107d8578063f3058399146107f8578063f30dba9314610800578063f637731d146108825761018e565b8063c45a0155146107a9578063d0c93a7c146107b1578063d21220a7146107d05761018e565b806370cf754a146105a05780638206a4d1146105a857806385b66729146105d0578063883bdbfd1461060d578063a34123a714610714578063a38807f21461074e5761018e565b80633850c7bd1161014b578063490e6cbc11610125578063490e6cbc1461044c5780634f1eb3d8146104d6578063514ea4bf146105275780635339c296146105805761018e565b80633850c7bd146103395780633c8a7d8d1461039257806346141319146104325761018e565b80630dfe168114610193578063128acb08146101b75780631a686502146102645780631ad8b03b14610288578063252c09d7146102bf57806332148f6714610316575b600080fd5b61019b6108a8565b604080516001600160a01b039092168252519081900360200190f35b61024b600480360360a08110156101cd57600080fd5b6001600160a01b0382358116926020810135151592604082013592606083013516919081019060a081016080820135600160201b81111561020d57600080fd5b82018360208201111561021f57600080fd5b803590602001918460018302840111600160201b8311171561024057600080fd5b5090925090506108cc565b6040805192835260208301919091528051918290030190f35b61026c61146b565b604080516001600160801b039092168252519081900360200190f35b61029061147a565b60405180836001600160801b03168152602001826001600160801b031681526020019250505060405180910390f35b6102dc600480360360208110156102d557600080fd5b5035611494565b6040805163ffffffff909516855260069390930b60208501526001600160a01b039091168383015215156060830152519081900360800190f35b6103376004803603602081101561032c57600080fd5b503561ffff166114d9565b005b6103416115d3565b604080516001600160a01b03909816885260029690960b602088015261ffff9485168787015292841660608701529216608085015260ff90911660a0840152151560c0830152519081900360e00190f35b61024b600480360360a08110156103a857600080fd5b6001600160a01b03823516916020810135600290810b92604083013590910b916001600160801b036060820135169181019060a081016080820135600160201b8111156103f457600080fd5b82018360208201111561040657600080fd5b803590602001918460018302840111600160201b8311171561042757600080fd5b509092509050611623565b61043a6118df565b60408051918252519081900360200190f35b6103376004803603608081101561046257600080fd5b6001600160a01b038235169160208101359160408201359190810190608081016060820135600160201b81111561049857600080fd5b8201836020820111156104aa57600080fd5b803590602001918460018302840111600160201b831117156104cb57600080fd5b5090925090506118e5565b610290600480360360a08110156104ec57600080fd5b506001600160a01b03813516906020810135600290810b91604081013590910b906001600160801b0360608201358116916080013516611d40565b6105446004803603602081101561053d57600080fd5b5035611f5a565b604080516001600160801b0396871681526020810195909552848101939093529084166060840152909216608082015290519081900360a00190f35b61043a6004803603602081101561059657600080fd5b503560010b611f97565b61026c611fa9565b610337600480360360408110156105be57600080fd5b5060ff81358116916020013516611fcd565b610290600480360360608110156105e657600080fd5b506001600160a01b03813516906001600160801b03602082013581169160400135166121b1565b61067b6004803603602081101561062357600080fd5b810190602081018135600160201b81111561063d57600080fd5b82018360208201111561064f57600080fd5b803590602001918460208302840111600160201b8311171561067057600080fd5b50909250905061247e565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156106bf5781810151838201526020016106a7565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156106fe5781810151838201526020016106e6565b5050505090500194505050505060405180910390f35b61024b6004803603606081101561072a57600080fd5b508035600290810b91602081013590910b90604001356001600160801b031661250b565b6107786004803603604081101561076457600080fd5b508035600290810b9160200135900b612682565b6040805160069490940b84526001600160a01b03909216602084015263ffffffff1682820152519081900360600190f35b61019b612871565b6107b9612895565b6040805160029290920b8252519081900360200190f35b61019b6128b9565b6107e06128dd565b6040805162ffffff9092168252519081900360200190f35b61043a612901565b6108206004803603602081101561081657600080fd5b503560020b612907565b604080516001600160801b039099168952600f9790970b602089015287870195909552606087019390935260069190910b60808601526001600160a01b031660a085015263ffffffff1660c0840152151560e083015251908190036101000190f35b6103376004803603602081101561089857600080fd5b50356001600160a01b0316612971565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806108d7612b47565b8561090e576040805162461bcd60e51b8152602060048201526002602482015261415360f01b604482015290519081900360640190fd5b6040805160e0810182526000546001600160a01b0381168252600160a01b8104600290810b810b900b602083015261ffff600160b81b8204811693830193909352600160c81b810483166060830152600160d81b8104909216608082015260ff600160e81b8304811660a0830152600160f01b909204909116151560c082018190526109c7576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b87610a125780600001516001600160a01b0316866001600160a01b0316118015610a0d575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038716105b610a44565b80600001516001600160a01b0316866001600160a01b0316108015610a4457506401000276a36001600160a01b038716115b610a7b576040805162461bcd60e51b815260206004820152600360248201526214d41360ea1b604482015290519081900360640190fd5b6000805460ff60f01b191681556040805160c08101909152808a610aaa5760048460a0015160ff16901c610abd565b60108460a0015160ff1681610abb57fe5b065b60ff1681526004546001600160801b03166020820152604001610ade612b7e565b63ffffffff168152602001600060060b815260200160006001600160a01b031681526020016000151581525090506000808913905060006040518060e001604052808b81526020016000815260200185600001516001600160a01b03168152602001856020015160020b81526020018c610b5a57600254610b5e565b6001545b815260200160006001600160801b0316815260200184602001516001600160801b031681525090505b805115801590610bad5750886001600160a01b031681604001516001600160a01b031614155b15610f7757610bba6154b5565b60408201516001600160a01b031681526060820151610bfd906006907f00000000000000000000000000000000000000000000000000000000000000008f612b82565b15156040830152600290810b810b60208301819052620d89e719910b1215610c2e57620d89e7196020820152610c4d565b6020810151620d89e860029190910b1315610c4d57620d89e860208201525b610c5a8160200151612cc4565b6001600160a01b031660608201526040820151610ceb908d610c94578b6001600160a01b031683606001516001600160a01b031611610cae565b8b6001600160a01b031683606001516001600160a01b0316105b610cbc578260600151610cbe565b8b5b60c085015185517f0000000000000000000000000000000000000000000000000000000000000000612ff5565b60c085015260a084015260808301526001600160a01b031660408301528215610d4d57610d218160c001518260800151016131e7565b825103825260a0810151610d4390610d38906131e7565b6020840151906131fd565b6020830152610d88565b610d5a8160a001516131e7565b825101825260c08101516080820151610d8291610d7791016131e7565b602084015190613219565b60208301525b835160ff1615610dce576000846000015160ff168260c0015181610da857fe5b60c0840180519290910491829003905260a0840180519091016001600160801b03169052505b60c08201516001600160801b031615610e0d57610e018160c00151600160801b8460c001516001600160801b031661322f565b60808301805190910190525b80606001516001600160a01b031682604001516001600160a01b03161415610f3657806040015115610f0d578360a00151610e9757610e75846040015160008760200151886040015188602001518a6060015160086132df909695949392919063ffffffff16565b6001600160a01b03166080860152600690810b900b6060850152600160a08501525b6000610ee382602001518e610eae57600154610eb4565b84608001515b8f610ec3578560800151610ec7565b6002545b608089015160608a015160408b01516005959493929190613471565b90508c15610eef576000035b610efd8360c001518261352b565b6001600160801b031660c0840152505b8b610f1c578060200151610f25565b60018160200151035b600290810b900b6060830152610f71565b80600001516001600160a01b031682604001516001600160a01b031614610f7157610f6482604001516135e1565b600290810b900b60608301525b50610b87565b836020015160020b816060015160020b1461104557600080610fc586604001518660400151886020015188602001518a606001518b6080015160086138fc909695949392919063ffffffff16565b604085015160608601516000805461ffff60c81b1916600160c81b61ffff958616021761ffff60b81b1916600160b81b95909416949094029290921762ffffff60a01b1916600160a01b62ffffff60029490940b9390931692909202919091176001600160a01b0319166001600160a01b039091161790555061106a9050565b6040810151600080546001600160a01b0319166001600160a01b039092169190911790555b8060c001516001600160801b031683602001516001600160801b0316146110b05760c0810151600480546001600160801b0319166001600160801b039092169190911790555b8a1561110057608081015160015560a08101516001600160801b0316156110fb5760a0810151600380546001600160801b031981166001600160801b03918216909301169190911790555b611146565b608081015160025560a08101516001600160801b0316156111465760a0810151600380546001600160801b03808216600160801b92839004821690940116029190911790555b8115158b15151461115f57602081015181518b0361116c565b80600001518a0381602001515b90965094508a156112a55760008512156111ae576111ae7f00000000000000000000000000000000000000000000000000000000000000008d87600003613a97565b60006111b8613be5565b9050336001600160a01b031663fa461e3388888c8c6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561123c57600080fd5b505af1158015611250573d6000803e3d6000fd5b5050505061125c613be5565b6112668289613d1e565b111561129f576040805162461bcd60e51b815260206004820152600360248201526249494160e81b604482015290519081900360640190fd5b506113cf565b60008612156112dc576112dc7f00000000000000000000000000000000000000000000000000000000000000008d88600003613a97565b60006112e6613d2e565b9050336001600160a01b031663fa461e3388888c8c6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561136a57600080fd5b505af115801561137e573d6000803e3d6000fd5b5050505061138a613d2e565b6113948288613d1e565b11156113cd576040805162461bcd60e51b815260206004820152600360248201526249494160e81b604482015290519081900360640190fd5b505b60408082015160c083015160608085015184518b8152602081018b90526001600160a01b03948516818701526001600160801b039093169183019190915260020b60808201529151908e169133917fc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca679181900360a00190a350506000805460ff60f01b1916600160f01b17905550919890975095505050505050565b6004546001600160801b031681565b6003546001600160801b0380821691600160801b90041682565b60088161ffff81106114a557600080fd5b015463ffffffff81169150600160201b810460060b90600160581b81046001600160a01b031690600160f81b900460ff1684565b600054600160f01b900460ff1661151d576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b19169055611532612b47565b60008054600160d81b900461ffff169061154e60088385613dc6565b6000805461ffff808416600160d81b810261ffff60d81b19909316929092179092559192508316146115bb576040805161ffff80851682528316602082015281517fac49e518f90a358f652e4400164f05a5d8f7e35e7747279bc3a93dbf584e125a929181900390910190a15b50506000805460ff60f01b1916600160f01b17905550565b6000546001600160a01b03811690600160a01b810460020b9061ffff600160b81b8204811691600160c81b8104821691600160d81b8204169060ff600160e81b8204811691600160f01b90041687565b600080548190600160f01b900460ff1661166a576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b191690556001600160801b03851661168a57600080fd5b6000806116d860405180608001604052808c6001600160a01b031681526020018b60020b81526020018a60020b81526020016116ce8a6001600160801b0316613e69565b600f0b9052613e7a565b925092505081935080925060008060008611156116fa576116f7613be5565b91505b841561170b57611708613d2e565b90505b336001600160a01b031663d348799787878b8b6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561178d57600080fd5b505af11580156117a1573d6000803e3d6000fd5b5050505060008611156117f8576117b6613be5565b6117c08388613d1e565b11156117f8576040805162461bcd60e51b815260206004820152600260248201526104d360f41b604482015290519081900360640190fd5b841561184857611806613d2e565b6118108287613d1e565b1115611848576040805162461bcd60e51b81526020600482015260026024820152614d3160f01b604482015290519081900360640190fd5b8960020b8b60020b8d6001600160a01b03167f7a53080ba414158be7ec69b987b5fb7d07dee101fe85488f0853ae16239d0bde338d8b8b60405180856001600160a01b03168152602001846001600160801b0316815260200183815260200182815260200194505050505060405180910390a450506000805460ff60f01b1916600160f01b17905550919890975095505050505050565b60025481565b600054600160f01b900460ff16611929576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b1916905561193e612b47565b6004546001600160801b031680611980576040805162461bcd60e51b81526020600482015260016024820152601360fa1b604482015290519081900360640190fd5b60006119b5867f000000000000000000000000000000000000000000000000000000000000000062ffffff16620f42406140ba565b905060006119ec867f000000000000000000000000000000000000000000000000000000000000000062ffffff16620f42406140ba565b905060006119f8613be5565b90506000611a04613d2e565b90508815611a3757611a377f00000000000000000000000000000000000000000000000000000000000000008b8b613a97565b8715611a6857611a687f00000000000000000000000000000000000000000000000000000000000000008b8a613a97565b336001600160a01b031663e9cbafb085858a8a6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015611aea57600080fd5b505af1158015611afe573d6000803e3d6000fd5b505050506000611b0c613be5565b90506000611b18613d2e565b905081611b258588613d1e565b1115611b5d576040805162461bcd60e51b8152602060048201526002602482015261046360f41b604482015290519081900360640190fd5b80611b688487613d1e565b1115611ba0576040805162461bcd60e51b8152602060048201526002602482015261463160f01b604482015290519081900360640190fd5b8382038382038115611c2f5760008054600160e81b9004600f16908115611bd3578160ff168481611bcd57fe5b04611bd6565b60005b90506001600160801b03811615611c0957600380546001600160801b038082168401166001600160801b03199091161790555b611c23818503600160801b8d6001600160801b031661322f565b60018054909101905550505b8015611cba5760008054600160e81b900460041c600f16908115611c5f578160ff168381611c5957fe5b04611c62565b60005b90506001600160801b03811615611c9457600380546001600160801b03600160801b8083048216850182160291161790555b611cae818403600160801b8d6001600160801b031661322f565b60028054909101905550505b8d6001600160a01b0316336001600160a01b03167fbdbdb71d7860376ba52b25a5028beea23581364a40522f6bcfb86bb1f2dca6338f8f86866040518085815260200184815260200183815260200182815260200194505050505060405180910390a350506000805460ff60f01b1916600160f01b179055505050505050505050505050565b600080548190600160f01b900460ff16611d87576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b19168155611da160073389896140f4565b60038101549091506001600160801b0390811690861611611dc25784611dd1565b60038101546001600160801b03165b60038201549093506001600160801b03600160801b909104811690851611611df95783611e0f565b6003810154600160801b90046001600160801b03165b91506001600160801b03831615611e74576003810180546001600160801b031981166001600160801b03918216869003821617909155611e74907f0000000000000000000000000000000000000000000000000000000000000000908a908616613a97565b6001600160801b03821615611eda576003810180546001600160801b03600160801b808304821686900382160291811691909117909155611eda907f0000000000000000000000000000000000000000000000000000000000000000908a908516613a97565b604080516001600160a01b038a1681526001600160801b0380861660208301528416818301529051600288810b92908a900b9133917f70935338e69775456a85ddef226c395fb668b63fa0115f5f20610b388e6ca9c0919081900360600190a4506000805460ff60f01b1916600160f01b17905590969095509350505050565b60076020526000908152604090208054600182015460028301546003909301546001600160801b0392831693919281811691600160801b90041685565b60066020526000908152604090205481565b7f000000000000000000000000000000000000000000000000000000000000000081565b600054600160f01b900460ff16612011576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b1916905560408051638da5cb5b60e01b815290516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691638da5cb5b916004808301926020929190829003018186803b15801561207e57600080fd5b505afa158015612092573d6000803e3d6000fd5b505050506040513d60208110156120a857600080fd5b50516001600160a01b031633146120be57600080fd5b60ff821615806120e1575060048260ff16101580156120e15750600a8260ff1611155b801561210b575060ff8116158061210b575060048160ff161015801561210b5750600a8160ff1611155b61211457600080fd5b60008054610ff0600484901b16840160ff908116600160e81b90810260ff60e81b19841617909355919004167f973d8d92bb299f4af6ce49b52a8adb85ae46b9f214c4c4fc06ac77401237b1336010826040805160ff9390920683168252600f600486901c16602083015286831682820152918516606082015290519081900360800190a150506000805460ff60f01b1916600160f01b17905550565b600080548190600160f01b900460ff166121f8576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b1916905560408051638da5cb5b60e01b815290516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691638da5cb5b916004808301926020929190829003018186803b15801561226557600080fd5b505afa158015612279573d6000803e3d6000fd5b505050506040513d602081101561228f57600080fd5b50516001600160a01b031633146122a557600080fd5b6003546001600160801b03908116908516116122c157836122ce565b6003546001600160801b03165b6003549092506001600160801b03600160801b9091048116908416116122f45782612308565b600354600160801b90046001600160801b03165b90506001600160801b03821615612389576003546001600160801b038381169116141561233757600019909101905b600380546001600160801b031981166001600160801b03918216859003821617909155612389907f00000000000000000000000000000000000000000000000000000000000000009087908516613a97565b6001600160801b0381161561240f576003546001600160801b03828116600160801b9092041614156123ba57600019015b600380546001600160801b03600160801b80830482168590038216029181169190911790915561240f907f00000000000000000000000000000000000000000000000000000000000000009087908416613a97565b604080516001600160801b0380851682528316602082015281516001600160a01b0388169233927f596b573906218d3411850b26a6b437d6c4522fdb43d2d2386263f86d50b8b151929081900390910190a36000805460ff60f01b1916600160f01b1790559094909350915050565b606080612489612b47565b612500612494612b7e565b858580806020026020016040519081016040528093929190818152602001838360200280828437600092018290525054600454600896959450600160a01b820460020b935061ffff600160b81b8304811693506001600160801b0390911691600160c81b900416614158565b915091509250929050565b600080548190600160f01b900460ff16612552576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b1916815560408051608081018252338152600288810b602083015287900b91810191909152819081906125ab906060810161259e6001600160801b038a16613e69565b600003600f0b9052613e7a565b92509250925081600003945080600003935060008511806125cc5750600084115b1561260b576003830180546001600160801b038082168089018216600160801b93849004831689019092169092029091176001600160801b0319161790555b604080516001600160801b0388168152602081018790528082018690529051600289810b92908b900b9133917f0c396cd989a39f4459b5fa1aed6a9a8dcdbc45908acfd67e028cd568da98982c919081900360600190a450506000805460ff60f01b1916600160f01b179055509094909350915050565b600080600061268f612b47565b61269985856142b2565b600285810b810b60009081526005602052604080822087840b90930b825281206003830154600681900b93600160381b82046001600160a01b0316928492600160d81b810463ffffffff169284929091600160f81b900460ff16806126fd57600080fd5b6003820154600681900b9850600160381b81046001600160a01b03169650600160d81b810463ffffffff169450600160f81b900460ff168061273e57600080fd5b50506040805160e0810182526000546001600160a01b0381168252600160a01b8104600290810b810b810b6020840181905261ffff600160b81b8404811695850195909552600160c81b830485166060850152600160d81b8304909416608084015260ff600160e81b8304811660a0850152600160f01b909204909116151560c08301529093508e810b91900b121590506127e75750939094039650900393509003905061286a565b8a60020b816020015160020b121561285b576000612803612b7e565b6020830151604084015160045460608601519394506000938493612839936008938893879392916001600160801b0316906132df565b9a9003989098039b50509490960392909203965090910303925061286a915050565b50949093039650039350900390505b9250925092565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60015481565b60056020526000908152604090208054600182015460028301546003909301546001600160801b03831693600160801b909304600f0b9290600681900b90600160381b81046001600160a01b031690600160d81b810463ffffffff1690600160f81b900460ff1688565b6000546001600160a01b0316156129b4576040805162461bcd60e51b8152602060048201526002602482015261414960f01b604482015290519081900360640190fd5b60006129bf826135e1565b90506000806129d76129cf612b7e565b60089061437b565b6040805160e0810182526001600160a01b038816808252600288810b6020808501829052600085870181905261ffff898116606088018190529089166080880181905260a08801839052600160c0909801979097528154600160f01b6001600160a01b0319909116871762ffffff60a01b1916600160a01b62ffffff9787900b97909716969096029590951763ffffffff60b81b1916600160c81b9091021761ffff60d81b1916600160d81b9096029590951761ffff60e81b191692909217909355835191825281019190915281519395509193507f98636036cb66a9c19a37435efc1e90142190214e8abeb821bdba3f2990dd4c9592918290030190a150505050565b60008082600281900b620d89e71981612af057fe5b05029050600083600281900b620d89e881612b0757fe5b0502905060008460020b83830360020b81612b1e57fe5b0560010190508062ffffff166001600160801b03801681612b3b57fe5b0493505050505b919050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614612b7c57600080fd5b565b4290565b60008060008460020b8660020b81612b9657fe5b05905060008660020b128015612bbd57508460020b8660020b81612bb657fe5b0760020b15155b15612bc757600019015b8315612c3c57600080612bd9836143c7565b600182810b810b600090815260208d9052604090205460ff83169190911b80016000190190811680151597509294509092509085612c1e57888360ff16860302612c31565b88612c28826143d9565b840360ff168603025b965050505050612cba565b600080612c4b836001016143c7565b91509150600060018260ff166001901b031990506000818b60008660010b60010b8152602001908152602001600020541690508060001415955085612c9d57888360ff0360ff16866001010102612cb3565b8883612ca883614478565b0360ff168660010101025b9650505050505b5094509492505050565b60008060008360020b12612cdb578260020b612ce3565b8260020b6000035b9050620d89e8811115612d21576040805162461bcd60e51b81526020600482015260016024820152601560fa1b604482015290519081900360640190fd5b600060018216612d3557600160801b612d47565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615612d7b576ffff97272373d413259a46990580e213a0260801c5b6004821615612d9a576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615612db9576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615612dd8576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615612df7576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615612e16576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615612e35576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615612e55576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615612e75576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615612e95576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615612eb5576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615612ed5576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615612ef5576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615612f15576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615612f35576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615612f56576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615612f76576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615612f95576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615612fb2576b048a170391f7dc42444e8fa20260801c5b60008460020b1315612fcd578060001981612fc957fe5b0490505b600160201b810615612fe0576001612fe3565b60005b60ff16602082901c0192505050919050565b60008080806001600160a01b03808916908a16101581871280159061307a57600061302e8989620f42400362ffffff16620f424061322f565b905082613047576130428c8c8c6001614562565b613054565b6130548b8d8c60016145dd565b9550858110613065578a9650613074565b6130718c8b8386614688565b96505b506130c4565b816130915761308c8b8b8b60006145dd565b61309e565b61309e8a8c8b6000614562565b93508388600003106130b2578995506130c4565b6130c18b8a8a600003856146d4565b95505b6001600160a01b038a8116908716148215613127578080156130e35750815b6130f9576130f4878d8c60016145dd565b6130fb565b855b9550808015613108575081155b61311e57613119878d8c6000614562565b613120565b845b9450613171565b8080156131315750815b613147576131428c888c6001614562565b613149565b855b9550808015613156575081155b61316c576131678c888c60006145dd565b61316e565b845b94505b8115801561318157508860000385115b1561318d578860000394505b8180156131ac57508a6001600160a01b0316876001600160a01b031614155b156131bb5785890393506131d8565b6131d5868962ffffff168a620f42400362ffffff166140ba565b93505b50505095509550955095915050565b6000600160ff1b82106131f957600080fd5b5090565b8082038281131560008312151461321357600080fd5b92915050565b8181018281121560008312151461321357600080fd5b6000808060001985870986860292508281109083900303905080613265576000841161325a57600080fd5b5082900490506132d8565b80841161327157600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b60008063ffffffff8716613385576000898661ffff1661ffff811061330057fe5b60408051608081018252919092015463ffffffff808216808452600160201b8304600690810b810b900b6020850152600160581b83046001600160a01b031694840194909452600160f81b90910460ff16151560608301529092508a16146133715761336e818a8988614720565b90505b806020015181604001519250925050613465565b86880360008061339a8c8c858c8c8c8c6147c3565b91509150816000015163ffffffff168363ffffffff1614156133cc578160200151826040015194509450505050613465565b805163ffffffff848116911614156133f4578060200151816040015194509450505050613465565b8151815160208085015190840151918390039286039163ffffffff80841692908516910360060b8161342257fe5b05028460200151018263ffffffff168263ffffffff1686604001518660400151036001600160a01b0316028161345457fe5b048560400151019650965050505050505b97509795505050505050565b600295860b860b60009081526020979097526040909620600181018054909503909455938301805490920390915560038201805463ffffffff600160d81b6001600160a01b03600160381b808504821690960316909402600160381b600160d81b031990921691909117600681810b90960390950b66ffffffffffffff1666ffffffffffffff199095169490941782810485169095039093160263ffffffff60d81b1990931692909217905554600160801b9004600f0b90565b60008082600f0b121561359057826001600160801b03168260000384039150816001600160801b03161061358b576040805162461bcd60e51b81526020600482015260026024820152614c5360f01b604482015290519081900360640190fd5b613213565b826001600160801b03168284019150816001600160801b03161015613213576040805162461bcd60e51b81526020600482015260026024820152614c4160f01b604482015290519081900360640190fd5b60006401000276a36001600160a01b0383161080159061361d575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038316105b613652576040805162461bcd60e51b81526020600482015260016024820152602960f91b604482015290519081900360640190fd5b640100000000600160c01b03602083901b166001600160801b03811160071b81811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c979088119617909417909217179091171717608081106136e657607f810383901c91506136f0565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d607f198f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c600160381b161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581026f028f6481ab7f045a5af012a19d003aa9198101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b146138ed57886001600160a01b03166138d182612cc4565b6001600160a01b031611156138e657816138e8565b805b6138ef565b815b9998505050505050505050565b6000806000898961ffff1661ffff811061391257fe5b60408051608081018252919092015463ffffffff808216808452600160201b8304600690810b810b900b6020850152600160581b83046001600160a01b031694840194909452600160f81b90910460ff1615156060830152909250891614156139815788859250925050613465565b8461ffff168461ffff161180156139a257506001850361ffff168961ffff16145b156139af578391506139b3565b8491505b8161ffff168960010161ffff16816139c757fe5b0692506139d681898989614720565b8a8461ffff1661ffff81106139e757fe5b825191018054602084015160408501516060909501511515600160f81b026001600160f81b036001600160a01b03909616600160581b027fff0000000000000000000000000000000000000000ffffffffffffffffffffff60069390930b66ffffffffffffff16600160201b026affffffffffffff000000001963ffffffff90971663ffffffff199095169490941795909516929092171692909217929092161790555097509795505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1781529251825160009485949389169392918291908083835b60208310613b135780518252601f199092019160209182019101613af4565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613b75576040519150601f19603f3d011682016040523d82523d6000602084013e613b7a565b606091505b5091509150818015613ba8575080511580613ba85750808060200190516020811015613ba557600080fd5b50515b613bde576040805162461bcd60e51b81526020600482015260026024820152612a2360f11b604482015290519081900360640190fd5b5050505050565b604080513060248083019190915282518083039091018152604490910182526020810180516001600160e01b03166370a0823160e01b17815291518151600093849384936001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001693919290918291908083835b60208310613c7e5780518252601f199092019160209182019101613c5f565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114613cde576040519150601f19603f3d011682016040523d82523d6000602084013e613ce3565b606091505b5091509150818015613cf757506020815110155b613d0057600080fd5b808060200190516020811015613d1557600080fd5b50519250505090565b8082018281101561321357600080fd5b604080513060248083019190915282518083039091018152604490910182526020810180516001600160e01b03166370a0823160e01b17815291518151600093849384936001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016939192909182919080838360208310613c7e5780518252601f199092019160209182019101613c5f565b6000808361ffff1611613e04576040805162461bcd60e51b81526020600482015260016024820152604960f81b604482015290519081900360640190fd5b8261ffff168261ffff1611613e1a5750816132d8565b825b8261ffff168161ffff161015613e60576001858261ffff1661ffff8110613e3f57fe5b01805463ffffffff191663ffffffff92909216919091179055600101613e1c565b50909392505050565b80600f81900b8114612b4257600080fd5b6000806000613e87612b47565b613e99846020015185604001516142b2565b6040805160e0810182526000546001600160a01b0381168252600160a01b8104600290810b810b900b602080840182905261ffff600160b81b8404811685870152600160c81b84048116606080870191909152600160d81b8504909116608086015260ff600160e81b8504811660a0870152600160f01b909404909316151560c085015288519089015194890151928901519394613f3d94919390929091906149bd565b93508460600151600f0b6000146140b257846020015160020b816020015160020b1215613f9257613f8b613f748660200151612cc4565b613f818760400151612cc4565b8760600151614b72565b92506140b2565b846040015160020b816020015160020b12156140885760045460408201516001600160801b0390911690613fe490613fc8612b7e565b60208501516060860151608087015160089493929187916138fc565b6000805461ffff60c81b1916600160c81b61ffff938416021761ffff60b81b1916600160b81b939092169290920217905581516040870151614034919061402a90612cc4565b8860600151614b72565b93506140526140468760200151612cc4565b83516060890151614bb6565b925061406281876060015161352b565b600480546001600160801b0319166001600160801b0392909216919091179055506140b2565b6140af6140988660200151612cc4565b6140a58760400151612cc4565b8760600151614bb6565b91505b509193909250565b60006140c784848461322f565b9050600082806140d357fe5b84860911156132d85760001981106140ea57600080fd5b6001019392505050565b6040805160609490941b6bffffffffffffffffffffffff1916602080860191909152600293840b60e890811b60348701529290930b90911b60378401528051808403601a018152603a90930181528251928201929092206000908152929052902090565b60608060008361ffff1611614198576040805162461bcd60e51b81526020600482015260016024820152604960f81b604482015290519081900360640190fd5b865167ffffffffffffffff811180156141b057600080fd5b506040519080825280602002602001820160405280156141da578160200160208202803683370190505b509150865167ffffffffffffffff811180156141f557600080fd5b5060405190808252806020026020018201604052801561421f578160200160208202803683370190505b50905060005b87518110156142a5576142508a8a8a848151811061423f57fe5b60200260200101518a8a8a8a6132df565b84838151811061425c57fe5b6020026020010184848151811061426f57fe5b60200260200101826001600160a01b03166001600160a01b03168152508260060b60060b81525050508080600101915050614225565b5097509795505050505050565b8060020b8260020b126142f2576040805162461bcd60e51b8152602060048201526003602482015262544c5560e81b604482015290519081900360640190fd5b620d89e719600283900b1215614335576040805162461bcd60e51b8152602060048201526003602482015262544c4d60e81b604482015290519081900360640190fd5b620d89e8600282900b1315614377576040805162461bcd60e51b815260206004820152600360248201526254554d60e81b604482015290519081900360640190fd5b5050565b6040805160808101825263ffffffff9283168082526000602083018190529282019290925260016060909101819052835463ffffffff1916909117909116600160f81b17909155908190565b60020b600881901d9161010090910790565b60008082116143e757600080fd5b600160801b82106143fa57608091821c91015b68010000000000000000821061441257604091821c91015b600160201b821061442557602091821c91015b62010000821061443757601091821c91015b610100821061444857600891821c91015b6010821061445857600491821c91015b6004821061446857600291821c91015b60028210612b4257600101919050565b600080821161448657600080fd5b5060ff6001600160801b038216156144a157607f19016144a9565b608082901c91505b67ffffffffffffffff8216156144c257603f19016144ca565b604082901c91505b63ffffffff8216156144df57601f19016144e7565b602082901c91505b61ffff8216156144fa57600f1901614502565b601082901c91505b60ff821615614514576007190161451c565b600882901c91505b600f82161561452e5760031901614536565b600482901c91505b60038216156145485760011901614550565b600282901c91505b6001821615612b425760001901919050565b6000836001600160a01b0316856001600160a01b03161115614582579293925b816145af576145aa836001600160801b03168686036001600160a01b0316600160601b61322f565b6145d2565b6145d2836001600160801b03168686036001600160a01b0316600160601b6140ba565b90505b949350505050565b6000836001600160a01b0316856001600160a01b031611156145fd579293925b600160601b600160e01b03606084901b166001600160a01b03868603811690871661462757600080fd5b8361465757866001600160a01b031661464a8383896001600160a01b031661322f565b8161465157fe5b0461467d565b61467d61466e8383896001600160a01b03166140ba565b886001600160a01b0316614be5565b979650505050505050565b600080856001600160a01b03161161469f57600080fd5b6000846001600160801b0316116146b557600080fd5b816146c7576145aa8585856001614bf0565b6145d28585856001614cd1565b600080856001600160a01b0316116146eb57600080fd5b6000846001600160801b03161161470157600080fd5b81614713576145aa8585856000614cd1565b6145d28585856000614bf0565b6147286154f1565b600085600001518503905060405180608001604052808663ffffffff1681526020018263ffffffff168660020b0288602001510160060b81526020016000856001600160801b03161161477c57600161477e565b845b6001600160801b031663ffffffff60801b608085901b168161479c57fe5b048860400151016001600160a01b0316815260200160011515815250915050949350505050565b6147cb6154f1565b6147d36154f1565b888561ffff1661ffff81106147e457fe5b60408051608081018252919092015463ffffffff8116808352600160201b8204600690810b810b900b6020840152600160581b82046001600160a01b031693830193909352600160f81b900460ff1615156060820152925061484890899089614db4565b15614880578663ffffffff16826000015163ffffffff16141561486a57613465565b8161487783898988614720565b91509150613465565b888361ffff168660010161ffff168161489557fe5b0661ffff1661ffff81106148a557fe5b60408051608081018252929091015463ffffffff81168352600160201b8104600690810b810b900b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b9091041615156060820181905290925061495a57604080516080810182528a5463ffffffff81168252600160201b8104600690810b810b900b6020830152600160581b81046001600160a01b031692820192909252600160f81b90910460ff161515606082015291505b61496988836000015189614db4565b6149a0576040805162461bcd60e51b815260206004820152600360248201526213d31160ea1b604482015290519081900360640190fd5b6149ad8989898887614e75565b9150915097509795505050505050565b60006149cc60078787876140f4565b60015460025491925090600080600f87900b15614b125760006149ed612b7e565b6000805460045492935090918291614a379160089186918591600160a01b810460020b9161ffff600160b81b83048116926001600160801b0390921691600160c81b9004166132df565b9092509050614a7160058d8b8d8b8b87898b60007f0000000000000000000000000000000000000000000000000000000000000000615013565b9450614aa860058c8b8d8b8b87898b60017f0000000000000000000000000000000000000000000000000000000000000000615013565b93508415614adc57614adc60068d7f00000000000000000000000000000000000000000000000000000000000000006151cc565b8315614b0e57614b0e60068c7f00000000000000000000000000000000000000000000000000000000000000006151cc565b5050505b600080614b2460058c8c8b8a8a615232565b9092509050614b35878a84846152de565b600089600f0b1215614b63578315614b5257614b5260058c615473565b8215614b6357614b6360058b615473565b50505050505095945050505050565b60008082600f0b12614b9857614b93614b8e85858560016145dd565b6131e7565b6145d5565b614bab614b8e85858560000360006145dd565b600003949350505050565b60008082600f0b12614bd257614b93614b8e8585856001614562565b614bab614b8e8585856000036000614562565b808204910615150190565b60008115614c635760006001600160a01b03841115614c2657614c2184600160601b876001600160801b031661322f565b614c3e565b6001600160801b038516606085901b81614c3c57fe5b045b9050614c5b614c566001600160a01b03881683613d1e565b61549f565b9150506145d5565b60006001600160a01b03841115614c9157614c8c84600160601b876001600160801b03166140ba565b614ca8565b614ca8606085901b6001600160801b038716614be5565b905080866001600160a01b031611614cbf57600080fd5b6001600160a01b0386160390506145d5565b600082614cdf5750836145d5565b600160601b600160e01b03606085901b168215614d6d576001600160a01b03861684810290858281614d0d57fe5b041415614d3e57818101828110614d3c57614d3283896001600160a01b0316836140ba565b93505050506145d5565b505b614d6482614d5f878a6001600160a01b03168681614d5857fe5b0490613d1e565b614be5565b925050506145d5565b6001600160a01b03861684810290858281614d8457fe5b04148015614d9157508082115b614d9a57600080fd5b808203614d32614c56846001600160a01b038b16846140ba565b60008363ffffffff168363ffffffff1611158015614dde57508363ffffffff168263ffffffff1611155b15614dfa578163ffffffff168363ffffffff16111590506132d8565b60008463ffffffff168463ffffffff1611614e21578363ffffffff16600160201b01614e29565b8363ffffffff165b64ffffffffff16905060008563ffffffff168463ffffffff1611614e59578363ffffffff16600160201b01614e61565b8363ffffffff165b64ffffffffff169091111595945050505050565b614e7d6154f1565b614e856154f1565b60008361ffff168560010161ffff1681614e9b57fe5b0661ffff169050600060018561ffff16830103905060005b506002818301048961ffff87168281614ec857fe5b0661ffff8110614ed457fe5b60408051608081018252929091015463ffffffff81168352600160201b8104600690810b810b900b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b90910416151560608201819052909550614f3e57806001019250614eb3565b898661ffff168260010181614f4f57fe5b0661ffff8110614f5b57fe5b60408051608081018252929091015463ffffffff81168352600160201b8104600690810b810b900b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b90910416151560608201528551909450600090614fc5908b908b614db4565b9050808015614fde5750614fde8a8a8760000151614db4565b15614fe95750615006565b80614ff957600182039250615000565b8160010193505b50614eb3565b5050509550959350505050565b60028a810b900b600090815260208c90526040812080546001600160801b03168261503e828d61352b565b9050846001600160801b0316816001600160801b0316111561508c576040805162461bcd60e51b81526020600482015260026024820152614c4f60f01b604482015290519081900360640190fd5b6001600160801b038281161590821615811415945015615131578c60020b8e60020b1361511957600183018b9055600283018a9055600383018054600160381b600160d81b031916600160381b6001600160a01b038c16021766ffffffffffffff191666ffffffffffffff60068b900b161763ffffffff60d81b1916600160d81b63ffffffff8a16021790555b6003830180546001600160f81b0316600160f81b1790555b82546001600160801b0319166001600160801b0382161783558561517a5782546151759061517090600160801b9004600f90810b810b908f900b613219565b613e69565b61519b565b825461519b9061517090600160801b9004600f90810b810b908f900b6131fd565b8354600f9190910b6001600160801b03908116600160801b0291161790925550909c9b505050505050505050505050565b8060020b8260020b816151db57fe5b0760020b156151e957600080fd5b6000806152048360020b8560020b816151fe57fe5b056143c7565b600191820b820b60009081526020979097526040909620805460ff9097169190911b90951890945550505050565b600285810b80820b60009081526020899052604080822088850b850b83529082209193849391929184918291908a900b126152785750506001820154600283015461528b565b8360010154880391508360020154870390505b6000808b60020b8b60020b12156152ad575050600183015460028401546152c0565b84600101548a0391508460020154890390505b92909803979097039b96909503949094039850939650505050505050565b6040805160a08101825285546001600160801b0390811682526001870154602083015260028701549282019290925260038601548083166060830152600160801b900490911660808201526000600f85900b61537d5781516001600160801b0316615375576040805162461bcd60e51b815260206004820152600260248201526104e560f41b604482015290519081900360640190fd5b50805161538c565b8151615389908661352b565b90505b60006153b08360200151860384600001516001600160801b0316600160801b61322f565b905060006153d68460400151860385600001516001600160801b0316600160801b61322f565b905086600f0b6000146153fd5787546001600160801b0319166001600160801b0384161788555b60018801869055600288018590556001600160801b03821615158061542b57506000816001600160801b0316115b15615469576003880180546001600160801b031981166001600160801b039182168501821617808216600160801b9182900483168501909216021790555b5050505050505050565b600290810b810b6000908152602092909252604082208281556001810183905590810182905560030155565b806001600160a01b0381168114612b4257600080fd5b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915290565b6040805160808101825260008082526020820181905291810182905260608101919091529056fea26469706673582212200c1f93875bf69bd8236c0ed6fa61db810cf06b5c5481470ac7a631eb4e43c81264736f6c63430007060033a264697066735822122093a7aea0dd1757bc99241264e80faeac540e896cf901842457b186425e3e809964736f6c63430007060033c66a3fdf07232cdd185febcc6579d408c241b47ae2f9907d84be655141eeaecc", - "opcodes": "PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP ADDRESS PUSH1 0x60 SHL PUSH1 0x80 MSTORE PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD PUSH1 0x0 SWAP1 PUSH32 0xB532073B38C83145E3E5135377A08BF9AAB55BC0FD7C1179CD4FB995D2A5159C SWAP1 DUP3 SWAP1 LOG3 PUSH2 0x1F4 PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH32 0xFB8CF1D12598D1A039DD1D106665851A96AADF67D0D9ED76FCEEA282119208B7 DUP1 SLOAD PUSH3 0xFFFFFF NOT AND PUSH1 0xA SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP3 SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5FFA DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 LOG3 PUSH2 0xBB8 PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH32 0x72DFFA9B822156D9CF4B0090FA0B656BCB9CC2B2C60EB6ACFC20A34F54B31743 DUP1 SLOAD PUSH3 0xFFFFFF NOT AND PUSH1 0x3C SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP3 SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5FFA DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 LOG3 PUSH2 0x2710 PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH32 0x8CC740D51DAA94FF54F33BD779C2D20149F524C340519B49181BE5A08615F829 DUP1 SLOAD PUSH3 0xFFFFFF NOT AND PUSH1 0xC8 SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP3 SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5FFA DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 LOG3 PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH2 0x5E86 PUSH2 0x174 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x551 MSTORE POP PUSH2 0x5E86 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x89035730 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x89035730 EQ PUSH2 0x13B JUMPI DUP1 PUSH4 0x8A7C195F EQ PUSH2 0x185 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x1B0 JUMPI DUP1 PUSH4 0xA1671295 EQ PUSH2 0x1B8 JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x13AF4035 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x1698EE82 EQ PUSH2 0xAA JUMPI DUP1 PUSH4 0x22AFCCCB EQ PUSH2 0x102 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x98 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1F4 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xE6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH3 0xFFFFFF AND PUSH2 0x267 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x124 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x118 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH3 0xFFFFFF AND PUSH2 0x293 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 SWAP3 SWAP1 SWAP3 SIGNEXTEND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x143 PUSH2 0x2A8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP7 DUP8 AND DUP2 MSTORE SWAP5 DUP7 AND PUSH1 0x20 DUP7 ADD MSTORE SWAP3 SWAP1 SWAP5 AND DUP4 DUP4 ADD MSTORE PUSH3 0xFFFFFF AND PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x2 SWAP3 SWAP1 SWAP3 SIGNEXTEND PUSH1 0x80 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 RETURN JUMPDEST PUSH2 0xA8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x19B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0xFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x2 SIGNEXTEND PUSH2 0x2DE JUMP JUMPDEST PUSH2 0xE6 PUSH2 0x3A1 JUMP JUMPDEST PUSH2 0xE6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH3 0xFFFFFF AND PUSH2 0x3B0 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x20B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0xB532073B38C83145E3E5135377A08BF9AAB55BC0FD7C1179CD4FB995D2A5159C SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 DUP3 MSTORE SWAP3 DUP5 MSTORE DUP3 DUP5 KECCAK256 SWAP1 MSTORE DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x2 SIGNEXTEND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 SLOAD PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND SWAP4 SWAP3 DUP4 AND SWAP3 DUP2 AND SWAP2 PUSH3 0xFFFFFF PUSH1 0x1 PUSH1 0xA0 SHL DUP4 DIV AND SWAP2 PUSH1 0x1 PUSH1 0xB8 SHL SWAP1 DIV SWAP1 SIGNEXTEND DUP6 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x2F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0xF4240 DUP3 PUSH3 0xFFFFFF AND LT PUSH2 0x309 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x2 SIGNEXTEND SGT DUP1 ISZERO PUSH2 0x320 JUMPI POP PUSH2 0x4000 DUP2 PUSH1 0x2 SIGNEXTEND SLT JUMPDEST PUSH2 0x329 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0xFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND ISZERO PUSH2 0x34F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0xFFFFFF DUP3 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH3 0xFFFFFF NOT AND PUSH1 0x2 DUP8 SWAP1 SIGNEXTEND SWAP6 DUP7 AND OR SWAP1 SSTORE MLOAD PUSH32 0xC66A3FDF07232CDD185FEBCC6579D408C241B47AE2F9907D84BE655141EEAECC SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3BA PUSH2 0x546 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x3D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT PUSH2 0x3FC JUMPI DUP5 DUP7 PUSH2 0x3FF JUMP JUMPDEST DUP6 DUP6 JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x417 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0xFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 DUP2 SWAP1 SIGNEXTEND PUSH2 0x43E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP6 AND DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH3 0xFFFFFF DUP11 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD AND ISZERO PUSH2 0x47D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x48A ADDRESS DUP5 DUP5 DUP9 DUP6 PUSH2 0x57D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP10 DUP8 AND DUP1 DUP7 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP6 KECCAK256 PUSH3 0xFFFFFF DUP15 AND DUP1 DUP8 MSTORE SWAP1 DUP5 MSTORE DUP3 DUP7 KECCAK256 DUP1 SLOAD SWAP9 DUP11 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP10 DUP11 AND DUP2 OR SWAP1 SWAP2 SSTORE DUP3 DUP8 MSTORE SWAP5 DUP5 MSTORE DUP3 DUP7 KECCAK256 DUP8 DUP8 MSTORE DUP5 MSTORE DUP3 DUP7 KECCAK256 DUP2 DUP8 MSTORE DUP5 MSTORE SWAP5 DUP3 SWAP1 KECCAK256 DUP1 SLOAD SWAP1 SWAP8 AND DUP5 OR SWAP1 SWAP7 SSTORE DUP1 MLOAD PUSH1 0x2 DUP10 SWAP1 SIGNEXTEND DUP2 MSTORE SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP6 SWAP10 POP SWAP2 SWAP5 PUSH32 0x783CCA1C0412DD0D695E784568C96DA2E9C22FF989357A2E8B1D9B2B4E6B7118 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x57B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND DUP1 DUP4 MSTORE DUP8 DUP3 AND PUSH1 0x20 DUP1 DUP6 ADD DUP3 SWAP1 MSTORE SWAP3 DUP9 AND DUP5 DUP7 ADD DUP2 SWAP1 MSTORE PUSH3 0xFFFFFF DUP9 DUP2 AND PUSH1 0x60 DUP1 DUP9 ADD DUP3 SWAP1 MSTORE PUSH1 0x2 DUP11 DUP2 SIGNEXTEND PUSH1 0x80 SWAP10 DUP11 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND SWAP1 SWAP10 OR DUP2 SSTORE PUSH1 0x1 DUP1 SLOAD DUP11 AND DUP10 OR SWAP1 SSTORE DUP3 SLOAD SWAP1 SWAP9 AND DUP7 OR PUSH3 0xFFFFFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL DUP6 MUL OR PUSH3 0xFFFFFF PUSH1 0xB8 SHL NOT AND PUSH1 0x1 PUSH1 0xB8 SHL SWAP2 DUP4 SIGNEXTEND SWAP1 SWAP6 AND MUL SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP3 SSTORE DUP8 MLOAD DUP1 DUP8 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP4 DUP9 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP6 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE SWAP4 ADD SWAP4 DUP5 SWAP1 MSTORE DUP3 MLOAD SWAP3 SWAP1 SWAP2 ADD SWAP2 SWAP1 SWAP2 KECCAK256 SWAP1 SWAP2 PUSH2 0x654 SWAP1 PUSH2 0x6AB JUMP JUMPDEST DUP2 SWAP1 PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE2 SWAP1 POP DUP1 ISZERO DUP1 ISZERO PUSH2 0x674 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND SWAP1 SWAP2 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SSTORE PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xD0 SHL SUB NOT AND SWAP1 SSTORE SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x5798 DUP1 PUSH2 0x6B9 DUP4 CODECOPY ADD SWAP1 JUMP INVALID PUSH2 0x160 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP ADDRESS PUSH1 0x60 SHL PUSH1 0x80 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x8903573 PUSH1 0xE4 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 CALLER SWAP2 PUSH4 0x89035730 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0xA0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x56 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x6B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0xA0 DUP2 LT ISZERO PUSH3 0x82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x60 DUP1 DUP7 ADD MLOAD PUSH1 0x80 SWAP1 SWAP7 ADD MLOAD PUSH1 0xE8 SWAP7 DUP8 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE8 SHL SUB NOT AND PUSH2 0x100 MSTORE SWAP2 DUP2 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT SWAP1 DUP2 AND PUSH1 0xE0 MSTORE SWAP3 DUP2 SHL DUP4 AND PUSH1 0xC0 MSTORE SWAP4 SWAP1 SWAP4 SHL AND PUSH1 0xA0 MSTORE PUSH1 0x2 DUP3 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND SWAP1 SWAP3 SHL PUSH2 0x120 MSTORE SWAP2 POP PUSH3 0xF7 SWAP1 DUP3 SWAP1 PUSH3 0x10F DUP2 SHL PUSH3 0x2ADB OR SWAP1 SHR JUMP JUMPDEST PUSH1 0x80 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH2 0x140 MSTORE POP PUSH3 0x17D JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x2 DUP2 SWAP1 SIGNEXTEND PUSH3 0xD89E7 NOT DUP2 PUSH3 0x125 JUMPI INVALID JUMPDEST SDIV MUL SWAP1 POP PUSH1 0x0 DUP4 PUSH1 0x2 DUP2 SWAP1 SIGNEXTEND PUSH3 0xD89E8 DUP2 PUSH3 0x13D JUMPI INVALID JUMPDEST SDIV MUL SWAP1 POP PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND DUP4 DUP4 SUB PUSH1 0x2 SIGNEXTEND DUP2 PUSH3 0x155 JUMPI INVALID JUMPDEST SDIV PUSH1 0x1 ADD SWAP1 POP DUP1 PUSH3 0xFFFFFF AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 AND DUP2 PUSH3 0x173 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH1 0xE8 SHR PUSH2 0x120 MLOAD PUSH1 0xE8 SHR PUSH2 0x140 MLOAD PUSH1 0x80 SHR PUSH2 0x554E PUSH3 0x24A PUSH1 0x0 CODECOPY DUP1 PUSH2 0x1FAB MSTORE DUP1 PUSH2 0x4A4D MSTORE DUP1 PUSH2 0x4A84 MSTORE POP DUP1 PUSH2 0xBD8 MSTORE DUP1 PUSH2 0x2897 MSTORE DUP1 PUSH2 0x4AB8 MSTORE DUP1 PUSH2 0x4AEA MSTORE POP DUP1 PUSH2 0xCC7 MSTORE DUP1 PUSH2 0x1988 MSTORE DUP1 PUSH2 0x19BF MSTORE DUP1 PUSH2 0x28DF MSTORE POP DUP1 PUSH2 0x1185 MSTORE DUP1 PUSH2 0x1A42 MSTORE DUP1 PUSH2 0x1EB1 MSTORE DUP1 PUSH2 0x23E6 MSTORE DUP1 PUSH2 0x28BB MSTORE DUP1 PUSH2 0x3D7C MSTORE POP DUP1 PUSH2 0x8AA MSTORE DUP1 PUSH2 0x12B3 MSTORE DUP1 PUSH2 0x1A11 MSTORE DUP1 PUSH2 0x1E4B MSTORE DUP1 PUSH2 0x2360 MSTORE DUP1 PUSH2 0x3C33 MSTORE POP DUP1 PUSH2 0x2038 MSTORE DUP1 PUSH2 0x221F MSTORE DUP1 PUSH2 0x2873 MSTORE POP DUP1 PUSH2 0x2B52 MSTORE POP PUSH2 0x554E PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x18E JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70CF754A GT PUSH2 0xDE JUMPI DUP1 PUSH4 0xC45A0155 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xDDCA3F43 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xDDCA3F43 EQ PUSH2 0x7D8 JUMPI DUP1 PUSH4 0xF3058399 EQ PUSH2 0x7F8 JUMPI DUP1 PUSH4 0xF30DBA93 EQ PUSH2 0x800 JUMPI DUP1 PUSH4 0xF637731D EQ PUSH2 0x882 JUMPI PUSH2 0x18E JUMP JUMPDEST DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x7A9 JUMPI DUP1 PUSH4 0xD0C93A7C EQ PUSH2 0x7B1 JUMPI DUP1 PUSH4 0xD21220A7 EQ PUSH2 0x7D0 JUMPI PUSH2 0x18E JUMP JUMPDEST DUP1 PUSH4 0x70CF754A EQ PUSH2 0x5A0 JUMPI DUP1 PUSH4 0x8206A4D1 EQ PUSH2 0x5A8 JUMPI DUP1 PUSH4 0x85B66729 EQ PUSH2 0x5D0 JUMPI DUP1 PUSH4 0x883BDBFD EQ PUSH2 0x60D JUMPI DUP1 PUSH4 0xA34123A7 EQ PUSH2 0x714 JUMPI DUP1 PUSH4 0xA38807F2 EQ PUSH2 0x74E JUMPI PUSH2 0x18E JUMP JUMPDEST DUP1 PUSH4 0x3850C7BD GT PUSH2 0x14B JUMPI DUP1 PUSH4 0x490E6CBC GT PUSH2 0x125 JUMPI DUP1 PUSH4 0x490E6CBC EQ PUSH2 0x44C JUMPI DUP1 PUSH4 0x4F1EB3D8 EQ PUSH2 0x4D6 JUMPI DUP1 PUSH4 0x514EA4BF EQ PUSH2 0x527 JUMPI DUP1 PUSH4 0x5339C296 EQ PUSH2 0x580 JUMPI PUSH2 0x18E JUMP JUMPDEST DUP1 PUSH4 0x3850C7BD EQ PUSH2 0x339 JUMPI DUP1 PUSH4 0x3C8A7D8D EQ PUSH2 0x392 JUMPI DUP1 PUSH4 0x46141319 EQ PUSH2 0x432 JUMPI PUSH2 0x18E JUMP JUMPDEST DUP1 PUSH4 0xDFE1681 EQ PUSH2 0x193 JUMPI DUP1 PUSH4 0x128ACB08 EQ PUSH2 0x1B7 JUMPI DUP1 PUSH4 0x1A686502 EQ PUSH2 0x264 JUMPI DUP1 PUSH4 0x1AD8B03B EQ PUSH2 0x288 JUMPI DUP1 PUSH4 0x252C09D7 EQ PUSH2 0x2BF JUMPI DUP1 PUSH4 0x32148F67 EQ PUSH2 0x316 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x19B PUSH2 0x8A8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x24B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x1CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP3 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP3 PUSH1 0x60 DUP4 ADD CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0xA0 DUP2 ADD PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x20D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x21F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x240 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x8CC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x26C PUSH2 0x146B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x290 PUSH2 0x147A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2DC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1494 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP6 AND DUP6 MSTORE PUSH1 0x6 SWAP4 SWAP1 SWAP4 SIGNEXTEND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP4 DUP4 ADD MSTORE ISZERO ISZERO PUSH1 0x60 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 RETURN JUMPDEST PUSH2 0x337 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x32C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xFFFF AND PUSH2 0x14D9 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x341 PUSH2 0x15D3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP9 AND DUP9 MSTORE PUSH1 0x2 SWAP7 SWAP1 SWAP7 SIGNEXTEND PUSH1 0x20 DUP9 ADD MSTORE PUSH2 0xFFFF SWAP5 DUP6 AND DUP8 DUP8 ADD MSTORE SWAP3 DUP5 AND PUSH1 0x60 DUP8 ADD MSTORE SWAP3 AND PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0xFF SWAP1 SWAP2 AND PUSH1 0xA0 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0xC0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xE0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x24B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x3A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP3 PUSH1 0x40 DUP4 ADD CALLDATALOAD SWAP1 SWAP2 SIGNEXTEND SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x60 DUP3 ADD CALLDATALOAD AND SWAP2 DUP2 ADD SWAP1 PUSH1 0xA0 DUP2 ADD PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x3F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x406 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x427 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1623 JUMP JUMPDEST PUSH2 0x43A PUSH2 0x18DF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x337 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x462 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x498 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x4CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x18E5 JUMP JUMPDEST PUSH2 0x290 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x4EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP2 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 SIGNEXTEND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x60 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x80 ADD CALLDATALOAD AND PUSH2 0x1D40 JUMP JUMPDEST PUSH2 0x544 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x53D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1F5A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP7 DUP8 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP6 SWAP1 SWAP6 MSTORE DUP5 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP1 DUP5 AND PUSH1 0x60 DUP5 ADD MSTORE SWAP1 SWAP3 AND PUSH1 0x80 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x43A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x596 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 SIGNEXTEND PUSH2 0x1F97 JUMP JUMPDEST PUSH2 0x26C PUSH2 0x1FA9 JUMP JUMPDEST PUSH2 0x337 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1FCD JUMP JUMPDEST PUSH2 0x290 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x5E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x20 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x40 ADD CALLDATALOAD AND PUSH2 0x21B1 JUMP JUMPDEST PUSH2 0x67B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x623 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x63D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x64F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x670 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x247E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x6BF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x6A7 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x6FE JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x6E6 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x24B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x72A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 SIGNEXTEND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x250B JUMP JUMPDEST PUSH2 0x778 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x764 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP2 PUSH1 0x20 ADD CALLDATALOAD SWAP1 SIGNEXTEND PUSH2 0x2682 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x6 SWAP5 SWAP1 SWAP5 SIGNEXTEND DUP5 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH4 0xFFFFFFFF AND DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST PUSH2 0x19B PUSH2 0x2871 JUMP JUMPDEST PUSH2 0x7B9 PUSH2 0x2895 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 SWAP3 SWAP1 SWAP3 SIGNEXTEND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x19B PUSH2 0x28B9 JUMP JUMPDEST PUSH2 0x7E0 PUSH2 0x28DD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH3 0xFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x43A PUSH2 0x2901 JUMP JUMPDEST PUSH2 0x820 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x816 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x2 SIGNEXTEND PUSH2 0x2907 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP10 AND DUP10 MSTORE PUSH1 0xF SWAP8 SWAP1 SWAP8 SIGNEXTEND PUSH1 0x20 DUP10 ADD MSTORE DUP8 DUP8 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0x60 DUP8 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x6 SWAP2 SWAP1 SWAP2 SIGNEXTEND PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0xA0 DUP6 ADD MSTORE PUSH4 0xFFFFFFFF AND PUSH1 0xC0 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0xE0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH2 0x100 ADD SWAP1 RETURN JUMPDEST PUSH2 0x337 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x898 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2971 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x8D7 PUSH2 0x2B47 JUMP JUMPDEST DUP6 PUSH2 0x90E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4153 PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xE0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0xA0 SHL DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0xFFFF PUSH1 0x1 PUSH1 0xB8 SHL DUP3 DIV DUP2 AND SWAP4 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0xC8 SHL DUP2 DIV DUP4 AND PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0xD8 SHL DUP2 DIV SWAP1 SWAP3 AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xFF PUSH1 0x1 PUSH1 0xE8 SHL DUP4 DIV DUP2 AND PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 SWAP3 DIV SWAP1 SWAP2 AND ISZERO ISZERO PUSH1 0xC0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x9C7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4C4F4B PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP8 PUSH2 0xA12 JUMPI DUP1 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT DUP1 ISZERO PUSH2 0xA0D JUMPI POP PUSH20 0xFFFD8963EFD1FC6A506488495D951D5263988D26 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND LT JUMPDEST PUSH2 0xA44 JUMP JUMPDEST DUP1 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT DUP1 ISZERO PUSH2 0xA44 JUMPI POP PUSH5 0x1000276A3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND GT JUMPDEST PUSH2 0xA7B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x14D413 PUSH1 0xEA SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND DUP2 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0xC0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 DUP11 PUSH2 0xAAA JUMPI PUSH1 0x4 DUP5 PUSH1 0xA0 ADD MLOAD PUSH1 0xFF AND SWAP1 SHR PUSH2 0xABD JUMP JUMPDEST PUSH1 0x10 DUP5 PUSH1 0xA0 ADD MLOAD PUSH1 0xFF AND DUP2 PUSH2 0xABB JUMPI INVALID JUMPDEST MOD JUMPDEST PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD PUSH2 0xADE PUSH2 0x2B7E JUMP JUMPDEST PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x6 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE POP SWAP1 POP PUSH1 0x0 DUP1 DUP10 SGT SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0xE0 ADD PUSH1 0x40 MSTORE DUP1 DUP12 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x20 ADD MLOAD PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP13 PUSH2 0xB5A JUMPI PUSH1 0x2 SLOAD PUSH2 0xB5E JUMP JUMPDEST PUSH1 0x1 SLOAD JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE POP SWAP1 POP JUMPDEST DUP1 MLOAD ISZERO DUP1 ISZERO SWAP1 PUSH2 0xBAD JUMPI POP DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0xF77 JUMPI PUSH2 0xBBA PUSH2 0x54B5 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0xBFD SWAP1 PUSH1 0x6 SWAP1 PUSH32 0x0 DUP16 PUSH2 0x2B82 JUMP JUMPDEST ISZERO ISZERO PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x20 DUP4 ADD DUP2 SWAP1 MSTORE PUSH3 0xD89E7 NOT SWAP2 SIGNEXTEND SLT ISZERO PUSH2 0xC2E JUMPI PUSH3 0xD89E7 NOT PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0xC4D JUMP JUMPDEST PUSH1 0x20 DUP2 ADD MLOAD PUSH3 0xD89E8 PUSH1 0x2 SWAP2 SWAP1 SWAP2 SIGNEXTEND SGT ISZERO PUSH2 0xC4D JUMPI PUSH3 0xD89E8 PUSH1 0x20 DUP3 ADD MSTORE JUMPDEST PUSH2 0xC5A DUP2 PUSH1 0x20 ADD MLOAD PUSH2 0x2CC4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0xCEB SWAP1 DUP14 PUSH2 0xC94 JUMPI DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x60 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0xCAE JUMP JUMPDEST DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x60 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT JUMPDEST PUSH2 0xCBC JUMPI DUP3 PUSH1 0x60 ADD MLOAD PUSH2 0xCBE JUMP JUMPDEST DUP12 JUMPDEST PUSH1 0xC0 DUP6 ADD MLOAD DUP6 MLOAD PUSH32 0x0 PUSH2 0x2FF5 JUMP JUMPDEST PUSH1 0xC0 DUP6 ADD MSTORE PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x40 DUP4 ADD MSTORE DUP3 ISZERO PUSH2 0xD4D JUMPI PUSH2 0xD21 DUP2 PUSH1 0xC0 ADD MLOAD DUP3 PUSH1 0x80 ADD MLOAD ADD PUSH2 0x31E7 JUMP JUMPDEST DUP3 MLOAD SUB DUP3 MSTORE PUSH1 0xA0 DUP2 ADD MLOAD PUSH2 0xD43 SWAP1 PUSH2 0xD38 SWAP1 PUSH2 0x31E7 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 PUSH2 0x31FD JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0xD88 JUMP JUMPDEST PUSH2 0xD5A DUP2 PUSH1 0xA0 ADD MLOAD PUSH2 0x31E7 JUMP JUMPDEST DUP3 MLOAD ADD DUP3 MSTORE PUSH1 0xC0 DUP2 ADD MLOAD PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0xD82 SWAP2 PUSH2 0xD77 SWAP2 ADD PUSH2 0x31E7 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 PUSH2 0x3219 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE JUMPDEST DUP4 MLOAD PUSH1 0xFF AND ISZERO PUSH2 0xDCE JUMPI PUSH1 0x0 DUP5 PUSH1 0x0 ADD MLOAD PUSH1 0xFF AND DUP3 PUSH1 0xC0 ADD MLOAD DUP2 PUSH2 0xDA8 JUMPI INVALID JUMPDEST PUSH1 0xC0 DUP5 ADD DUP1 MLOAD SWAP3 SWAP1 SWAP2 DIV SWAP2 DUP3 SWAP1 SUB SWAP1 MSTORE PUSH1 0xA0 DUP5 ADD DUP1 MLOAD SWAP1 SWAP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP1 MSTORE POP JUMPDEST PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND ISZERO PUSH2 0xE0D JUMPI PUSH2 0xE01 DUP2 PUSH1 0xC0 ADD MLOAD PUSH1 0x1 PUSH1 0x80 SHL DUP5 PUSH1 0xC0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x322F JUMP JUMPDEST PUSH1 0x80 DUP4 ADD DUP1 MLOAD SWAP1 SWAP2 ADD SWAP1 MSTORE JUMPDEST DUP1 PUSH1 0x60 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0xF36 JUMPI DUP1 PUSH1 0x40 ADD MLOAD ISZERO PUSH2 0xF0D JUMPI DUP4 PUSH1 0xA0 ADD MLOAD PUSH2 0xE97 JUMPI PUSH2 0xE75 DUP5 PUSH1 0x40 ADD MLOAD PUSH1 0x0 DUP8 PUSH1 0x20 ADD MLOAD DUP9 PUSH1 0x40 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP11 PUSH1 0x60 ADD MLOAD PUSH1 0x8 PUSH2 0x32DF SWAP1 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0xA0 DUP6 ADD MSTORE JUMPDEST PUSH1 0x0 PUSH2 0xEE3 DUP3 PUSH1 0x20 ADD MLOAD DUP15 PUSH2 0xEAE JUMPI PUSH1 0x1 SLOAD PUSH2 0xEB4 JUMP JUMPDEST DUP5 PUSH1 0x80 ADD MLOAD JUMPDEST DUP16 PUSH2 0xEC3 JUMPI DUP6 PUSH1 0x80 ADD MLOAD PUSH2 0xEC7 JUMP JUMPDEST PUSH1 0x2 SLOAD JUMPDEST PUSH1 0x80 DUP10 ADD MLOAD PUSH1 0x60 DUP11 ADD MLOAD PUSH1 0x40 DUP12 ADD MLOAD PUSH1 0x5 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3471 JUMP JUMPDEST SWAP1 POP DUP13 ISZERO PUSH2 0xEEF JUMPI PUSH1 0x0 SUB JUMPDEST PUSH2 0xEFD DUP4 PUSH1 0xC0 ADD MLOAD DUP3 PUSH2 0x352B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0xC0 DUP5 ADD MSTORE POP JUMPDEST DUP12 PUSH2 0xF1C JUMPI DUP1 PUSH1 0x20 ADD MLOAD PUSH2 0xF25 JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x20 ADD MLOAD SUB JUMPDEST PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0xF71 JUMP JUMPDEST DUP1 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xF71 JUMPI PUSH2 0xF64 DUP3 PUSH1 0x40 ADD MLOAD PUSH2 0x35E1 JUMP JUMPDEST PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x60 DUP4 ADD MSTORE JUMPDEST POP PUSH2 0xB87 JUMP JUMPDEST DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x2 SIGNEXTEND DUP2 PUSH1 0x60 ADD MLOAD PUSH1 0x2 SIGNEXTEND EQ PUSH2 0x1045 JUMPI PUSH1 0x0 DUP1 PUSH2 0xFC5 DUP7 PUSH1 0x40 ADD MLOAD DUP7 PUSH1 0x40 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP11 PUSH1 0x60 ADD MLOAD DUP12 PUSH1 0x80 ADD MLOAD PUSH1 0x8 PUSH2 0x38FC SWAP1 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MLOAD PUSH1 0x60 DUP7 ADD MLOAD PUSH1 0x0 DUP1 SLOAD PUSH2 0xFFFF PUSH1 0xC8 SHL NOT AND PUSH1 0x1 PUSH1 0xC8 SHL PUSH2 0xFFFF SWAP6 DUP7 AND MUL OR PUSH2 0xFFFF PUSH1 0xB8 SHL NOT AND PUSH1 0x1 PUSH1 0xB8 SHL SWAP6 SWAP1 SWAP5 AND SWAP5 SWAP1 SWAP5 MUL SWAP3 SWAP1 SWAP3 OR PUSH3 0xFFFFFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL PUSH3 0xFFFFFF PUSH1 0x2 SWAP5 SWAP1 SWAP5 SIGNEXTEND SWAP4 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 MUL SWAP2 SWAP1 SWAP2 OR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND OR SWAP1 SSTORE POP PUSH2 0x106A SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD MLOAD PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST DUP1 PUSH1 0xC0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND EQ PUSH2 0x10B0 JUMPI PUSH1 0xC0 DUP2 ADD MLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST DUP11 ISZERO PUSH2 0x1100 JUMPI PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x1 SSTORE PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND ISZERO PUSH2 0x10FB JUMPI PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP2 DUP3 AND SWAP1 SWAP4 ADD AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST PUSH2 0x1146 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x2 SSTORE PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND ISZERO PUSH2 0x1146 JUMPI PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP3 AND PUSH1 0x1 PUSH1 0x80 SHL SWAP3 DUP4 SWAP1 DIV DUP3 AND SWAP1 SWAP5 ADD AND MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST DUP2 ISZERO ISZERO DUP12 ISZERO ISZERO EQ PUSH2 0x115F JUMPI PUSH1 0x20 DUP2 ADD MLOAD DUP2 MLOAD DUP12 SUB PUSH2 0x116C JUMP JUMPDEST DUP1 PUSH1 0x0 ADD MLOAD DUP11 SUB DUP2 PUSH1 0x20 ADD MLOAD JUMPDEST SWAP1 SWAP7 POP SWAP5 POP DUP11 ISZERO PUSH2 0x12A5 JUMPI PUSH1 0x0 DUP6 SLT ISZERO PUSH2 0x11AE JUMPI PUSH2 0x11AE PUSH32 0x0 DUP14 DUP8 PUSH1 0x0 SUB PUSH2 0x3A97 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x11B8 PUSH2 0x3BE5 JUMP JUMPDEST SWAP1 POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFA461E33 DUP9 DUP9 DUP13 DUP13 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP6 POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x123C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1250 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x125C PUSH2 0x3BE5 JUMP JUMPDEST PUSH2 0x1266 DUP3 DUP10 PUSH2 0x3D1E JUMP JUMPDEST GT ISZERO PUSH2 0x129F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x494941 PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH2 0x13CF JUMP JUMPDEST PUSH1 0x0 DUP7 SLT ISZERO PUSH2 0x12DC JUMPI PUSH2 0x12DC PUSH32 0x0 DUP14 DUP9 PUSH1 0x0 SUB PUSH2 0x3A97 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12E6 PUSH2 0x3D2E JUMP JUMPDEST SWAP1 POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFA461E33 DUP9 DUP9 DUP13 DUP13 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP6 POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x136A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x137E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x138A PUSH2 0x3D2E JUMP JUMPDEST PUSH2 0x1394 DUP3 DUP9 PUSH2 0x3D1E JUMP JUMPDEST GT ISZERO PUSH2 0x13CD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x494941 PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP JUMPDEST PUSH1 0x40 DUP1 DUP3 ADD MLOAD PUSH1 0xC0 DUP4 ADD MLOAD PUSH1 0x60 DUP1 DUP6 ADD MLOAD DUP5 MLOAD DUP12 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP12 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND DUP2 DUP8 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP4 AND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x2 SIGNEXTEND PUSH1 0x80 DUP3 ADD MSTORE SWAP2 MLOAD SWAP1 DUP15 AND SWAP2 CALLER SWAP2 PUSH32 0xC42079F94A6350D7E6235F29174924F928CC2AC818EB64FED8004E115FBCCA67 SWAP2 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 LOG3 POP POP PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND PUSH1 0x1 PUSH1 0xF0 SHL OR SWAP1 SSTORE POP SWAP2 SWAP9 SWAP1 SWAP8 POP SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP3 AND SWAP2 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV AND DUP3 JUMP JUMPDEST PUSH1 0x8 DUP2 PUSH2 0xFFFF DUP2 LT PUSH2 0x14A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST ADD SLOAD PUSH4 0xFFFFFFFF DUP2 AND SWAP2 POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 DIV PUSH1 0x6 SIGNEXTEND SWAP1 PUSH1 0x1 PUSH1 0x58 SHL DUP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 DIV PUSH1 0xFF AND DUP5 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x151D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4C4F4B PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND SWAP1 SSTORE PUSH2 0x1532 PUSH2 0x2B47 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0xD8 SHL SWAP1 DIV PUSH2 0xFFFF AND SWAP1 PUSH2 0x154E PUSH1 0x8 DUP4 DUP6 PUSH2 0x3DC6 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFFFF DUP1 DUP5 AND PUSH1 0x1 PUSH1 0xD8 SHL DUP2 MUL PUSH2 0xFFFF PUSH1 0xD8 SHL NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP3 SSTORE SWAP2 SWAP3 POP DUP4 AND EQ PUSH2 0x15BB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH2 0xFFFF DUP1 DUP6 AND DUP3 MSTORE DUP4 AND PUSH1 0x20 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0xAC49E518F90A358F652E4400164F05A5D8F7E35E7747279BC3A93DBF584E125A SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 JUMPDEST POP POP PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND PUSH1 0x1 PUSH1 0xF0 SHL OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP1 PUSH1 0x1 PUSH1 0xA0 SHL DUP2 DIV PUSH1 0x2 SIGNEXTEND SWAP1 PUSH2 0xFFFF PUSH1 0x1 PUSH1 0xB8 SHL DUP3 DIV DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0xC8 SHL DUP2 DIV DUP3 AND SWAP2 PUSH1 0x1 PUSH1 0xD8 SHL DUP3 DIV AND SWAP1 PUSH1 0xFF PUSH1 0x1 PUSH1 0xE8 SHL DUP3 DIV DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 DIV AND DUP8 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x166A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4C4F4B PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND SWAP1 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP6 AND PUSH2 0x168A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x16D8 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP12 PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP11 PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x16CE DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x3E69 JUMP JUMPDEST PUSH1 0xF SIGNEXTEND SWAP1 MSTORE PUSH2 0x3E7A JUMP JUMPDEST SWAP3 POP SWAP3 POP POP DUP2 SWAP4 POP DUP1 SWAP3 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP7 GT ISZERO PUSH2 0x16FA JUMPI PUSH2 0x16F7 PUSH2 0x3BE5 JUMP JUMPDEST SWAP2 POP JUMPDEST DUP5 ISZERO PUSH2 0x170B JUMPI PUSH2 0x1708 PUSH2 0x3D2E JUMP JUMPDEST SWAP1 POP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD3487997 DUP8 DUP8 DUP12 DUP12 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP6 POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x178D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x17A1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 DUP7 GT ISZERO PUSH2 0x17F8 JUMPI PUSH2 0x17B6 PUSH2 0x3BE5 JUMP JUMPDEST PUSH2 0x17C0 DUP4 DUP9 PUSH2 0x3D1E JUMP JUMPDEST GT ISZERO PUSH2 0x17F8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4D3 PUSH1 0xF4 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP5 ISZERO PUSH2 0x1848 JUMPI PUSH2 0x1806 PUSH2 0x3D2E JUMP JUMPDEST PUSH2 0x1810 DUP3 DUP8 PUSH2 0x3D1E JUMP JUMPDEST GT ISZERO PUSH2 0x1848 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4D31 PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP10 PUSH1 0x2 SIGNEXTEND DUP12 PUSH1 0x2 SIGNEXTEND DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x7A53080BA414158BE7EC69B987B5FB7D07DEE101FE85488F0853AE16239D0BDE CALLER DUP14 DUP12 DUP12 PUSH1 0x40 MLOAD DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND PUSH1 0x1 PUSH1 0xF0 SHL OR SWAP1 SSTORE POP SWAP2 SWAP9 SWAP1 SWAP8 POP SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1929 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4C4F4B PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND SWAP1 SSTORE PUSH2 0x193E PUSH2 0x2B47 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP1 PUSH2 0x1980 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0xFA SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x19B5 DUP7 PUSH32 0x0 PUSH3 0xFFFFFF AND PUSH3 0xF4240 PUSH2 0x40BA JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x19EC DUP7 PUSH32 0x0 PUSH3 0xFFFFFF AND PUSH3 0xF4240 PUSH2 0x40BA JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x19F8 PUSH2 0x3BE5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1A04 PUSH2 0x3D2E JUMP JUMPDEST SWAP1 POP DUP9 ISZERO PUSH2 0x1A37 JUMPI PUSH2 0x1A37 PUSH32 0x0 DUP12 DUP12 PUSH2 0x3A97 JUMP JUMPDEST DUP8 ISZERO PUSH2 0x1A68 JUMPI PUSH2 0x1A68 PUSH32 0x0 DUP12 DUP11 PUSH2 0x3A97 JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE9CBAFB0 DUP6 DUP6 DUP11 DUP11 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP6 POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1AEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1AFE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 PUSH2 0x1B0C PUSH2 0x3BE5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1B18 PUSH2 0x3D2E JUMP JUMPDEST SWAP1 POP DUP2 PUSH2 0x1B25 DUP6 DUP9 PUSH2 0x3D1E JUMP JUMPDEST GT ISZERO PUSH2 0x1B5D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x463 PUSH1 0xF4 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x1B68 DUP5 DUP8 PUSH2 0x3D1E JUMP JUMPDEST GT ISZERO PUSH2 0x1BA0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4631 PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP4 DUP3 SUB DUP4 DUP3 SUB DUP2 ISZERO PUSH2 0x1C2F JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0xE8 SHL SWAP1 DIV PUSH1 0xF AND SWAP1 DUP2 ISZERO PUSH2 0x1BD3 JUMPI DUP2 PUSH1 0xFF AND DUP5 DUP2 PUSH2 0x1BCD JUMPI INVALID JUMPDEST DIV PUSH2 0x1BD6 JUMP JUMPDEST PUSH1 0x0 JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND ISZERO PUSH2 0x1C09 JUMPI PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP3 AND DUP5 ADD AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT SWAP1 SWAP2 AND OR SWAP1 SSTORE JUMPDEST PUSH2 0x1C23 DUP2 DUP6 SUB PUSH1 0x1 PUSH1 0x80 SHL DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x322F JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE POP POP JUMPDEST DUP1 ISZERO PUSH2 0x1CBA JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0xE8 SHL SWAP1 DIV PUSH1 0x4 SHR PUSH1 0xF AND SWAP1 DUP2 ISZERO PUSH2 0x1C5F JUMPI DUP2 PUSH1 0xFF AND DUP4 DUP2 PUSH2 0x1C59 JUMPI INVALID JUMPDEST DIV PUSH2 0x1C62 JUMP JUMPDEST PUSH1 0x0 JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND ISZERO PUSH2 0x1C94 JUMPI PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP1 DUP4 DIV DUP3 AND DUP6 ADD DUP3 AND MUL SWAP2 AND OR SWAP1 SSTORE JUMPDEST PUSH2 0x1CAE DUP2 DUP5 SUB PUSH1 0x1 PUSH1 0x80 SHL DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x322F JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE POP POP JUMPDEST DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xBDBDB71D7860376BA52B25A5028BEEA23581364A40522F6BCFB86BB1F2DCA633 DUP16 DUP16 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND PUSH1 0x1 PUSH1 0xF0 SHL OR SWAP1 SSTORE POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1D87 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4C4F4B PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND DUP2 SSTORE PUSH2 0x1DA1 PUSH1 0x7 CALLER DUP10 DUP10 PUSH2 0x40F4 JUMP JUMPDEST PUSH1 0x3 DUP2 ADD SLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 DUP2 AND SWAP1 DUP7 AND GT PUSH2 0x1DC2 JUMPI DUP5 PUSH2 0x1DD1 JUMP JUMPDEST PUSH1 0x3 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND JUMPDEST PUSH1 0x3 DUP3 ADD SLOAD SWAP1 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP2 DIV DUP2 AND SWAP1 DUP6 AND GT PUSH2 0x1DF9 JUMPI DUP4 PUSH2 0x1E0F JUMP JUMPDEST PUSH1 0x3 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND JUMPDEST SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP4 AND ISZERO PUSH2 0x1E74 JUMPI PUSH1 0x3 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP2 DUP3 AND DUP7 SWAP1 SUB DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH2 0x1E74 SWAP1 PUSH32 0x0 SWAP1 DUP11 SWAP1 DUP7 AND PUSH2 0x3A97 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 AND ISZERO PUSH2 0x1EDA JUMPI PUSH1 0x3 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP1 DUP4 DIV DUP3 AND DUP7 SWAP1 SUB DUP3 AND MUL SWAP2 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE PUSH2 0x1EDA SWAP1 PUSH32 0x0 SWAP1 DUP11 SWAP1 DUP6 AND PUSH2 0x3A97 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP7 AND PUSH1 0x20 DUP4 ADD MSTORE DUP5 AND DUP2 DUP4 ADD MSTORE SWAP1 MLOAD PUSH1 0x2 DUP9 DUP2 SIGNEXTEND SWAP3 SWAP1 DUP11 SWAP1 SIGNEXTEND SWAP2 CALLER SWAP2 PUSH32 0x70935338E69775456A85DDEF226C395FB668B63FA0115F5F20610B388E6CA9C0 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG4 POP PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND PUSH1 0x1 PUSH1 0xF0 SHL OR SWAP1 SSTORE SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 SWAP1 SWAP4 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP3 DUP4 AND SWAP4 SWAP2 SWAP3 DUP2 DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV AND DUP6 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2011 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4C4F4B PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x8DA5CB5B PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP2 PUSH4 0x8DA5CB5B SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x207E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2092 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x20A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x20BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0xFF DUP3 AND ISZERO DUP1 PUSH2 0x20E1 JUMPI POP PUSH1 0x4 DUP3 PUSH1 0xFF AND LT ISZERO DUP1 ISZERO PUSH2 0x20E1 JUMPI POP PUSH1 0xA DUP3 PUSH1 0xFF AND GT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x210B JUMPI POP PUSH1 0xFF DUP2 AND ISZERO DUP1 PUSH2 0x210B JUMPI POP PUSH1 0x4 DUP2 PUSH1 0xFF AND LT ISZERO DUP1 ISZERO PUSH2 0x210B JUMPI POP PUSH1 0xA DUP2 PUSH1 0xFF AND GT ISZERO JUMPDEST PUSH2 0x2114 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF0 PUSH1 0x4 DUP5 SWAP1 SHL AND DUP5 ADD PUSH1 0xFF SWAP1 DUP2 AND PUSH1 0x1 PUSH1 0xE8 SHL SWAP1 DUP2 MUL PUSH1 0xFF PUSH1 0xE8 SHL NOT DUP5 AND OR SWAP1 SWAP4 SSTORE SWAP2 SWAP1 DIV AND PUSH32 0x973D8D92BB299F4AF6CE49B52A8ADB85AE46B9F214C4C4FC06AC77401237B133 PUSH1 0x10 DUP3 PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP4 SWAP1 SWAP3 MOD DUP4 AND DUP3 MSTORE PUSH1 0xF PUSH1 0x4 DUP7 SWAP1 SHR AND PUSH1 0x20 DUP4 ADD MSTORE DUP7 DUP4 AND DUP3 DUP3 ADD MSTORE SWAP2 DUP6 AND PUSH1 0x60 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG1 POP POP PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND PUSH1 0x1 PUSH1 0xF0 SHL OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x21F8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4C4F4B PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x8DA5CB5B PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP2 PUSH4 0x8DA5CB5B SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2265 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2279 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x228F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x22A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 DUP2 AND SWAP1 DUP6 AND GT PUSH2 0x22C1 JUMPI DUP4 PUSH2 0x22CE JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND JUMPDEST PUSH1 0x3 SLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP2 DIV DUP2 AND SWAP1 DUP5 AND GT PUSH2 0x22F4 JUMPI DUP3 PUSH2 0x2308 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 AND ISZERO PUSH2 0x2389 JUMPI PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP4 DUP2 AND SWAP2 AND EQ ISZERO PUSH2 0x2337 JUMPI PUSH1 0x0 NOT SWAP1 SWAP2 ADD SWAP1 JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP2 DUP3 AND DUP6 SWAP1 SUB DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH2 0x2389 SWAP1 PUSH32 0x0 SWAP1 DUP8 SWAP1 DUP6 AND PUSH2 0x3A97 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND ISZERO PUSH2 0x240F JUMPI PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 DUP2 AND PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP3 DIV AND EQ ISZERO PUSH2 0x23BA JUMPI PUSH1 0x0 NOT ADD JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP1 DUP4 DIV DUP3 AND DUP6 SWAP1 SUB DUP3 AND MUL SWAP2 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE PUSH2 0x240F SWAP1 PUSH32 0x0 SWAP1 DUP8 SWAP1 DUP5 AND PUSH2 0x3A97 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP6 AND DUP3 MSTORE DUP4 AND PUSH1 0x20 DUP3 ADD MSTORE DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP3 CALLER SWAP3 PUSH32 0x596B573906218D3411850B26A6B437D6C4522FDB43D2D2386263F86D50B8B151 SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND PUSH1 0x1 PUSH1 0xF0 SHL OR SWAP1 SSTORE SWAP1 SWAP5 SWAP1 SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH2 0x2489 PUSH2 0x2B47 JUMP JUMPDEST PUSH2 0x2500 PUSH2 0x2494 PUSH2 0x2B7E JUMP JUMPDEST DUP6 DUP6 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD DUP3 SWAP1 MSTORE POP SLOAD PUSH1 0x4 SLOAD PUSH1 0x8 SWAP7 SWAP6 SWAP5 POP PUSH1 0x1 PUSH1 0xA0 SHL DUP3 DIV PUSH1 0x2 SIGNEXTEND SWAP4 POP PUSH2 0xFFFF PUSH1 0x1 PUSH1 0xB8 SHL DUP4 DIV DUP2 AND SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP2 AND SWAP2 PUSH1 0x1 PUSH1 0xC8 SHL SWAP1 DIV AND PUSH2 0x4158 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2552 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4C4F4B PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND DUP2 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE CALLER DUP2 MSTORE PUSH1 0x2 DUP9 DUP2 SIGNEXTEND PUSH1 0x20 DUP4 ADD MSTORE DUP8 SWAP1 SIGNEXTEND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 SWAP1 DUP2 SWAP1 PUSH2 0x25AB SWAP1 PUSH1 0x60 DUP2 ADD PUSH2 0x259E PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP11 AND PUSH2 0x3E69 JUMP JUMPDEST PUSH1 0x0 SUB PUSH1 0xF SIGNEXTEND SWAP1 MSTORE PUSH2 0x3E7A JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP DUP2 PUSH1 0x0 SUB SWAP5 POP DUP1 PUSH1 0x0 SUB SWAP4 POP PUSH1 0x0 DUP6 GT DUP1 PUSH2 0x25CC JUMPI POP PUSH1 0x0 DUP5 GT JUMPDEST ISZERO PUSH2 0x260B JUMPI PUSH1 0x3 DUP4 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP3 AND DUP1 DUP10 ADD DUP3 AND PUSH1 0x1 PUSH1 0x80 SHL SWAP4 DUP5 SWAP1 DIV DUP4 AND DUP10 ADD SWAP1 SWAP3 AND SWAP1 SWAP3 MUL SWAP1 SWAP2 OR PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND OR SWAP1 SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP9 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP8 SWAP1 MSTORE DUP1 DUP3 ADD DUP7 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x2 DUP10 DUP2 SIGNEXTEND SWAP3 SWAP1 DUP12 SWAP1 SIGNEXTEND SWAP2 CALLER SWAP2 PUSH32 0xC396CD989A39F4459B5FA1AED6A9A8DCDBC45908ACFD67E028CD568DA98982C SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG4 POP POP PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND PUSH1 0x1 PUSH1 0xF0 SHL OR SWAP1 SSTORE POP SWAP1 SWAP5 SWAP1 SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x268F PUSH2 0x2B47 JUMP JUMPDEST PUSH2 0x2699 DUP6 DUP6 PUSH2 0x42B2 JUMP JUMPDEST PUSH1 0x2 DUP6 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP8 DUP5 SIGNEXTEND SWAP1 SWAP4 SIGNEXTEND DUP3 MSTORE DUP2 KECCAK256 PUSH1 0x3 DUP4 ADD SLOAD PUSH1 0x6 DUP2 SWAP1 SIGNEXTEND SWAP4 PUSH1 0x1 PUSH1 0x38 SHL DUP3 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 DUP5 SWAP3 PUSH1 0x1 PUSH1 0xD8 SHL DUP2 DIV PUSH4 0xFFFFFFFF AND SWAP3 DUP5 SWAP3 SWAP1 SWAP2 PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 DIV PUSH1 0xFF AND DUP1 PUSH2 0x26FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 DUP3 ADD SLOAD PUSH1 0x6 DUP2 SWAP1 SIGNEXTEND SWAP9 POP PUSH1 0x1 PUSH1 0x38 SHL DUP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP7 POP PUSH1 0x1 PUSH1 0xD8 SHL DUP2 DIV PUSH4 0xFFFFFFFF AND SWAP5 POP PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 DIV PUSH1 0xFF AND DUP1 PUSH2 0x273E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0xE0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0xA0 SHL DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x20 DUP5 ADD DUP2 SWAP1 MSTORE PUSH2 0xFFFF PUSH1 0x1 PUSH1 0xB8 SHL DUP5 DIV DUP2 AND SWAP6 DUP6 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0x1 PUSH1 0xC8 SHL DUP4 DIV DUP6 AND PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0xD8 SHL DUP4 DIV SWAP1 SWAP5 AND PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xFF PUSH1 0x1 PUSH1 0xE8 SHL DUP4 DIV DUP2 AND PUSH1 0xA0 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 SWAP3 DIV SWAP1 SWAP2 AND ISZERO ISZERO PUSH1 0xC0 DUP4 ADD MSTORE SWAP1 SWAP4 POP DUP15 DUP2 SIGNEXTEND SWAP2 SWAP1 SIGNEXTEND SLT ISZERO SWAP1 POP PUSH2 0x27E7 JUMPI POP SWAP4 SWAP1 SWAP5 SUB SWAP7 POP SWAP1 SUB SWAP4 POP SWAP1 SUB SWAP1 POP PUSH2 0x286A JUMP JUMPDEST DUP11 PUSH1 0x2 SIGNEXTEND DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x2 SIGNEXTEND SLT ISZERO PUSH2 0x285B JUMPI PUSH1 0x0 PUSH2 0x2803 PUSH2 0x2B7E JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x4 SLOAD PUSH1 0x60 DUP7 ADD MLOAD SWAP4 SWAP5 POP PUSH1 0x0 SWAP4 DUP5 SWAP4 PUSH2 0x2839 SWAP4 PUSH1 0x8 SWAP4 DUP9 SWAP4 DUP8 SWAP4 SWAP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP1 PUSH2 0x32DF JUMP JUMPDEST SWAP11 SWAP1 SUB SWAP9 SWAP1 SWAP9 SUB SWAP12 POP POP SWAP5 SWAP1 SWAP7 SUB SWAP3 SWAP1 SWAP3 SUB SWAP7 POP SWAP1 SWAP2 SUB SUB SWAP3 POP PUSH2 0x286A SWAP2 POP POP JUMP JUMPDEST POP SWAP5 SWAP1 SWAP4 SUB SWAP7 POP SUB SWAP4 POP SWAP1 SUB SWAP1 POP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 SWAP1 SWAP4 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP4 AND SWAP4 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP4 DIV PUSH1 0xF SIGNEXTEND SWAP3 SWAP1 PUSH1 0x6 DUP2 SWAP1 SIGNEXTEND SWAP1 PUSH1 0x1 PUSH1 0x38 SHL DUP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH1 0x1 PUSH1 0xD8 SHL DUP2 DIV PUSH4 0xFFFFFFFF AND SWAP1 PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 DIV PUSH1 0xFF AND DUP9 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x29B4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4149 PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x29BF DUP3 PUSH2 0x35E1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x29D7 PUSH2 0x29CF PUSH2 0x2B7E JUMP JUMPDEST PUSH1 0x8 SWAP1 PUSH2 0x437B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xE0 DUP2 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP1 DUP3 MSTORE PUSH1 0x2 DUP9 DUP2 SIGNEXTEND PUSH1 0x20 DUP1 DUP6 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 DUP6 DUP8 ADD DUP2 SWAP1 MSTORE PUSH2 0xFFFF DUP10 DUP2 AND PUSH1 0x60 DUP9 ADD DUP2 SWAP1 MSTORE SWAP1 DUP10 AND PUSH1 0x80 DUP9 ADD DUP2 SWAP1 MSTORE PUSH1 0xA0 DUP9 ADD DUP4 SWAP1 MSTORE PUSH1 0x1 PUSH1 0xC0 SWAP1 SWAP9 ADD SWAP8 SWAP1 SWAP8 MSTORE DUP2 SLOAD PUSH1 0x1 PUSH1 0xF0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP2 AND DUP8 OR PUSH3 0xFFFFFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL PUSH3 0xFFFFFF SWAP8 DUP8 SWAP1 SIGNEXTEND SWAP8 SWAP1 SWAP8 AND SWAP7 SWAP1 SWAP7 MUL SWAP6 SWAP1 SWAP6 OR PUSH4 0xFFFFFFFF PUSH1 0xB8 SHL NOT AND PUSH1 0x1 PUSH1 0xC8 SHL SWAP1 SWAP2 MUL OR PUSH2 0xFFFF PUSH1 0xD8 SHL NOT AND PUSH1 0x1 PUSH1 0xD8 SHL SWAP1 SWAP7 MUL SWAP6 SWAP1 SWAP6 OR PUSH2 0xFFFF PUSH1 0xE8 SHL NOT AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP4 SSTORE DUP4 MLOAD SWAP2 DUP3 MSTORE DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 MLOAD SWAP4 SWAP6 POP SWAP2 SWAP4 POP PUSH32 0x98636036CB66A9C19A37435EFC1E90142190214E8ABEB821BDBA3F2990DD4C95 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x2 DUP2 SWAP1 SIGNEXTEND PUSH3 0xD89E7 NOT DUP2 PUSH2 0x2AF0 JUMPI INVALID JUMPDEST SDIV MUL SWAP1 POP PUSH1 0x0 DUP4 PUSH1 0x2 DUP2 SWAP1 SIGNEXTEND PUSH3 0xD89E8 DUP2 PUSH2 0x2B07 JUMPI INVALID JUMPDEST SDIV MUL SWAP1 POP PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND DUP4 DUP4 SUB PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x2B1E JUMPI INVALID JUMPDEST SDIV PUSH1 0x1 ADD SWAP1 POP DUP1 PUSH3 0xFFFFFF AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 AND DUP2 PUSH2 0x2B3B JUMPI INVALID JUMPDEST DIV SWAP4 POP POP POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x2B7C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST JUMP JUMPDEST TIMESTAMP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND DUP7 PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x2B96 JUMPI INVALID JUMPDEST SDIV SWAP1 POP PUSH1 0x0 DUP7 PUSH1 0x2 SIGNEXTEND SLT DUP1 ISZERO PUSH2 0x2BBD JUMPI POP DUP5 PUSH1 0x2 SIGNEXTEND DUP7 PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x2BB6 JUMPI INVALID JUMPDEST SMOD PUSH1 0x2 SIGNEXTEND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x2BC7 JUMPI PUSH1 0x0 NOT ADD JUMPDEST DUP4 ISZERO PUSH2 0x2C3C JUMPI PUSH1 0x0 DUP1 PUSH2 0x2BD9 DUP4 PUSH2 0x43C7 JUMP JUMPDEST PUSH1 0x1 DUP3 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP14 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF DUP4 AND SWAP2 SWAP1 SWAP2 SHL DUP1 ADD PUSH1 0x0 NOT ADD SWAP1 DUP2 AND DUP1 ISZERO ISZERO SWAP8 POP SWAP3 SWAP5 POP SWAP1 SWAP3 POP SWAP1 DUP6 PUSH2 0x2C1E JUMPI DUP9 DUP4 PUSH1 0xFF AND DUP7 SUB MUL PUSH2 0x2C31 JUMP JUMPDEST DUP9 PUSH2 0x2C28 DUP3 PUSH2 0x43D9 JUMP JUMPDEST DUP5 SUB PUSH1 0xFF AND DUP7 SUB MUL JUMPDEST SWAP7 POP POP POP POP POP PUSH2 0x2CBA JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2C4B DUP4 PUSH1 0x1 ADD PUSH2 0x43C7 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH1 0x1 DUP3 PUSH1 0xFF AND PUSH1 0x1 SWAP1 SHL SUB NOT SWAP1 POP PUSH1 0x0 DUP2 DUP12 PUSH1 0x0 DUP7 PUSH1 0x1 SIGNEXTEND PUSH1 0x1 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD AND SWAP1 POP DUP1 PUSH1 0x0 EQ ISZERO SWAP6 POP DUP6 PUSH2 0x2C9D JUMPI DUP9 DUP4 PUSH1 0xFF SUB PUSH1 0xFF AND DUP7 PUSH1 0x1 ADD ADD MUL PUSH2 0x2CB3 JUMP JUMPDEST DUP9 DUP4 PUSH2 0x2CA8 DUP4 PUSH2 0x4478 JUMP JUMPDEST SUB PUSH1 0xFF AND DUP7 PUSH1 0x1 ADD ADD MUL JUMPDEST SWAP7 POP POP POP POP POP JUMPDEST POP SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH1 0x2 SIGNEXTEND SLT PUSH2 0x2CDB JUMPI DUP3 PUSH1 0x2 SIGNEXTEND PUSH2 0x2CE3 JUMP JUMPDEST DUP3 PUSH1 0x2 SIGNEXTEND PUSH1 0x0 SUB JUMPDEST SWAP1 POP PUSH3 0xD89E8 DUP2 GT ISZERO PUSH2 0x2D21 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0xFA SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 AND PUSH2 0x2D35 JUMPI PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0x2D47 JUMP JUMPDEST PUSH16 0xFFFCB933BD6FAD37AA2D162D1A594001 JUMPDEST PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x2 DUP3 AND ISZERO PUSH2 0x2D7B JUMPI PUSH16 0xFFF97272373D413259A46990580E213A MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x4 DUP3 AND ISZERO PUSH2 0x2D9A JUMPI PUSH16 0xFFF2E50F5F656932EF12357CF3C7FDCC MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x8 DUP3 AND ISZERO PUSH2 0x2DB9 JUMPI PUSH16 0xFFE5CACA7E10E4E61C3624EAA0941CD0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x10 DUP3 AND ISZERO PUSH2 0x2DD8 JUMPI PUSH16 0xFFCB9843D60F6159C9DB58835C926644 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x20 DUP3 AND ISZERO PUSH2 0x2DF7 JUMPI PUSH16 0xFF973B41FA98C081472E6896DFB254C0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x40 DUP3 AND ISZERO PUSH2 0x2E16 JUMPI PUSH16 0xFF2EA16466C96A3843EC78B326B52861 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x80 DUP3 AND ISZERO PUSH2 0x2E35 JUMPI PUSH16 0xFE5DEE046A99A2A811C461F1969C3053 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x100 DUP3 AND ISZERO PUSH2 0x2E55 JUMPI PUSH16 0xFCBE86C7900A88AEDCFFC83B479AA3A4 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x200 DUP3 AND ISZERO PUSH2 0x2E75 JUMPI PUSH16 0xF987A7253AC413176F2B074CF7815E54 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x400 DUP3 AND ISZERO PUSH2 0x2E95 JUMPI PUSH16 0xF3392B0822B70005940C7A398E4B70F3 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x800 DUP3 AND ISZERO PUSH2 0x2EB5 JUMPI PUSH16 0xE7159475A2C29B7443B29C7FA6E889D9 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x1000 DUP3 AND ISZERO PUSH2 0x2ED5 JUMPI PUSH16 0xD097F3BDFD2022B8845AD8F792AA5825 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x2000 DUP3 AND ISZERO PUSH2 0x2EF5 JUMPI PUSH16 0xA9F746462D870FDF8A65DC1F90E061E5 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x4000 DUP3 AND ISZERO PUSH2 0x2F15 JUMPI PUSH16 0x70D869A156D2A1B890BB3DF62BAF32F7 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x8000 DUP3 AND ISZERO PUSH2 0x2F35 JUMPI PUSH16 0x31BE135F97D08FD981231505542FCFA6 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x10000 DUP3 AND ISZERO PUSH2 0x2F56 JUMPI PUSH16 0x9AA508B5B7A84E1C677DE54F3E99BC9 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x20000 DUP3 AND ISZERO PUSH2 0x2F76 JUMPI PUSH15 0x5D6AF8DEDB81196699C329225EE604 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x40000 DUP3 AND ISZERO PUSH2 0x2F95 JUMPI PUSH14 0x2216E584F5FA1EA926041BEDFE98 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x80000 DUP3 AND ISZERO PUSH2 0x2FB2 JUMPI PUSH12 0x48A170391F7DC42444E8FA2 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND SGT ISZERO PUSH2 0x2FCD JUMPI DUP1 PUSH1 0x0 NOT DUP2 PUSH2 0x2FC9 JUMPI INVALID JUMPDEST DIV SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0x20 SHL DUP2 MOD ISZERO PUSH2 0x2FE0 JUMPI PUSH1 0x1 PUSH2 0x2FE3 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0xFF AND PUSH1 0x20 DUP3 SWAP1 SHR ADD SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP10 AND SWAP1 DUP11 AND LT ISZERO DUP2 DUP8 SLT DUP1 ISZERO SWAP1 PUSH2 0x307A JUMPI PUSH1 0x0 PUSH2 0x302E DUP10 DUP10 PUSH3 0xF4240 SUB PUSH3 0xFFFFFF AND PUSH3 0xF4240 PUSH2 0x322F JUMP JUMPDEST SWAP1 POP DUP3 PUSH2 0x3047 JUMPI PUSH2 0x3042 DUP13 DUP13 DUP13 PUSH1 0x1 PUSH2 0x4562 JUMP JUMPDEST PUSH2 0x3054 JUMP JUMPDEST PUSH2 0x3054 DUP12 DUP14 DUP13 PUSH1 0x1 PUSH2 0x45DD JUMP JUMPDEST SWAP6 POP DUP6 DUP2 LT PUSH2 0x3065 JUMPI DUP11 SWAP7 POP PUSH2 0x3074 JUMP JUMPDEST PUSH2 0x3071 DUP13 DUP12 DUP4 DUP7 PUSH2 0x4688 JUMP JUMPDEST SWAP7 POP JUMPDEST POP PUSH2 0x30C4 JUMP JUMPDEST DUP2 PUSH2 0x3091 JUMPI PUSH2 0x308C DUP12 DUP12 DUP12 PUSH1 0x0 PUSH2 0x45DD JUMP JUMPDEST PUSH2 0x309E JUMP JUMPDEST PUSH2 0x309E DUP11 DUP13 DUP12 PUSH1 0x0 PUSH2 0x4562 JUMP JUMPDEST SWAP4 POP DUP4 DUP9 PUSH1 0x0 SUB LT PUSH2 0x30B2 JUMPI DUP10 SWAP6 POP PUSH2 0x30C4 JUMP JUMPDEST PUSH2 0x30C1 DUP12 DUP11 DUP11 PUSH1 0x0 SUB DUP6 PUSH2 0x46D4 JUMP JUMPDEST SWAP6 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 DUP2 AND SWAP1 DUP8 AND EQ DUP3 ISZERO PUSH2 0x3127 JUMPI DUP1 DUP1 ISZERO PUSH2 0x30E3 JUMPI POP DUP2 JUMPDEST PUSH2 0x30F9 JUMPI PUSH2 0x30F4 DUP8 DUP14 DUP13 PUSH1 0x1 PUSH2 0x45DD JUMP JUMPDEST PUSH2 0x30FB JUMP JUMPDEST DUP6 JUMPDEST SWAP6 POP DUP1 DUP1 ISZERO PUSH2 0x3108 JUMPI POP DUP2 ISZERO JUMPDEST PUSH2 0x311E JUMPI PUSH2 0x3119 DUP8 DUP14 DUP13 PUSH1 0x0 PUSH2 0x4562 JUMP JUMPDEST PUSH2 0x3120 JUMP JUMPDEST DUP5 JUMPDEST SWAP5 POP PUSH2 0x3171 JUMP JUMPDEST DUP1 DUP1 ISZERO PUSH2 0x3131 JUMPI POP DUP2 JUMPDEST PUSH2 0x3147 JUMPI PUSH2 0x3142 DUP13 DUP9 DUP13 PUSH1 0x1 PUSH2 0x4562 JUMP JUMPDEST PUSH2 0x3149 JUMP JUMPDEST DUP6 JUMPDEST SWAP6 POP DUP1 DUP1 ISZERO PUSH2 0x3156 JUMPI POP DUP2 ISZERO JUMPDEST PUSH2 0x316C JUMPI PUSH2 0x3167 DUP13 DUP9 DUP13 PUSH1 0x0 PUSH2 0x45DD JUMP JUMPDEST PUSH2 0x316E JUMP JUMPDEST DUP5 JUMPDEST SWAP5 POP JUMPDEST DUP2 ISZERO DUP1 ISZERO PUSH2 0x3181 JUMPI POP DUP9 PUSH1 0x0 SUB DUP6 GT JUMPDEST ISZERO PUSH2 0x318D JUMPI DUP9 PUSH1 0x0 SUB SWAP5 POP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x31AC JUMPI POP DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x31BB JUMPI DUP6 DUP10 SUB SWAP4 POP PUSH2 0x31D8 JUMP JUMPDEST PUSH2 0x31D5 DUP7 DUP10 PUSH3 0xFFFFFF AND DUP11 PUSH3 0xF4240 SUB PUSH3 0xFFFFFF AND PUSH2 0x40BA JUMP JUMPDEST SWAP4 POP JUMPDEST POP POP POP SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xFF SHL DUP3 LT PUSH2 0x31F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 SGT ISZERO PUSH1 0x0 DUP4 SLT ISZERO EQ PUSH2 0x3213 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 DUP2 ADD DUP3 DUP2 SLT ISZERO PUSH1 0x0 DUP4 SLT ISZERO EQ PUSH2 0x3213 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH1 0x0 NOT DUP6 DUP8 MULMOD DUP7 DUP7 MUL SWAP3 POP DUP3 DUP2 LT SWAP1 DUP4 SWAP1 SUB SUB SWAP1 POP DUP1 PUSH2 0x3265 JUMPI PUSH1 0x0 DUP5 GT PUSH2 0x325A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP3 SWAP1 DIV SWAP1 POP PUSH2 0x32D8 JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0x3271 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP7 DUP9 MULMOD PUSH1 0x0 DUP7 DUP2 SUB DUP8 AND SWAP7 DUP8 SWAP1 DIV SWAP7 PUSH1 0x2 PUSH1 0x3 DUP10 MUL DUP2 XOR DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL SWAP1 SWAP2 SUB MUL SWAP2 DUP2 SWAP1 SUB DUP2 SWAP1 DIV PUSH1 0x1 ADD DUP7 DUP5 GT SWAP1 SWAP6 SUB SWAP5 SWAP1 SWAP5 MUL SWAP2 SWAP1 SWAP5 SUB SWAP3 SWAP1 SWAP3 DIV SWAP2 SWAP1 SWAP2 OR SWAP2 SWAP1 SWAP2 MUL SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH4 0xFFFFFFFF DUP8 AND PUSH2 0x3385 JUMPI PUSH1 0x0 DUP10 DUP7 PUSH2 0xFFFF AND PUSH2 0xFFFF DUP2 LT PUSH2 0x3300 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE SWAP2 SWAP1 SWAP3 ADD SLOAD PUSH4 0xFFFFFFFF DUP1 DUP3 AND DUP1 DUP5 MSTORE PUSH1 0x1 PUSH1 0x20 SHL DUP4 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x58 SHL DUP4 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP5 DUP5 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP2 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP4 ADD MSTORE SWAP1 SWAP3 POP DUP11 AND EQ PUSH2 0x3371 JUMPI PUSH2 0x336E DUP2 DUP11 DUP10 DUP9 PUSH2 0x4720 JUMP JUMPDEST SWAP1 POP JUMPDEST DUP1 PUSH1 0x20 ADD MLOAD DUP2 PUSH1 0x40 ADD MLOAD SWAP3 POP SWAP3 POP POP PUSH2 0x3465 JUMP JUMPDEST DUP7 DUP9 SUB PUSH1 0x0 DUP1 PUSH2 0x339A DUP13 DUP13 DUP6 DUP13 DUP13 DUP13 DUP13 PUSH2 0x47C3 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH1 0x0 ADD MLOAD PUSH4 0xFFFFFFFF AND DUP4 PUSH4 0xFFFFFFFF AND EQ ISZERO PUSH2 0x33CC JUMPI DUP2 PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x40 ADD MLOAD SWAP5 POP SWAP5 POP POP POP POP PUSH2 0x3465 JUMP JUMPDEST DUP1 MLOAD PUSH4 0xFFFFFFFF DUP5 DUP2 AND SWAP2 AND EQ ISZERO PUSH2 0x33F4 JUMPI DUP1 PUSH1 0x20 ADD MLOAD DUP2 PUSH1 0x40 ADD MLOAD SWAP5 POP SWAP5 POP POP POP POP PUSH2 0x3465 JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD PUSH1 0x20 DUP1 DUP6 ADD MLOAD SWAP1 DUP5 ADD MLOAD SWAP2 DUP4 SWAP1 SUB SWAP3 DUP7 SUB SWAP2 PUSH4 0xFFFFFFFF DUP1 DUP5 AND SWAP3 SWAP1 DUP6 AND SWAP2 SUB PUSH1 0x6 SIGNEXTEND DUP2 PUSH2 0x3422 JUMPI INVALID JUMPDEST SDIV MUL DUP5 PUSH1 0x20 ADD MLOAD ADD DUP3 PUSH4 0xFFFFFFFF AND DUP3 PUSH4 0xFFFFFFFF AND DUP7 PUSH1 0x40 ADD MLOAD DUP7 PUSH1 0x40 ADD MLOAD SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL DUP2 PUSH2 0x3454 JUMPI INVALID JUMPDEST DIV DUP6 PUSH1 0x40 ADD MLOAD ADD SWAP7 POP SWAP7 POP POP POP POP POP POP JUMPDEST SWAP8 POP SWAP8 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SWAP6 DUP7 SIGNEXTEND DUP7 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP8 SWAP1 SWAP8 MSTORE PUSH1 0x40 SWAP1 SWAP7 KECCAK256 PUSH1 0x1 DUP2 ADD DUP1 SLOAD SWAP1 SWAP6 SUB SWAP1 SWAP5 SSTORE SWAP4 DUP4 ADD DUP1 SLOAD SWAP1 SWAP3 SUB SWAP1 SWAP2 SSTORE PUSH1 0x3 DUP3 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0xD8 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x1 PUSH1 0x38 SHL DUP1 DUP6 DIV DUP3 AND SWAP1 SWAP7 SUB AND SWAP1 SWAP5 MUL PUSH1 0x1 PUSH1 0x38 SHL PUSH1 0x1 PUSH1 0xD8 SHL SUB NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR PUSH1 0x6 DUP2 DUP2 SIGNEXTEND SWAP1 SWAP7 SUB SWAP1 SWAP6 SIGNEXTEND PUSH7 0xFFFFFFFFFFFFFF AND PUSH7 0xFFFFFFFFFFFFFF NOT SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR DUP3 DUP2 DIV DUP6 AND SWAP1 SWAP6 SUB SWAP1 SWAP4 AND MUL PUSH4 0xFFFFFFFF PUSH1 0xD8 SHL NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SSTORE SLOAD PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0xF SIGNEXTEND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0xF SIGNEXTEND SLT ISZERO PUSH2 0x3590 JUMPI DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP3 PUSH1 0x0 SUB DUP5 SUB SWAP2 POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND LT PUSH2 0x358B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4C53 PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x3213 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP3 DUP5 ADD SWAP2 POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND LT ISZERO PUSH2 0x3213 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4C41 PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH5 0x1000276A3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND LT DUP1 ISZERO SWAP1 PUSH2 0x361D JUMPI POP PUSH20 0xFFFD8963EFD1FC6A506488495D951D5263988D26 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND LT JUMPDEST PUSH2 0x3652 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0xF9 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH5 0x100000000 PUSH1 0x1 PUSH1 0xC0 SHL SUB PUSH1 0x20 DUP4 SWAP1 SHL AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 GT PUSH1 0x7 SHL DUP2 DUP2 SHR PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH1 0x6 SHL SWAP1 DUP2 SHR PUSH4 0xFFFFFFFF DUP2 GT PUSH1 0x5 SHL SWAP1 DUP2 SHR PUSH2 0xFFFF DUP2 GT PUSH1 0x4 SHL SWAP1 DUP2 SHR PUSH1 0xFF DUP2 GT PUSH1 0x3 SWAP1 DUP2 SHL SWAP2 DUP3 SHR PUSH1 0xF DUP2 GT PUSH1 0x2 SHL SWAP1 DUP2 SHR SWAP2 DUP3 GT PUSH1 0x1 SWAP1 DUP2 SHL SWAP3 DUP4 SHR SWAP8 SWAP1 DUP9 GT SWAP7 OR SWAP1 SWAP5 OR SWAP1 SWAP3 OR OR SWAP1 SWAP2 OR OR OR PUSH1 0x80 DUP2 LT PUSH2 0x36E6 JUMPI PUSH1 0x7F DUP2 SUB DUP4 SWAP1 SHR SWAP2 POP PUSH2 0x36F0 JUMP JUMPDEST DUP1 PUSH1 0x7F SUB DUP4 SWAP1 SHL SWAP2 POP JUMPDEST SWAP1 DUP1 MUL PUSH1 0x7F DUP2 DUP2 SHR PUSH1 0xFF DUP4 DUP2 SHR SWAP2 SWAP1 SWAP2 SHR DUP1 MUL DUP1 DUP4 SHR DUP2 DUP4 SHR SHR DUP1 MUL DUP1 DUP5 SHR DUP2 DUP5 SHR SHR DUP1 MUL DUP1 DUP6 SHR DUP2 DUP6 SHR SHR DUP1 MUL DUP1 DUP7 SHR DUP2 DUP7 SHR SHR DUP1 MUL DUP1 DUP8 SHR DUP2 DUP8 SHR SHR DUP1 MUL DUP1 DUP9 SHR DUP2 DUP9 SHR SHR DUP1 MUL DUP1 DUP10 SHR DUP2 DUP10 SHR SHR DUP1 MUL DUP1 DUP11 SHR DUP2 DUP11 SHR SHR DUP1 MUL DUP1 DUP12 SHR DUP2 DUP12 SHR SHR DUP1 MUL DUP1 DUP13 SHR DUP2 DUP13 SHR SHR DUP1 MUL DUP1 DUP14 SHR DUP2 DUP14 SHR SHR DUP1 MUL DUP1 DUP15 SHR SWAP13 DUP2 SWAP1 SHR SWAP13 SWAP1 SWAP13 SHR DUP1 MUL SWAP13 DUP14 SWAP1 SHR SWAP15 SWAP14 PUSH1 0x7F NOT DUP16 ADD PUSH1 0x40 SHL PUSH1 0xC0 SWAP2 SWAP1 SWAP2 SHR PUSH8 0x8000000000000000 AND OR PUSH1 0xC1 SWAP12 SWAP1 SWAP12 SHR PUSH8 0x4000000000000000 AND SWAP11 SWAP1 SWAP11 OR PUSH1 0xC2 SWAP10 SWAP1 SWAP10 SHR PUSH8 0x2000000000000000 AND SWAP9 SWAP1 SWAP9 OR PUSH1 0xC3 SWAP8 SWAP1 SWAP8 SHR PUSH8 0x1000000000000000 AND SWAP7 SWAP1 SWAP7 OR PUSH1 0xC4 SWAP6 SWAP1 SWAP6 SHR PUSH8 0x800000000000000 AND SWAP5 SWAP1 SWAP5 OR PUSH1 0xC5 SWAP4 SWAP1 SWAP4 SHR PUSH8 0x400000000000000 AND SWAP3 SWAP1 SWAP3 OR PUSH1 0xC6 SWAP2 SWAP1 SWAP2 SHR PUSH8 0x200000000000000 AND OR PUSH1 0xC7 SWAP2 SWAP1 SWAP2 SHR PUSH1 0x1 PUSH1 0x38 SHL AND OR PUSH1 0xC8 SWAP2 SWAP1 SWAP2 SHR PUSH7 0x80000000000000 AND OR PUSH1 0xC9 SWAP2 SWAP1 SWAP2 SHR PUSH7 0x40000000000000 AND OR PUSH1 0xCA SWAP2 SWAP1 SWAP2 SHR PUSH7 0x20000000000000 AND OR PUSH1 0xCB SWAP2 SWAP1 SWAP2 SHR PUSH7 0x10000000000000 AND OR PUSH1 0xCC SWAP2 SWAP1 SWAP2 SHR PUSH7 0x8000000000000 AND OR PUSH1 0xCD SWAP2 SWAP1 SWAP2 SHR PUSH7 0x4000000000000 AND OR PUSH10 0x3627A301D71055774C85 DUP2 MUL PUSH16 0x28F6481AB7F045A5AF012A19D003AA9 NOT DUP2 ADD PUSH1 0x80 SWAP1 DUP2 SAR SWAP1 PUSH16 0xDB2DF09E81959A81455E260799A0632F DUP4 ADD SWAP1 SAR PUSH1 0x2 DUP2 DUP2 SIGNEXTEND SWAP1 DUP4 SWAP1 SIGNEXTEND EQ PUSH2 0x38ED JUMPI DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x38D1 DUP3 PUSH2 0x2CC4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x38E6 JUMPI DUP2 PUSH2 0x38E8 JUMP JUMPDEST DUP1 JUMPDEST PUSH2 0x38EF JUMP JUMPDEST DUP2 JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP10 DUP10 PUSH2 0xFFFF AND PUSH2 0xFFFF DUP2 LT PUSH2 0x3912 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE SWAP2 SWAP1 SWAP3 ADD SLOAD PUSH4 0xFFFFFFFF DUP1 DUP3 AND DUP1 DUP5 MSTORE PUSH1 0x1 PUSH1 0x20 SHL DUP4 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x58 SHL DUP4 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP5 DUP5 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP2 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP4 ADD MSTORE SWAP1 SWAP3 POP DUP10 AND EQ ISZERO PUSH2 0x3981 JUMPI DUP9 DUP6 SWAP3 POP SWAP3 POP POP PUSH2 0x3465 JUMP JUMPDEST DUP5 PUSH2 0xFFFF AND DUP5 PUSH2 0xFFFF AND GT DUP1 ISZERO PUSH2 0x39A2 JUMPI POP PUSH1 0x1 DUP6 SUB PUSH2 0xFFFF AND DUP10 PUSH2 0xFFFF AND EQ JUMPDEST ISZERO PUSH2 0x39AF JUMPI DUP4 SWAP2 POP PUSH2 0x39B3 JUMP JUMPDEST DUP5 SWAP2 POP JUMPDEST DUP2 PUSH2 0xFFFF AND DUP10 PUSH1 0x1 ADD PUSH2 0xFFFF AND DUP2 PUSH2 0x39C7 JUMPI INVALID JUMPDEST MOD SWAP3 POP PUSH2 0x39D6 DUP2 DUP10 DUP10 DUP10 PUSH2 0x4720 JUMP JUMPDEST DUP11 DUP5 PUSH2 0xFFFF AND PUSH2 0xFFFF DUP2 LT PUSH2 0x39E7 JUMPI INVALID JUMPDEST DUP3 MLOAD SWAP2 ADD DUP1 SLOAD PUSH1 0x20 DUP5 ADD MLOAD PUSH1 0x40 DUP6 ADD MLOAD PUSH1 0x60 SWAP1 SWAP6 ADD MLOAD ISZERO ISZERO PUSH1 0x1 PUSH1 0xF8 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP7 AND PUSH1 0x1 PUSH1 0x58 SHL MUL PUSH32 0xFF0000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFF PUSH1 0x6 SWAP4 SWAP1 SWAP4 SIGNEXTEND PUSH7 0xFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0x20 SHL MUL PUSH11 0xFFFFFFFFFFFFFF00000000 NOT PUSH4 0xFFFFFFFF SWAP1 SWAP8 AND PUSH4 0xFFFFFFFF NOT SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR SWAP6 SWAP1 SWAP6 AND SWAP3 SWAP1 SWAP3 OR AND SWAP3 SWAP1 SWAP3 OR SWAP3 SWAP1 SWAP3 AND OR SWAP1 SSTORE POP SWAP8 POP SWAP8 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xA9059CBB PUSH1 0xE0 SHL OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 DUP6 SWAP5 SWAP4 DUP10 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x3B13 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x3AF4 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3B75 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3B7A JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x3BA8 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x3BA8 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3BA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x3BDE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x2A23 PUSH1 0xF1 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD ADDRESS PUSH1 0x24 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x70A08231 PUSH1 0xE0 SHL OR DUP2 MSTORE SWAP2 MLOAD DUP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 DUP5 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x3C7E JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x3C5F JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3CDE JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3CE3 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x3CF7 JUMPI POP PUSH1 0x20 DUP2 MLOAD LT ISZERO JUMPDEST PUSH2 0x3D00 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3D15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 POP POP POP SWAP1 JUMP JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0x3213 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD ADDRESS PUSH1 0x24 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x70A08231 PUSH1 0xE0 SHL OR DUP2 MSTORE SWAP2 MLOAD DUP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 DUP5 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 PUSH1 0x20 DUP4 LT PUSH2 0x3C7E JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x3C5F JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH2 0xFFFF AND GT PUSH2 0x3E04 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x49 PUSH1 0xF8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 PUSH2 0xFFFF AND DUP3 PUSH2 0xFFFF AND GT PUSH2 0x3E1A JUMPI POP DUP2 PUSH2 0x32D8 JUMP JUMPDEST DUP3 JUMPDEST DUP3 PUSH2 0xFFFF AND DUP2 PUSH2 0xFFFF AND LT ISZERO PUSH2 0x3E60 JUMPI PUSH1 0x1 DUP6 DUP3 PUSH2 0xFFFF AND PUSH2 0xFFFF DUP2 LT PUSH2 0x3E3F JUMPI INVALID JUMPDEST ADD DUP1 SLOAD PUSH4 0xFFFFFFFF NOT AND PUSH4 0xFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x1 ADD PUSH2 0x3E1C JUMP JUMPDEST POP SWAP1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 PUSH1 0xF DUP2 SWAP1 SIGNEXTEND DUP2 EQ PUSH2 0x2B42 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x3E87 PUSH2 0x2B47 JUMP JUMPDEST PUSH2 0x3E99 DUP5 PUSH1 0x20 ADD MLOAD DUP6 PUSH1 0x40 ADD MLOAD PUSH2 0x42B2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xE0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0xA0 SHL DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP1 DUP5 ADD DUP3 SWAP1 MSTORE PUSH2 0xFFFF PUSH1 0x1 PUSH1 0xB8 SHL DUP5 DIV DUP2 AND DUP6 DUP8 ADD MSTORE PUSH1 0x1 PUSH1 0xC8 SHL DUP5 DIV DUP2 AND PUSH1 0x60 DUP1 DUP8 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0xD8 SHL DUP6 DIV SWAP1 SWAP2 AND PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0xFF PUSH1 0x1 PUSH1 0xE8 SHL DUP6 DIV DUP2 AND PUSH1 0xA0 DUP8 ADD MSTORE PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 SWAP5 DIV SWAP1 SWAP4 AND ISZERO ISZERO PUSH1 0xC0 DUP6 ADD MSTORE DUP9 MLOAD SWAP1 DUP10 ADD MLOAD SWAP5 DUP10 ADD MLOAD SWAP3 DUP10 ADD MLOAD SWAP4 SWAP5 PUSH2 0x3F3D SWAP5 SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 SWAP1 PUSH2 0x49BD JUMP JUMPDEST SWAP4 POP DUP5 PUSH1 0x60 ADD MLOAD PUSH1 0xF SIGNEXTEND PUSH1 0x0 EQ PUSH2 0x40B2 JUMPI DUP5 PUSH1 0x20 ADD MLOAD PUSH1 0x2 SIGNEXTEND DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x2 SIGNEXTEND SLT ISZERO PUSH2 0x3F92 JUMPI PUSH2 0x3F8B PUSH2 0x3F74 DUP7 PUSH1 0x20 ADD MLOAD PUSH2 0x2CC4 JUMP JUMPDEST PUSH2 0x3F81 DUP8 PUSH1 0x40 ADD MLOAD PUSH2 0x2CC4 JUMP JUMPDEST DUP8 PUSH1 0x60 ADD MLOAD PUSH2 0x4B72 JUMP JUMPDEST SWAP3 POP PUSH2 0x40B2 JUMP JUMPDEST DUP5 PUSH1 0x40 ADD MLOAD PUSH1 0x2 SIGNEXTEND DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x2 SIGNEXTEND SLT ISZERO PUSH2 0x4088 JUMPI PUSH1 0x4 SLOAD PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH2 0x3FE4 SWAP1 PUSH2 0x3FC8 PUSH2 0x2B7E JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x60 DUP7 ADD MLOAD PUSH1 0x80 DUP8 ADD MLOAD PUSH1 0x8 SWAP5 SWAP4 SWAP3 SWAP2 DUP8 SWAP2 PUSH2 0x38FC JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFFFF PUSH1 0xC8 SHL NOT AND PUSH1 0x1 PUSH1 0xC8 SHL PUSH2 0xFFFF SWAP4 DUP5 AND MUL OR PUSH2 0xFFFF PUSH1 0xB8 SHL NOT AND PUSH1 0x1 PUSH1 0xB8 SHL SWAP4 SWAP1 SWAP3 AND SWAP3 SWAP1 SWAP3 MUL OR SWAP1 SSTORE DUP2 MLOAD PUSH1 0x40 DUP8 ADD MLOAD PUSH2 0x4034 SWAP2 SWAP1 PUSH2 0x402A SWAP1 PUSH2 0x2CC4 JUMP JUMPDEST DUP9 PUSH1 0x60 ADD MLOAD PUSH2 0x4B72 JUMP JUMPDEST SWAP4 POP PUSH2 0x4052 PUSH2 0x4046 DUP8 PUSH1 0x20 ADD MLOAD PUSH2 0x2CC4 JUMP JUMPDEST DUP4 MLOAD PUSH1 0x60 DUP10 ADD MLOAD PUSH2 0x4BB6 JUMP JUMPDEST SWAP3 POP PUSH2 0x4062 DUP2 DUP8 PUSH1 0x60 ADD MLOAD PUSH2 0x352B JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP PUSH2 0x40B2 JUMP JUMPDEST PUSH2 0x40AF PUSH2 0x4098 DUP7 PUSH1 0x20 ADD MLOAD PUSH2 0x2CC4 JUMP JUMPDEST PUSH2 0x40A5 DUP8 PUSH1 0x40 ADD MLOAD PUSH2 0x2CC4 JUMP JUMPDEST DUP8 PUSH1 0x60 ADD MLOAD PUSH2 0x4BB6 JUMP JUMPDEST SWAP2 POP JUMPDEST POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x40C7 DUP5 DUP5 DUP5 PUSH2 0x322F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 DUP1 PUSH2 0x40D3 JUMPI INVALID JUMPDEST DUP5 DUP7 MULMOD GT ISZERO PUSH2 0x32D8 JUMPI PUSH1 0x0 NOT DUP2 LT PUSH2 0x40EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 SWAP5 SWAP1 SWAP5 SHL PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP1 DUP7 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x2 SWAP4 DUP5 SIGNEXTEND PUSH1 0xE8 SWAP1 DUP2 SHL PUSH1 0x34 DUP8 ADD MSTORE SWAP3 SWAP1 SWAP4 SIGNEXTEND SWAP1 SWAP2 SHL PUSH1 0x37 DUP5 ADD MSTORE DUP1 MLOAD DUP1 DUP5 SUB PUSH1 0x1A ADD DUP2 MSTORE PUSH1 0x3A SWAP1 SWAP4 ADD DUP2 MSTORE DUP3 MLOAD SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 KECCAK256 PUSH1 0x0 SWAP1 DUP2 MSTORE SWAP3 SWAP1 MSTORE SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x0 DUP4 PUSH2 0xFFFF AND GT PUSH2 0x4198 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x49 PUSH1 0xF8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP7 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x41B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x41DA JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP2 POP DUP7 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x41F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x421F JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP8 MLOAD DUP2 LT ISZERO PUSH2 0x42A5 JUMPI PUSH2 0x4250 DUP11 DUP11 DUP11 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x423F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP11 DUP11 DUP11 DUP11 PUSH2 0x32DF JUMP JUMPDEST DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x425C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x426F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP DUP3 PUSH1 0x6 SIGNEXTEND PUSH1 0x6 SIGNEXTEND DUP2 MSTORE POP POP POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x4225 JUMP JUMPDEST POP SWAP8 POP SWAP8 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x2 SIGNEXTEND DUP3 PUSH1 0x2 SIGNEXTEND SLT PUSH2 0x42F2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x544C55 PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH3 0xD89E7 NOT PUSH1 0x2 DUP4 SWAP1 SIGNEXTEND SLT ISZERO PUSH2 0x4335 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x544C4D PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH3 0xD89E8 PUSH1 0x2 DUP3 SWAP1 SIGNEXTEND SGT ISZERO PUSH2 0x4377 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x54554D PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE PUSH4 0xFFFFFFFF SWAP3 DUP4 AND DUP1 DUP3 MSTORE PUSH1 0x0 PUSH1 0x20 DUP4 ADD DUP2 SWAP1 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0x60 SWAP1 SWAP2 ADD DUP2 SWAP1 MSTORE DUP4 SLOAD PUSH4 0xFFFFFFFF NOT AND SWAP1 SWAP2 OR SWAP1 SWAP2 AND PUSH1 0x1 PUSH1 0xF8 SHL OR SWAP1 SWAP2 SSTORE SWAP1 DUP2 SWAP1 JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND PUSH1 0x8 DUP2 SWAP1 SAR SWAP2 PUSH2 0x100 SWAP1 SWAP2 SMOD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0x43E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x80 SHL DUP3 LT PUSH2 0x43FA JUMPI PUSH1 0x80 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH9 0x10000000000000000 DUP3 LT PUSH2 0x4412 JUMPI PUSH1 0x40 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x1 PUSH1 0x20 SHL DUP3 LT PUSH2 0x4425 JUMPI PUSH1 0x20 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH3 0x10000 DUP3 LT PUSH2 0x4437 JUMPI PUSH1 0x10 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH2 0x100 DUP3 LT PUSH2 0x4448 JUMPI PUSH1 0x8 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x10 DUP3 LT PUSH2 0x4458 JUMPI PUSH1 0x4 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x4 DUP3 LT PUSH2 0x4468 JUMPI PUSH1 0x2 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x2 DUP3 LT PUSH2 0x2B42 JUMPI PUSH1 0x1 ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0x4486 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xFF PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 AND ISZERO PUSH2 0x44A1 JUMPI PUSH1 0x7F NOT ADD PUSH2 0x44A9 JUMP JUMPDEST PUSH1 0x80 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP3 AND ISZERO PUSH2 0x44C2 JUMPI PUSH1 0x3F NOT ADD PUSH2 0x44CA JUMP JUMPDEST PUSH1 0x40 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH4 0xFFFFFFFF DUP3 AND ISZERO PUSH2 0x44DF JUMPI PUSH1 0x1F NOT ADD PUSH2 0x44E7 JUMP JUMPDEST PUSH1 0x20 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH2 0xFFFF DUP3 AND ISZERO PUSH2 0x44FA JUMPI PUSH1 0xF NOT ADD PUSH2 0x4502 JUMP JUMPDEST PUSH1 0x10 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0xFF DUP3 AND ISZERO PUSH2 0x4514 JUMPI PUSH1 0x7 NOT ADD PUSH2 0x451C JUMP JUMPDEST PUSH1 0x8 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0xF DUP3 AND ISZERO PUSH2 0x452E JUMPI PUSH1 0x3 NOT ADD PUSH2 0x4536 JUMP JUMPDEST PUSH1 0x4 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0x3 DUP3 AND ISZERO PUSH2 0x4548 JUMPI PUSH1 0x1 NOT ADD PUSH2 0x4550 JUMP JUMPDEST PUSH1 0x2 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0x1 DUP3 AND ISZERO PUSH2 0x2B42 JUMPI PUSH1 0x0 NOT ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x4582 JUMPI SWAP3 SWAP4 SWAP3 JUMPDEST DUP2 PUSH2 0x45AF JUMPI PUSH2 0x45AA DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP7 DUP7 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x60 SHL PUSH2 0x322F JUMP JUMPDEST PUSH2 0x45D2 JUMP JUMPDEST PUSH2 0x45D2 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP7 DUP7 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x60 SHL PUSH2 0x40BA JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x45FD JUMPI SWAP3 SWAP4 SWAP3 JUMPDEST PUSH1 0x1 PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH1 0x60 DUP5 SWAP1 SHL AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP7 SUB DUP2 AND SWAP1 DUP8 AND PUSH2 0x4627 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 PUSH2 0x4657 JUMPI DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x464A DUP4 DUP4 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x322F JUMP JUMPDEST DUP2 PUSH2 0x4651 JUMPI INVALID JUMPDEST DIV PUSH2 0x467D JUMP JUMPDEST PUSH2 0x467D PUSH2 0x466E DUP4 DUP4 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x40BA JUMP JUMPDEST DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4BE5 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0x469F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT PUSH2 0x46B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH2 0x46C7 JUMPI PUSH2 0x45AA DUP6 DUP6 DUP6 PUSH1 0x1 PUSH2 0x4BF0 JUMP JUMPDEST PUSH2 0x45D2 DUP6 DUP6 DUP6 PUSH1 0x1 PUSH2 0x4CD1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0x46EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT PUSH2 0x4701 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH2 0x4713 JUMPI PUSH2 0x45AA DUP6 DUP6 DUP6 PUSH1 0x0 PUSH2 0x4CD1 JUMP JUMPDEST PUSH2 0x45D2 DUP6 DUP6 DUP6 PUSH1 0x0 PUSH2 0x4BF0 JUMP JUMPDEST PUSH2 0x4728 PUSH2 0x54F1 JUMP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x0 ADD MLOAD DUP6 SUB SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 DUP7 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH4 0xFFFFFFFF AND DUP7 PUSH1 0x2 SIGNEXTEND MUL DUP9 PUSH1 0x20 ADD MLOAD ADD PUSH1 0x6 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT PUSH2 0x477C JUMPI PUSH1 0x1 PUSH2 0x477E JUMP JUMPDEST DUP5 JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH4 0xFFFFFFFF PUSH1 0x80 SHL PUSH1 0x80 DUP6 SWAP1 SHL AND DUP2 PUSH2 0x479C JUMPI INVALID JUMPDEST DIV DUP9 PUSH1 0x40 ADD MLOAD ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 ISZERO ISZERO DUP2 MSTORE POP SWAP2 POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x47CB PUSH2 0x54F1 JUMP JUMPDEST PUSH2 0x47D3 PUSH2 0x54F1 JUMP JUMPDEST DUP9 DUP6 PUSH2 0xFFFF AND PUSH2 0xFFFF DUP2 LT PUSH2 0x47E4 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE SWAP2 SWAP1 SWAP3 ADD SLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP1 DUP4 MSTORE PUSH1 0x1 PUSH1 0x20 SHL DUP3 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x58 SHL DUP3 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP4 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP3 ADD MSTORE SWAP3 POP PUSH2 0x4848 SWAP1 DUP10 SWAP1 DUP10 PUSH2 0x4DB4 JUMP JUMPDEST ISZERO PUSH2 0x4880 JUMPI DUP7 PUSH4 0xFFFFFFFF AND DUP3 PUSH1 0x0 ADD MLOAD PUSH4 0xFFFFFFFF AND EQ ISZERO PUSH2 0x486A JUMPI PUSH2 0x3465 JUMP JUMPDEST DUP2 PUSH2 0x4877 DUP4 DUP10 DUP10 DUP9 PUSH2 0x4720 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x3465 JUMP JUMPDEST DUP9 DUP4 PUSH2 0xFFFF AND DUP7 PUSH1 0x1 ADD PUSH2 0xFFFF AND DUP2 PUSH2 0x4895 JUMPI INVALID JUMPDEST MOD PUSH2 0xFFFF AND PUSH2 0xFFFF DUP2 LT PUSH2 0x48A5 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE SWAP3 SWAP1 SWAP2 ADD SLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0x20 SHL DUP2 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x1 PUSH1 0x58 SHL DUP3 DIV AND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xFF PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP2 DIV AND ISZERO ISZERO PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE SWAP1 SWAP3 POP PUSH2 0x495A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE DUP11 SLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0x20 SHL DUP2 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x58 SHL DUP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP2 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP3 ADD MSTORE SWAP2 POP JUMPDEST PUSH2 0x4969 DUP9 DUP4 PUSH1 0x0 ADD MLOAD DUP10 PUSH2 0x4DB4 JUMP JUMPDEST PUSH2 0x49A0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x13D311 PUSH1 0xEA SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x49AD DUP10 DUP10 DUP10 DUP9 DUP8 PUSH2 0x4E75 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP8 POP SWAP8 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x49CC PUSH1 0x7 DUP8 DUP8 DUP8 PUSH2 0x40F4 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x2 SLOAD SWAP2 SWAP3 POP SWAP1 PUSH1 0x0 DUP1 PUSH1 0xF DUP8 SWAP1 SIGNEXTEND ISZERO PUSH2 0x4B12 JUMPI PUSH1 0x0 PUSH2 0x49ED PUSH2 0x2B7E JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x4 SLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 DUP3 SWAP2 PUSH2 0x4A37 SWAP2 PUSH1 0x8 SWAP2 DUP7 SWAP2 DUP6 SWAP2 PUSH1 0x1 PUSH1 0xA0 SHL DUP2 DIV PUSH1 0x2 SIGNEXTEND SWAP2 PUSH2 0xFFFF PUSH1 0x1 PUSH1 0xB8 SHL DUP4 DIV DUP2 AND SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH1 0x1 PUSH1 0xC8 SHL SWAP1 DIV AND PUSH2 0x32DF JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x4A71 PUSH1 0x5 DUP14 DUP12 DUP14 DUP12 DUP12 DUP8 DUP10 DUP12 PUSH1 0x0 PUSH32 0x0 PUSH2 0x5013 JUMP JUMPDEST SWAP5 POP PUSH2 0x4AA8 PUSH1 0x5 DUP13 DUP12 DUP14 DUP12 DUP12 DUP8 DUP10 DUP12 PUSH1 0x1 PUSH32 0x0 PUSH2 0x5013 JUMP JUMPDEST SWAP4 POP DUP5 ISZERO PUSH2 0x4ADC JUMPI PUSH2 0x4ADC PUSH1 0x6 DUP14 PUSH32 0x0 PUSH2 0x51CC JUMP JUMPDEST DUP4 ISZERO PUSH2 0x4B0E JUMPI PUSH2 0x4B0E PUSH1 0x6 DUP13 PUSH32 0x0 PUSH2 0x51CC JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x4B24 PUSH1 0x5 DUP13 DUP13 DUP12 DUP11 DUP11 PUSH2 0x5232 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x4B35 DUP8 DUP11 DUP5 DUP5 PUSH2 0x52DE JUMP JUMPDEST PUSH1 0x0 DUP10 PUSH1 0xF SIGNEXTEND SLT ISZERO PUSH2 0x4B63 JUMPI DUP4 ISZERO PUSH2 0x4B52 JUMPI PUSH2 0x4B52 PUSH1 0x5 DUP13 PUSH2 0x5473 JUMP JUMPDEST DUP3 ISZERO PUSH2 0x4B63 JUMPI PUSH2 0x4B63 PUSH1 0x5 DUP12 PUSH2 0x5473 JUMP JUMPDEST POP POP POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0xF SIGNEXTEND SLT PUSH2 0x4B98 JUMPI PUSH2 0x4B93 PUSH2 0x4B8E DUP6 DUP6 DUP6 PUSH1 0x1 PUSH2 0x45DD JUMP JUMPDEST PUSH2 0x31E7 JUMP JUMPDEST PUSH2 0x45D5 JUMP JUMPDEST PUSH2 0x4BAB PUSH2 0x4B8E DUP6 DUP6 DUP6 PUSH1 0x0 SUB PUSH1 0x0 PUSH2 0x45DD JUMP JUMPDEST PUSH1 0x0 SUB SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0xF SIGNEXTEND SLT PUSH2 0x4BD2 JUMPI PUSH2 0x4B93 PUSH2 0x4B8E DUP6 DUP6 DUP6 PUSH1 0x1 PUSH2 0x4562 JUMP JUMPDEST PUSH2 0x4BAB PUSH2 0x4B8E DUP6 DUP6 DUP6 PUSH1 0x0 SUB PUSH1 0x0 PUSH2 0x4562 JUMP JUMPDEST DUP1 DUP3 DIV SWAP2 MOD ISZERO ISZERO ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO PUSH2 0x4C63 JUMPI PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 GT ISZERO PUSH2 0x4C26 JUMPI PUSH2 0x4C21 DUP5 PUSH1 0x1 PUSH1 0x60 SHL DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x322F JUMP JUMPDEST PUSH2 0x4C3E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP6 AND PUSH1 0x60 DUP6 SWAP1 SHL DUP2 PUSH2 0x4C3C JUMPI INVALID JUMPDEST DIV JUMPDEST SWAP1 POP PUSH2 0x4C5B PUSH2 0x4C56 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP4 PUSH2 0x3D1E JUMP JUMPDEST PUSH2 0x549F JUMP JUMPDEST SWAP2 POP POP PUSH2 0x45D5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 GT ISZERO PUSH2 0x4C91 JUMPI PUSH2 0x4C8C DUP5 PUSH1 0x1 PUSH1 0x60 SHL DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x40BA JUMP JUMPDEST PUSH2 0x4CA8 JUMP JUMPDEST PUSH2 0x4CA8 PUSH1 0x60 DUP6 SWAP1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP8 AND PUSH2 0x4BE5 JUMP JUMPDEST SWAP1 POP DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0x4CBF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SUB SWAP1 POP PUSH2 0x45D5 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x4CDF JUMPI POP DUP4 PUSH2 0x45D5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH1 0x60 DUP6 SWAP1 SHL AND DUP3 ISZERO PUSH2 0x4D6D JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 DUP2 MUL SWAP1 DUP6 DUP3 DUP2 PUSH2 0x4D0D JUMPI INVALID JUMPDEST DIV EQ ISZERO PUSH2 0x4D3E JUMPI DUP2 DUP2 ADD DUP3 DUP2 LT PUSH2 0x4D3C JUMPI PUSH2 0x4D32 DUP4 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH2 0x40BA JUMP JUMPDEST SWAP4 POP POP POP POP PUSH2 0x45D5 JUMP JUMPDEST POP JUMPDEST PUSH2 0x4D64 DUP3 PUSH2 0x4D5F DUP8 DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 DUP2 PUSH2 0x4D58 JUMPI INVALID JUMPDEST DIV SWAP1 PUSH2 0x3D1E JUMP JUMPDEST PUSH2 0x4BE5 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x45D5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 DUP2 MUL SWAP1 DUP6 DUP3 DUP2 PUSH2 0x4D84 JUMPI INVALID JUMPDEST DIV EQ DUP1 ISZERO PUSH2 0x4D91 JUMPI POP DUP1 DUP3 GT JUMPDEST PUSH2 0x4D9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 DUP3 SUB PUSH2 0x4D32 PUSH2 0x4C56 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP5 PUSH2 0x40BA JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH4 0xFFFFFFFF AND DUP4 PUSH4 0xFFFFFFFF AND GT ISZERO DUP1 ISZERO PUSH2 0x4DDE JUMPI POP DUP4 PUSH4 0xFFFFFFFF AND DUP3 PUSH4 0xFFFFFFFF AND GT ISZERO JUMPDEST ISZERO PUSH2 0x4DFA JUMPI DUP2 PUSH4 0xFFFFFFFF AND DUP4 PUSH4 0xFFFFFFFF AND GT ISZERO SWAP1 POP PUSH2 0x32D8 JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH4 0xFFFFFFFF AND DUP5 PUSH4 0xFFFFFFFF AND GT PUSH2 0x4E21 JUMPI DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0x1 PUSH1 0x20 SHL ADD PUSH2 0x4E29 JUMP JUMPDEST DUP4 PUSH4 0xFFFFFFFF AND JUMPDEST PUSH5 0xFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 DUP6 PUSH4 0xFFFFFFFF AND DUP5 PUSH4 0xFFFFFFFF AND GT PUSH2 0x4E59 JUMPI DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0x1 PUSH1 0x20 SHL ADD PUSH2 0x4E61 JUMP JUMPDEST DUP4 PUSH4 0xFFFFFFFF AND JUMPDEST PUSH5 0xFFFFFFFFFF AND SWAP1 SWAP2 GT ISZERO SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x4E7D PUSH2 0x54F1 JUMP JUMPDEST PUSH2 0x4E85 PUSH2 0x54F1 JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH2 0xFFFF AND DUP6 PUSH1 0x1 ADD PUSH2 0xFFFF AND DUP2 PUSH2 0x4E9B JUMPI INVALID JUMPDEST MOD PUSH2 0xFFFF AND SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP6 PUSH2 0xFFFF AND DUP4 ADD SUB SWAP1 POP PUSH1 0x0 JUMPDEST POP PUSH1 0x2 DUP2 DUP4 ADD DIV DUP10 PUSH2 0xFFFF DUP8 AND DUP3 DUP2 PUSH2 0x4EC8 JUMPI INVALID JUMPDEST MOD PUSH2 0xFFFF DUP2 LT PUSH2 0x4ED4 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE SWAP3 SWAP1 SWAP2 ADD SLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0x20 SHL DUP2 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x1 PUSH1 0x58 SHL DUP3 DIV AND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xFF PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP2 DIV AND ISZERO ISZERO PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE SWAP1 SWAP6 POP PUSH2 0x4F3E JUMPI DUP1 PUSH1 0x1 ADD SWAP3 POP PUSH2 0x4EB3 JUMP JUMPDEST DUP10 DUP7 PUSH2 0xFFFF AND DUP3 PUSH1 0x1 ADD DUP2 PUSH2 0x4F4F JUMPI INVALID JUMPDEST MOD PUSH2 0xFFFF DUP2 LT PUSH2 0x4F5B JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE SWAP3 SWAP1 SWAP2 ADD SLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0x20 SHL DUP2 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x1 PUSH1 0x58 SHL DUP3 DIV AND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xFF PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP2 DIV AND ISZERO ISZERO PUSH1 0x60 DUP3 ADD MSTORE DUP6 MLOAD SWAP1 SWAP5 POP PUSH1 0x0 SWAP1 PUSH2 0x4FC5 SWAP1 DUP12 SWAP1 DUP12 PUSH2 0x4DB4 JUMP JUMPDEST SWAP1 POP DUP1 DUP1 ISZERO PUSH2 0x4FDE JUMPI POP PUSH2 0x4FDE DUP11 DUP11 DUP8 PUSH1 0x0 ADD MLOAD PUSH2 0x4DB4 JUMP JUMPDEST ISZERO PUSH2 0x4FE9 JUMPI POP PUSH2 0x5006 JUMP JUMPDEST DUP1 PUSH2 0x4FF9 JUMPI PUSH1 0x1 DUP3 SUB SWAP3 POP PUSH2 0x5000 JUMP JUMPDEST DUP2 PUSH1 0x1 ADD SWAP4 POP JUMPDEST POP PUSH2 0x4EB3 JUMP JUMPDEST POP POP POP SWAP6 POP SWAP6 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP11 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP13 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP3 PUSH2 0x503E DUP3 DUP14 PUSH2 0x352B JUMP JUMPDEST SWAP1 POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT ISZERO PUSH2 0x508C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4C4F PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 DUP2 AND ISZERO SWAP1 DUP3 AND ISZERO DUP2 EQ ISZERO SWAP5 POP ISZERO PUSH2 0x5131 JUMPI DUP13 PUSH1 0x2 SIGNEXTEND DUP15 PUSH1 0x2 SIGNEXTEND SGT PUSH2 0x5119 JUMPI PUSH1 0x1 DUP4 ADD DUP12 SWAP1 SSTORE PUSH1 0x2 DUP4 ADD DUP11 SWAP1 SSTORE PUSH1 0x3 DUP4 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x38 SHL PUSH1 0x1 PUSH1 0xD8 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x38 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND MUL OR PUSH7 0xFFFFFFFFFFFFFF NOT AND PUSH7 0xFFFFFFFFFFFFFF PUSH1 0x6 DUP12 SWAP1 SIGNEXTEND AND OR PUSH4 0xFFFFFFFF PUSH1 0xD8 SHL NOT AND PUSH1 0x1 PUSH1 0xD8 SHL PUSH4 0xFFFFFFFF DUP11 AND MUL OR SWAP1 SSTORE JUMPDEST PUSH1 0x3 DUP4 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB AND PUSH1 0x1 PUSH1 0xF8 SHL OR SWAP1 SSTORE JUMPDEST DUP3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 AND OR DUP4 SSTORE DUP6 PUSH2 0x517A JUMPI DUP3 SLOAD PUSH2 0x5175 SWAP1 PUSH2 0x5170 SWAP1 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0xF SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 DUP16 SWAP1 SIGNEXTEND PUSH2 0x3219 JUMP JUMPDEST PUSH2 0x3E69 JUMP JUMPDEST PUSH2 0x519B JUMP JUMPDEST DUP3 SLOAD PUSH2 0x519B SWAP1 PUSH2 0x5170 SWAP1 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0xF SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 DUP16 SWAP1 SIGNEXTEND PUSH2 0x31FD JUMP JUMPDEST DUP4 SLOAD PUSH1 0xF SWAP2 SWAP1 SWAP2 SIGNEXTEND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 DUP2 AND PUSH1 0x1 PUSH1 0x80 SHL MUL SWAP2 AND OR SWAP1 SWAP3 SSTORE POP SWAP1 SWAP13 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x2 SIGNEXTEND DUP3 PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x51DB JUMPI INVALID JUMPDEST SMOD PUSH1 0x2 SIGNEXTEND ISZERO PUSH2 0x51E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x5204 DUP4 PUSH1 0x2 SIGNEXTEND DUP6 PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x51FE JUMPI INVALID JUMPDEST SDIV PUSH2 0x43C7 JUMP JUMPDEST PUSH1 0x1 SWAP2 DUP3 SIGNEXTEND DUP3 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP8 SWAP1 SWAP8 MSTORE PUSH1 0x40 SWAP1 SWAP7 KECCAK256 DUP1 SLOAD PUSH1 0xFF SWAP1 SWAP8 AND SWAP2 SWAP1 SWAP2 SHL SWAP1 SWAP6 XOR SWAP1 SWAP5 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP6 DUP2 SIGNEXTEND DUP1 DUP3 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP10 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP9 DUP6 SIGNEXTEND DUP6 SIGNEXTEND DUP4 MSTORE SWAP1 DUP3 KECCAK256 SWAP2 SWAP4 DUP5 SWAP4 SWAP2 SWAP3 SWAP2 DUP5 SWAP2 DUP3 SWAP2 SWAP1 DUP11 SWAP1 SIGNEXTEND SLT PUSH2 0x5278 JUMPI POP POP PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH2 0x528B JUMP JUMPDEST DUP4 PUSH1 0x1 ADD SLOAD DUP9 SUB SWAP2 POP DUP4 PUSH1 0x2 ADD SLOAD DUP8 SUB SWAP1 POP JUMPDEST PUSH1 0x0 DUP1 DUP12 PUSH1 0x2 SIGNEXTEND DUP12 PUSH1 0x2 SIGNEXTEND SLT ISZERO PUSH2 0x52AD JUMPI POP POP PUSH1 0x1 DUP4 ADD SLOAD PUSH1 0x2 DUP5 ADD SLOAD PUSH2 0x52C0 JUMP JUMPDEST DUP5 PUSH1 0x1 ADD SLOAD DUP11 SUB SWAP2 POP DUP5 PUSH1 0x2 ADD SLOAD DUP10 SUB SWAP1 POP JUMPDEST SWAP3 SWAP1 SWAP9 SUB SWAP8 SWAP1 SWAP8 SUB SWAP12 SWAP7 SWAP1 SWAP6 SUB SWAP5 SWAP1 SWAP5 SUB SWAP9 POP SWAP4 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE DUP6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x1 DUP8 ADD SLOAD PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x2 DUP8 ADD SLOAD SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x3 DUP7 ADD SLOAD DUP1 DUP4 AND PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV SWAP1 SWAP2 AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0xF DUP6 SWAP1 SIGNEXTEND PUSH2 0x537D JUMPI DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x5375 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4E5 PUSH1 0xF4 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH2 0x538C JUMP JUMPDEST DUP2 MLOAD PUSH2 0x5389 SWAP1 DUP7 PUSH2 0x352B JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x0 PUSH2 0x53B0 DUP4 PUSH1 0x20 ADD MLOAD DUP7 SUB DUP5 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0x322F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x53D6 DUP5 PUSH1 0x40 ADD MLOAD DUP7 SUB DUP6 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0x322F JUMP JUMPDEST SWAP1 POP DUP7 PUSH1 0xF SIGNEXTEND PUSH1 0x0 EQ PUSH2 0x53FD JUMPI DUP8 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP5 AND OR DUP9 SSTORE JUMPDEST PUSH1 0x1 DUP9 ADD DUP7 SWAP1 SSTORE PUSH1 0x2 DUP9 ADD DUP6 SWAP1 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 AND ISZERO ISZERO DUP1 PUSH2 0x542B JUMPI POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT JUMPDEST ISZERO PUSH2 0x5469 JUMPI PUSH1 0x3 DUP9 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP2 DUP3 AND DUP6 ADD DUP3 AND OR DUP1 DUP3 AND PUSH1 0x1 PUSH1 0x80 SHL SWAP2 DUP3 SWAP1 DIV DUP4 AND DUP6 ADD SWAP1 SWAP3 AND MUL OR SWAP1 SSTORE JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 DUP3 KECCAK256 DUP3 DUP2 SSTORE PUSH1 0x1 DUP2 ADD DUP4 SWAP1 SSTORE SWAP1 DUP2 ADD DUP3 SWAP1 SSTORE PUSH1 0x3 ADD SSTORE JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x2B42 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xE0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xA0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xC0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC 0x1F SWAP4 DUP8 JUMPDEST 0xF6 SWAP12 0xD8 0x23 PUSH13 0xED6FA61DB810CF06B5C548147 EXP 0xC7 0xA6 BALANCE 0xEB 0x4E NUMBER 0xC8 SLT PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP4 0xA7 0xAE LOG0 0xDD OR JUMPI 0xBC SWAP10 0x24 SLT PUSH5 0xE80FAEAC54 0xE DUP10 PUSH13 0xF901842457B186425E3E809964 PUSH20 0x6F6C63430007060033C66A3FDF07232CDD185FEB 0xCC PUSH6 0x79D408C241B4 PUSH27 0xE2F9907D84BE655141EEAECC000000000000000000000000000000 ", - "sourceMap": "344:2503:4:-:0;;;750:349;;;;;;;;;-1:-1:-1;591:4:3;572:24;;;;774:5:4;:18;;-1:-1:-1;;;;;;774:18:4;782:10;774:18;;;;;;807:36;;774:5;;807:36;;774:5;;807:36;875:3;854:25;;;;:20;:25;;;:30;;-1:-1:-1;;854:30:4;882:2;854:30;;;;;;:25;899;882:2;;875:3;-1:-1:-1;;;;;;;;;;;899:25:4;;955:4;934:26;;;;:20;:26;;;:31;;-1:-1:-1;;934:31:4;963:2;934:31;;;;;;:26;980;963:2;;955:4;-1:-1:-1;;;;;;;;;;;980:26:4;;1037:5;1016:27;;;;:20;:27;;;:33;;-1:-1:-1;;1016:33:4;1046:3;1016:33;;;;;;:27;1064:28;1046:3;;1037:5;-1:-1:-1;;;;;;;;;;;1064:28:4;;344:2503;;;;;;;;;;;" - }, - "deployedBytecode": { - "generatedSources": [], - "immutableReferences": { - "702": [ - { - "length": 32, - "start": 1361 - } - ] - }, - "linkReferences": {}, - "object": "608060405234801561001057600080fd5b506004361061007d5760003560e01c8063890357301161005b578063890357301461013b5780638a7c195f146101855780638da5cb5b146101b0578063a1671295146101b85761007d565b806313af4035146100825780631698ee82146100aa57806322afcccb14610102575b600080fd5b6100a86004803603602081101561009857600080fd5b50356001600160a01b03166101f4565b005b6100e6600480360360608110156100c057600080fd5b5080356001600160a01b03908116916020810135909116906040013562ffffff16610267565b604080516001600160a01b039092168252519081900360200190f35b6101246004803603602081101561011857600080fd5b503562ffffff16610293565b6040805160029290920b8252519081900360200190f35b6101436102a8565b604080516001600160a01b0396871681529486166020860152929094168383015262ffffff16606083015260029290920b608082015290519081900360a00190f35b6100a86004803603604081101561019b57600080fd5b5062ffffff813516906020013560020b6102de565b6100e66103a1565b6100e6600480360360608110156101ce57600080fd5b5080356001600160a01b03908116916020810135909116906040013562ffffff166103b0565b6003546001600160a01b0316331461020b57600080fd5b6003546040516001600160a01b038084169216907fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c90600090a3600380546001600160a01b0319166001600160a01b0392909216919091179055565b60056020908152600093845260408085208252928452828420905282529020546001600160a01b031681565b60046020526000908152604090205460020b81565b600054600154600280546001600160a01b03938416939283169281169162ffffff600160a01b83041691600160b81b9004900b85565b6003546001600160a01b031633146102f557600080fd5b620f42408262ffffff161061030957600080fd5b60008160020b13801561032057506140008160020b125b61032957600080fd5b62ffffff8216600090815260046020526040902054600290810b900b1561034f57600080fd5b62ffffff828116600081815260046020526040808220805462ffffff1916600287900b958616179055517fc66a3fdf07232cdd185febcc6579d408c241b47ae2f9907d84be655141eeaecc9190a35050565b6003546001600160a01b031681565b60006103ba610546565b826001600160a01b0316846001600160a01b031614156103d957600080fd5b600080846001600160a01b0316866001600160a01b0316106103fc5784866103ff565b85855b90925090506001600160a01b03821661041757600080fd5b62ffffff8416600090815260046020526040902054600290810b9081900b61043e57600080fd5b6001600160a01b0383811660009081526005602090815260408083208685168452825280832062ffffff8a168452909152902054161561047d57600080fd5b61048a308484888561057d565b6001600160a01b03808516600081815260056020818152604080842089871680865290835281852062ffffff8e168087529084528286208054988a166001600160a01b0319998a1681179091558287529484528286208787528452828620818752845294829020805490971684179096558051600289900b815291820192909252815195995091947f783cca1c0412dd0d695e784568c96da2e9c22ff989357a2e8b1d9b2b4e6b71189281900390910190a45050509392505050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461057b57600080fd5b565b6040805160a0810182526001600160a01b03878116808352878216602080850182905292881684860181905262ffffff888116606080880182905260028a810b6080998a01819052600080546001600160a01b03199081169099178155600180548a16891790558254909816861762ffffff60a01b1916600160a01b85021762ffffff60b81b1916600160b81b91830b9095160293909317909255875180870194909452838801929092528281019190915285518083039091018152930193849052825192909101919091209091610654906106ab565b8190604051809103906000f5905080158015610674573d6000803e3d6000fd5b50600080546001600160a01b0319908116909155600180549091169055600280546001600160d01b03191690559695505050505050565b615798806106b98339019056fe6101606040523480156200001257600080fd5b503060601b60805260408051630890357360e41b81529051600091339163890357309160048082019260a092909190829003018186803b1580156200005657600080fd5b505afa1580156200006b573d6000803e3d6000fd5b505050506040513d60a08110156200008257600080fd5b508051602080830151604084015160608086015160809096015160e896871b6001600160e81b0319166101005291811b6001600160601b031990811660e05292811b831660c0529390931b1660a052600282810b900b90921b610120529150620000f79082906200010f811b62002adb17901c565b60801b6001600160801b03191661014052506200017d565b60008082600281900b620d89e719816200012557fe5b05029050600083600281900b620d89e8816200013d57fe5b0502905060008460020b83830360020b816200015557fe5b0560010190508062ffffff166001600160801b038016816200017357fe5b0495945050505050565b60805160601c60a05160601c60c05160601c60e05160601c6101005160e81c6101205160e81c6101405160801c61554e6200024a60003980611fab5280614a4d5280614a84525080610bd852806128975280614ab85280614aea525080610cc7528061198852806119bf52806128df5250806111855280611a425280611eb152806123e652806128bb5280613d7c5250806108aa52806112b35280611a115280611e4b52806123605280613c33525080612038528061221f5280612873525080612b52525061554e6000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c806370cf754a116100de578063c45a015511610097578063ddca3f4311610071578063ddca3f43146107d8578063f3058399146107f8578063f30dba9314610800578063f637731d146108825761018e565b8063c45a0155146107a9578063d0c93a7c146107b1578063d21220a7146107d05761018e565b806370cf754a146105a05780638206a4d1146105a857806385b66729146105d0578063883bdbfd1461060d578063a34123a714610714578063a38807f21461074e5761018e565b80633850c7bd1161014b578063490e6cbc11610125578063490e6cbc1461044c5780634f1eb3d8146104d6578063514ea4bf146105275780635339c296146105805761018e565b80633850c7bd146103395780633c8a7d8d1461039257806346141319146104325761018e565b80630dfe168114610193578063128acb08146101b75780631a686502146102645780631ad8b03b14610288578063252c09d7146102bf57806332148f6714610316575b600080fd5b61019b6108a8565b604080516001600160a01b039092168252519081900360200190f35b61024b600480360360a08110156101cd57600080fd5b6001600160a01b0382358116926020810135151592604082013592606083013516919081019060a081016080820135600160201b81111561020d57600080fd5b82018360208201111561021f57600080fd5b803590602001918460018302840111600160201b8311171561024057600080fd5b5090925090506108cc565b6040805192835260208301919091528051918290030190f35b61026c61146b565b604080516001600160801b039092168252519081900360200190f35b61029061147a565b60405180836001600160801b03168152602001826001600160801b031681526020019250505060405180910390f35b6102dc600480360360208110156102d557600080fd5b5035611494565b6040805163ffffffff909516855260069390930b60208501526001600160a01b039091168383015215156060830152519081900360800190f35b6103376004803603602081101561032c57600080fd5b503561ffff166114d9565b005b6103416115d3565b604080516001600160a01b03909816885260029690960b602088015261ffff9485168787015292841660608701529216608085015260ff90911660a0840152151560c0830152519081900360e00190f35b61024b600480360360a08110156103a857600080fd5b6001600160a01b03823516916020810135600290810b92604083013590910b916001600160801b036060820135169181019060a081016080820135600160201b8111156103f457600080fd5b82018360208201111561040657600080fd5b803590602001918460018302840111600160201b8311171561042757600080fd5b509092509050611623565b61043a6118df565b60408051918252519081900360200190f35b6103376004803603608081101561046257600080fd5b6001600160a01b038235169160208101359160408201359190810190608081016060820135600160201b81111561049857600080fd5b8201836020820111156104aa57600080fd5b803590602001918460018302840111600160201b831117156104cb57600080fd5b5090925090506118e5565b610290600480360360a08110156104ec57600080fd5b506001600160a01b03813516906020810135600290810b91604081013590910b906001600160801b0360608201358116916080013516611d40565b6105446004803603602081101561053d57600080fd5b5035611f5a565b604080516001600160801b0396871681526020810195909552848101939093529084166060840152909216608082015290519081900360a00190f35b61043a6004803603602081101561059657600080fd5b503560010b611f97565b61026c611fa9565b610337600480360360408110156105be57600080fd5b5060ff81358116916020013516611fcd565b610290600480360360608110156105e657600080fd5b506001600160a01b03813516906001600160801b03602082013581169160400135166121b1565b61067b6004803603602081101561062357600080fd5b810190602081018135600160201b81111561063d57600080fd5b82018360208201111561064f57600080fd5b803590602001918460208302840111600160201b8311171561067057600080fd5b50909250905061247e565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156106bf5781810151838201526020016106a7565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156106fe5781810151838201526020016106e6565b5050505090500194505050505060405180910390f35b61024b6004803603606081101561072a57600080fd5b508035600290810b91602081013590910b90604001356001600160801b031661250b565b6107786004803603604081101561076457600080fd5b508035600290810b9160200135900b612682565b6040805160069490940b84526001600160a01b03909216602084015263ffffffff1682820152519081900360600190f35b61019b612871565b6107b9612895565b6040805160029290920b8252519081900360200190f35b61019b6128b9565b6107e06128dd565b6040805162ffffff9092168252519081900360200190f35b61043a612901565b6108206004803603602081101561081657600080fd5b503560020b612907565b604080516001600160801b039099168952600f9790970b602089015287870195909552606087019390935260069190910b60808601526001600160a01b031660a085015263ffffffff1660c0840152151560e083015251908190036101000190f35b6103376004803603602081101561089857600080fd5b50356001600160a01b0316612971565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806108d7612b47565b8561090e576040805162461bcd60e51b8152602060048201526002602482015261415360f01b604482015290519081900360640190fd5b6040805160e0810182526000546001600160a01b0381168252600160a01b8104600290810b810b900b602083015261ffff600160b81b8204811693830193909352600160c81b810483166060830152600160d81b8104909216608082015260ff600160e81b8304811660a0830152600160f01b909204909116151560c082018190526109c7576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b87610a125780600001516001600160a01b0316866001600160a01b0316118015610a0d575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038716105b610a44565b80600001516001600160a01b0316866001600160a01b0316108015610a4457506401000276a36001600160a01b038716115b610a7b576040805162461bcd60e51b815260206004820152600360248201526214d41360ea1b604482015290519081900360640190fd5b6000805460ff60f01b191681556040805160c08101909152808a610aaa5760048460a0015160ff16901c610abd565b60108460a0015160ff1681610abb57fe5b065b60ff1681526004546001600160801b03166020820152604001610ade612b7e565b63ffffffff168152602001600060060b815260200160006001600160a01b031681526020016000151581525090506000808913905060006040518060e001604052808b81526020016000815260200185600001516001600160a01b03168152602001856020015160020b81526020018c610b5a57600254610b5e565b6001545b815260200160006001600160801b0316815260200184602001516001600160801b031681525090505b805115801590610bad5750886001600160a01b031681604001516001600160a01b031614155b15610f7757610bba6154b5565b60408201516001600160a01b031681526060820151610bfd906006907f00000000000000000000000000000000000000000000000000000000000000008f612b82565b15156040830152600290810b810b60208301819052620d89e719910b1215610c2e57620d89e7196020820152610c4d565b6020810151620d89e860029190910b1315610c4d57620d89e860208201525b610c5a8160200151612cc4565b6001600160a01b031660608201526040820151610ceb908d610c94578b6001600160a01b031683606001516001600160a01b031611610cae565b8b6001600160a01b031683606001516001600160a01b0316105b610cbc578260600151610cbe565b8b5b60c085015185517f0000000000000000000000000000000000000000000000000000000000000000612ff5565b60c085015260a084015260808301526001600160a01b031660408301528215610d4d57610d218160c001518260800151016131e7565b825103825260a0810151610d4390610d38906131e7565b6020840151906131fd565b6020830152610d88565b610d5a8160a001516131e7565b825101825260c08101516080820151610d8291610d7791016131e7565b602084015190613219565b60208301525b835160ff1615610dce576000846000015160ff168260c0015181610da857fe5b60c0840180519290910491829003905260a0840180519091016001600160801b03169052505b60c08201516001600160801b031615610e0d57610e018160c00151600160801b8460c001516001600160801b031661322f565b60808301805190910190525b80606001516001600160a01b031682604001516001600160a01b03161415610f3657806040015115610f0d578360a00151610e9757610e75846040015160008760200151886040015188602001518a6060015160086132df909695949392919063ffffffff16565b6001600160a01b03166080860152600690810b900b6060850152600160a08501525b6000610ee382602001518e610eae57600154610eb4565b84608001515b8f610ec3578560800151610ec7565b6002545b608089015160608a015160408b01516005959493929190613471565b90508c15610eef576000035b610efd8360c001518261352b565b6001600160801b031660c0840152505b8b610f1c578060200151610f25565b60018160200151035b600290810b900b6060830152610f71565b80600001516001600160a01b031682604001516001600160a01b031614610f7157610f6482604001516135e1565b600290810b900b60608301525b50610b87565b836020015160020b816060015160020b1461104557600080610fc586604001518660400151886020015188602001518a606001518b6080015160086138fc909695949392919063ffffffff16565b604085015160608601516000805461ffff60c81b1916600160c81b61ffff958616021761ffff60b81b1916600160b81b95909416949094029290921762ffffff60a01b1916600160a01b62ffffff60029490940b9390931692909202919091176001600160a01b0319166001600160a01b039091161790555061106a9050565b6040810151600080546001600160a01b0319166001600160a01b039092169190911790555b8060c001516001600160801b031683602001516001600160801b0316146110b05760c0810151600480546001600160801b0319166001600160801b039092169190911790555b8a1561110057608081015160015560a08101516001600160801b0316156110fb5760a0810151600380546001600160801b031981166001600160801b03918216909301169190911790555b611146565b608081015160025560a08101516001600160801b0316156111465760a0810151600380546001600160801b03808216600160801b92839004821690940116029190911790555b8115158b15151461115f57602081015181518b0361116c565b80600001518a0381602001515b90965094508a156112a55760008512156111ae576111ae7f00000000000000000000000000000000000000000000000000000000000000008d87600003613a97565b60006111b8613be5565b9050336001600160a01b031663fa461e3388888c8c6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561123c57600080fd5b505af1158015611250573d6000803e3d6000fd5b5050505061125c613be5565b6112668289613d1e565b111561129f576040805162461bcd60e51b815260206004820152600360248201526249494160e81b604482015290519081900360640190fd5b506113cf565b60008612156112dc576112dc7f00000000000000000000000000000000000000000000000000000000000000008d88600003613a97565b60006112e6613d2e565b9050336001600160a01b031663fa461e3388888c8c6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561136a57600080fd5b505af115801561137e573d6000803e3d6000fd5b5050505061138a613d2e565b6113948288613d1e565b11156113cd576040805162461bcd60e51b815260206004820152600360248201526249494160e81b604482015290519081900360640190fd5b505b60408082015160c083015160608085015184518b8152602081018b90526001600160a01b03948516818701526001600160801b039093169183019190915260020b60808201529151908e169133917fc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca679181900360a00190a350506000805460ff60f01b1916600160f01b17905550919890975095505050505050565b6004546001600160801b031681565b6003546001600160801b0380821691600160801b90041682565b60088161ffff81106114a557600080fd5b015463ffffffff81169150600160201b810460060b90600160581b81046001600160a01b031690600160f81b900460ff1684565b600054600160f01b900460ff1661151d576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b19169055611532612b47565b60008054600160d81b900461ffff169061154e60088385613dc6565b6000805461ffff808416600160d81b810261ffff60d81b19909316929092179092559192508316146115bb576040805161ffff80851682528316602082015281517fac49e518f90a358f652e4400164f05a5d8f7e35e7747279bc3a93dbf584e125a929181900390910190a15b50506000805460ff60f01b1916600160f01b17905550565b6000546001600160a01b03811690600160a01b810460020b9061ffff600160b81b8204811691600160c81b8104821691600160d81b8204169060ff600160e81b8204811691600160f01b90041687565b600080548190600160f01b900460ff1661166a576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b191690556001600160801b03851661168a57600080fd5b6000806116d860405180608001604052808c6001600160a01b031681526020018b60020b81526020018a60020b81526020016116ce8a6001600160801b0316613e69565b600f0b9052613e7a565b925092505081935080925060008060008611156116fa576116f7613be5565b91505b841561170b57611708613d2e565b90505b336001600160a01b031663d348799787878b8b6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561178d57600080fd5b505af11580156117a1573d6000803e3d6000fd5b5050505060008611156117f8576117b6613be5565b6117c08388613d1e565b11156117f8576040805162461bcd60e51b815260206004820152600260248201526104d360f41b604482015290519081900360640190fd5b841561184857611806613d2e565b6118108287613d1e565b1115611848576040805162461bcd60e51b81526020600482015260026024820152614d3160f01b604482015290519081900360640190fd5b8960020b8b60020b8d6001600160a01b03167f7a53080ba414158be7ec69b987b5fb7d07dee101fe85488f0853ae16239d0bde338d8b8b60405180856001600160a01b03168152602001846001600160801b0316815260200183815260200182815260200194505050505060405180910390a450506000805460ff60f01b1916600160f01b17905550919890975095505050505050565b60025481565b600054600160f01b900460ff16611929576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b1916905561193e612b47565b6004546001600160801b031680611980576040805162461bcd60e51b81526020600482015260016024820152601360fa1b604482015290519081900360640190fd5b60006119b5867f000000000000000000000000000000000000000000000000000000000000000062ffffff16620f42406140ba565b905060006119ec867f000000000000000000000000000000000000000000000000000000000000000062ffffff16620f42406140ba565b905060006119f8613be5565b90506000611a04613d2e565b90508815611a3757611a377f00000000000000000000000000000000000000000000000000000000000000008b8b613a97565b8715611a6857611a687f00000000000000000000000000000000000000000000000000000000000000008b8a613a97565b336001600160a01b031663e9cbafb085858a8a6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015611aea57600080fd5b505af1158015611afe573d6000803e3d6000fd5b505050506000611b0c613be5565b90506000611b18613d2e565b905081611b258588613d1e565b1115611b5d576040805162461bcd60e51b8152602060048201526002602482015261046360f41b604482015290519081900360640190fd5b80611b688487613d1e565b1115611ba0576040805162461bcd60e51b8152602060048201526002602482015261463160f01b604482015290519081900360640190fd5b8382038382038115611c2f5760008054600160e81b9004600f16908115611bd3578160ff168481611bcd57fe5b04611bd6565b60005b90506001600160801b03811615611c0957600380546001600160801b038082168401166001600160801b03199091161790555b611c23818503600160801b8d6001600160801b031661322f565b60018054909101905550505b8015611cba5760008054600160e81b900460041c600f16908115611c5f578160ff168381611c5957fe5b04611c62565b60005b90506001600160801b03811615611c9457600380546001600160801b03600160801b8083048216850182160291161790555b611cae818403600160801b8d6001600160801b031661322f565b60028054909101905550505b8d6001600160a01b0316336001600160a01b03167fbdbdb71d7860376ba52b25a5028beea23581364a40522f6bcfb86bb1f2dca6338f8f86866040518085815260200184815260200183815260200182815260200194505050505060405180910390a350506000805460ff60f01b1916600160f01b179055505050505050505050505050565b600080548190600160f01b900460ff16611d87576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b19168155611da160073389896140f4565b60038101549091506001600160801b0390811690861611611dc25784611dd1565b60038101546001600160801b03165b60038201549093506001600160801b03600160801b909104811690851611611df95783611e0f565b6003810154600160801b90046001600160801b03165b91506001600160801b03831615611e74576003810180546001600160801b031981166001600160801b03918216869003821617909155611e74907f0000000000000000000000000000000000000000000000000000000000000000908a908616613a97565b6001600160801b03821615611eda576003810180546001600160801b03600160801b808304821686900382160291811691909117909155611eda907f0000000000000000000000000000000000000000000000000000000000000000908a908516613a97565b604080516001600160a01b038a1681526001600160801b0380861660208301528416818301529051600288810b92908a900b9133917f70935338e69775456a85ddef226c395fb668b63fa0115f5f20610b388e6ca9c0919081900360600190a4506000805460ff60f01b1916600160f01b17905590969095509350505050565b60076020526000908152604090208054600182015460028301546003909301546001600160801b0392831693919281811691600160801b90041685565b60066020526000908152604090205481565b7f000000000000000000000000000000000000000000000000000000000000000081565b600054600160f01b900460ff16612011576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b1916905560408051638da5cb5b60e01b815290516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691638da5cb5b916004808301926020929190829003018186803b15801561207e57600080fd5b505afa158015612092573d6000803e3d6000fd5b505050506040513d60208110156120a857600080fd5b50516001600160a01b031633146120be57600080fd5b60ff821615806120e1575060048260ff16101580156120e15750600a8260ff1611155b801561210b575060ff8116158061210b575060048160ff161015801561210b5750600a8160ff1611155b61211457600080fd5b60008054610ff0600484901b16840160ff908116600160e81b90810260ff60e81b19841617909355919004167f973d8d92bb299f4af6ce49b52a8adb85ae46b9f214c4c4fc06ac77401237b1336010826040805160ff9390920683168252600f600486901c16602083015286831682820152918516606082015290519081900360800190a150506000805460ff60f01b1916600160f01b17905550565b600080548190600160f01b900460ff166121f8576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b1916905560408051638da5cb5b60e01b815290516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691638da5cb5b916004808301926020929190829003018186803b15801561226557600080fd5b505afa158015612279573d6000803e3d6000fd5b505050506040513d602081101561228f57600080fd5b50516001600160a01b031633146122a557600080fd5b6003546001600160801b03908116908516116122c157836122ce565b6003546001600160801b03165b6003549092506001600160801b03600160801b9091048116908416116122f45782612308565b600354600160801b90046001600160801b03165b90506001600160801b03821615612389576003546001600160801b038381169116141561233757600019909101905b600380546001600160801b031981166001600160801b03918216859003821617909155612389907f00000000000000000000000000000000000000000000000000000000000000009087908516613a97565b6001600160801b0381161561240f576003546001600160801b03828116600160801b9092041614156123ba57600019015b600380546001600160801b03600160801b80830482168590038216029181169190911790915561240f907f00000000000000000000000000000000000000000000000000000000000000009087908416613a97565b604080516001600160801b0380851682528316602082015281516001600160a01b0388169233927f596b573906218d3411850b26a6b437d6c4522fdb43d2d2386263f86d50b8b151929081900390910190a36000805460ff60f01b1916600160f01b1790559094909350915050565b606080612489612b47565b612500612494612b7e565b858580806020026020016040519081016040528093929190818152602001838360200280828437600092018290525054600454600896959450600160a01b820460020b935061ffff600160b81b8304811693506001600160801b0390911691600160c81b900416614158565b915091509250929050565b600080548190600160f01b900460ff16612552576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b1916815560408051608081018252338152600288810b602083015287900b91810191909152819081906125ab906060810161259e6001600160801b038a16613e69565b600003600f0b9052613e7a565b92509250925081600003945080600003935060008511806125cc5750600084115b1561260b576003830180546001600160801b038082168089018216600160801b93849004831689019092169092029091176001600160801b0319161790555b604080516001600160801b0388168152602081018790528082018690529051600289810b92908b900b9133917f0c396cd989a39f4459b5fa1aed6a9a8dcdbc45908acfd67e028cd568da98982c919081900360600190a450506000805460ff60f01b1916600160f01b179055509094909350915050565b600080600061268f612b47565b61269985856142b2565b600285810b810b60009081526005602052604080822087840b90930b825281206003830154600681900b93600160381b82046001600160a01b0316928492600160d81b810463ffffffff169284929091600160f81b900460ff16806126fd57600080fd5b6003820154600681900b9850600160381b81046001600160a01b03169650600160d81b810463ffffffff169450600160f81b900460ff168061273e57600080fd5b50506040805160e0810182526000546001600160a01b0381168252600160a01b8104600290810b810b810b6020840181905261ffff600160b81b8404811695850195909552600160c81b830485166060850152600160d81b8304909416608084015260ff600160e81b8304811660a0850152600160f01b909204909116151560c08301529093508e810b91900b121590506127e75750939094039650900393509003905061286a565b8a60020b816020015160020b121561285b576000612803612b7e565b6020830151604084015160045460608601519394506000938493612839936008938893879392916001600160801b0316906132df565b9a9003989098039b50509490960392909203965090910303925061286a915050565b50949093039650039350900390505b9250925092565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60015481565b60056020526000908152604090208054600182015460028301546003909301546001600160801b03831693600160801b909304600f0b9290600681900b90600160381b81046001600160a01b031690600160d81b810463ffffffff1690600160f81b900460ff1688565b6000546001600160a01b0316156129b4576040805162461bcd60e51b8152602060048201526002602482015261414960f01b604482015290519081900360640190fd5b60006129bf826135e1565b90506000806129d76129cf612b7e565b60089061437b565b6040805160e0810182526001600160a01b038816808252600288810b6020808501829052600085870181905261ffff898116606088018190529089166080880181905260a08801839052600160c0909801979097528154600160f01b6001600160a01b0319909116871762ffffff60a01b1916600160a01b62ffffff9787900b97909716969096029590951763ffffffff60b81b1916600160c81b9091021761ffff60d81b1916600160d81b9096029590951761ffff60e81b191692909217909355835191825281019190915281519395509193507f98636036cb66a9c19a37435efc1e90142190214e8abeb821bdba3f2990dd4c9592918290030190a150505050565b60008082600281900b620d89e71981612af057fe5b05029050600083600281900b620d89e881612b0757fe5b0502905060008460020b83830360020b81612b1e57fe5b0560010190508062ffffff166001600160801b03801681612b3b57fe5b0493505050505b919050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614612b7c57600080fd5b565b4290565b60008060008460020b8660020b81612b9657fe5b05905060008660020b128015612bbd57508460020b8660020b81612bb657fe5b0760020b15155b15612bc757600019015b8315612c3c57600080612bd9836143c7565b600182810b810b600090815260208d9052604090205460ff83169190911b80016000190190811680151597509294509092509085612c1e57888360ff16860302612c31565b88612c28826143d9565b840360ff168603025b965050505050612cba565b600080612c4b836001016143c7565b91509150600060018260ff166001901b031990506000818b60008660010b60010b8152602001908152602001600020541690508060001415955085612c9d57888360ff0360ff16866001010102612cb3565b8883612ca883614478565b0360ff168660010101025b9650505050505b5094509492505050565b60008060008360020b12612cdb578260020b612ce3565b8260020b6000035b9050620d89e8811115612d21576040805162461bcd60e51b81526020600482015260016024820152601560fa1b604482015290519081900360640190fd5b600060018216612d3557600160801b612d47565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615612d7b576ffff97272373d413259a46990580e213a0260801c5b6004821615612d9a576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615612db9576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615612dd8576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615612df7576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615612e16576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615612e35576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615612e55576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615612e75576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615612e95576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615612eb5576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615612ed5576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615612ef5576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615612f15576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615612f35576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615612f56576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615612f76576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615612f95576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615612fb2576b048a170391f7dc42444e8fa20260801c5b60008460020b1315612fcd578060001981612fc957fe5b0490505b600160201b810615612fe0576001612fe3565b60005b60ff16602082901c0192505050919050565b60008080806001600160a01b03808916908a16101581871280159061307a57600061302e8989620f42400362ffffff16620f424061322f565b905082613047576130428c8c8c6001614562565b613054565b6130548b8d8c60016145dd565b9550858110613065578a9650613074565b6130718c8b8386614688565b96505b506130c4565b816130915761308c8b8b8b60006145dd565b61309e565b61309e8a8c8b6000614562565b93508388600003106130b2578995506130c4565b6130c18b8a8a600003856146d4565b95505b6001600160a01b038a8116908716148215613127578080156130e35750815b6130f9576130f4878d8c60016145dd565b6130fb565b855b9550808015613108575081155b61311e57613119878d8c6000614562565b613120565b845b9450613171565b8080156131315750815b613147576131428c888c6001614562565b613149565b855b9550808015613156575081155b61316c576131678c888c60006145dd565b61316e565b845b94505b8115801561318157508860000385115b1561318d578860000394505b8180156131ac57508a6001600160a01b0316876001600160a01b031614155b156131bb5785890393506131d8565b6131d5868962ffffff168a620f42400362ffffff166140ba565b93505b50505095509550955095915050565b6000600160ff1b82106131f957600080fd5b5090565b8082038281131560008312151461321357600080fd5b92915050565b8181018281121560008312151461321357600080fd5b6000808060001985870986860292508281109083900303905080613265576000841161325a57600080fd5b5082900490506132d8565b80841161327157600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b60008063ffffffff8716613385576000898661ffff1661ffff811061330057fe5b60408051608081018252919092015463ffffffff808216808452600160201b8304600690810b810b900b6020850152600160581b83046001600160a01b031694840194909452600160f81b90910460ff16151560608301529092508a16146133715761336e818a8988614720565b90505b806020015181604001519250925050613465565b86880360008061339a8c8c858c8c8c8c6147c3565b91509150816000015163ffffffff168363ffffffff1614156133cc578160200151826040015194509450505050613465565b805163ffffffff848116911614156133f4578060200151816040015194509450505050613465565b8151815160208085015190840151918390039286039163ffffffff80841692908516910360060b8161342257fe5b05028460200151018263ffffffff168263ffffffff1686604001518660400151036001600160a01b0316028161345457fe5b048560400151019650965050505050505b97509795505050505050565b600295860b860b60009081526020979097526040909620600181018054909503909455938301805490920390915560038201805463ffffffff600160d81b6001600160a01b03600160381b808504821690960316909402600160381b600160d81b031990921691909117600681810b90960390950b66ffffffffffffff1666ffffffffffffff199095169490941782810485169095039093160263ffffffff60d81b1990931692909217905554600160801b9004600f0b90565b60008082600f0b121561359057826001600160801b03168260000384039150816001600160801b03161061358b576040805162461bcd60e51b81526020600482015260026024820152614c5360f01b604482015290519081900360640190fd5b613213565b826001600160801b03168284019150816001600160801b03161015613213576040805162461bcd60e51b81526020600482015260026024820152614c4160f01b604482015290519081900360640190fd5b60006401000276a36001600160a01b0383161080159061361d575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038316105b613652576040805162461bcd60e51b81526020600482015260016024820152602960f91b604482015290519081900360640190fd5b640100000000600160c01b03602083901b166001600160801b03811160071b81811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c979088119617909417909217179091171717608081106136e657607f810383901c91506136f0565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d607f198f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c600160381b161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581026f028f6481ab7f045a5af012a19d003aa9198101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b146138ed57886001600160a01b03166138d182612cc4565b6001600160a01b031611156138e657816138e8565b805b6138ef565b815b9998505050505050505050565b6000806000898961ffff1661ffff811061391257fe5b60408051608081018252919092015463ffffffff808216808452600160201b8304600690810b810b900b6020850152600160581b83046001600160a01b031694840194909452600160f81b90910460ff1615156060830152909250891614156139815788859250925050613465565b8461ffff168461ffff161180156139a257506001850361ffff168961ffff16145b156139af578391506139b3565b8491505b8161ffff168960010161ffff16816139c757fe5b0692506139d681898989614720565b8a8461ffff1661ffff81106139e757fe5b825191018054602084015160408501516060909501511515600160f81b026001600160f81b036001600160a01b03909616600160581b027fff0000000000000000000000000000000000000000ffffffffffffffffffffff60069390930b66ffffffffffffff16600160201b026affffffffffffff000000001963ffffffff90971663ffffffff199095169490941795909516929092171692909217929092161790555097509795505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1781529251825160009485949389169392918291908083835b60208310613b135780518252601f199092019160209182019101613af4565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613b75576040519150601f19603f3d011682016040523d82523d6000602084013e613b7a565b606091505b5091509150818015613ba8575080511580613ba85750808060200190516020811015613ba557600080fd5b50515b613bde576040805162461bcd60e51b81526020600482015260026024820152612a2360f11b604482015290519081900360640190fd5b5050505050565b604080513060248083019190915282518083039091018152604490910182526020810180516001600160e01b03166370a0823160e01b17815291518151600093849384936001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001693919290918291908083835b60208310613c7e5780518252601f199092019160209182019101613c5f565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114613cde576040519150601f19603f3d011682016040523d82523d6000602084013e613ce3565b606091505b5091509150818015613cf757506020815110155b613d0057600080fd5b808060200190516020811015613d1557600080fd5b50519250505090565b8082018281101561321357600080fd5b604080513060248083019190915282518083039091018152604490910182526020810180516001600160e01b03166370a0823160e01b17815291518151600093849384936001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016939192909182919080838360208310613c7e5780518252601f199092019160209182019101613c5f565b6000808361ffff1611613e04576040805162461bcd60e51b81526020600482015260016024820152604960f81b604482015290519081900360640190fd5b8261ffff168261ffff1611613e1a5750816132d8565b825b8261ffff168161ffff161015613e60576001858261ffff1661ffff8110613e3f57fe5b01805463ffffffff191663ffffffff92909216919091179055600101613e1c565b50909392505050565b80600f81900b8114612b4257600080fd5b6000806000613e87612b47565b613e99846020015185604001516142b2565b6040805160e0810182526000546001600160a01b0381168252600160a01b8104600290810b810b900b602080840182905261ffff600160b81b8404811685870152600160c81b84048116606080870191909152600160d81b8504909116608086015260ff600160e81b8504811660a0870152600160f01b909404909316151560c085015288519089015194890151928901519394613f3d94919390929091906149bd565b93508460600151600f0b6000146140b257846020015160020b816020015160020b1215613f9257613f8b613f748660200151612cc4565b613f818760400151612cc4565b8760600151614b72565b92506140b2565b846040015160020b816020015160020b12156140885760045460408201516001600160801b0390911690613fe490613fc8612b7e565b60208501516060860151608087015160089493929187916138fc565b6000805461ffff60c81b1916600160c81b61ffff938416021761ffff60b81b1916600160b81b939092169290920217905581516040870151614034919061402a90612cc4565b8860600151614b72565b93506140526140468760200151612cc4565b83516060890151614bb6565b925061406281876060015161352b565b600480546001600160801b0319166001600160801b0392909216919091179055506140b2565b6140af6140988660200151612cc4565b6140a58760400151612cc4565b8760600151614bb6565b91505b509193909250565b60006140c784848461322f565b9050600082806140d357fe5b84860911156132d85760001981106140ea57600080fd5b6001019392505050565b6040805160609490941b6bffffffffffffffffffffffff1916602080860191909152600293840b60e890811b60348701529290930b90911b60378401528051808403601a018152603a90930181528251928201929092206000908152929052902090565b60608060008361ffff1611614198576040805162461bcd60e51b81526020600482015260016024820152604960f81b604482015290519081900360640190fd5b865167ffffffffffffffff811180156141b057600080fd5b506040519080825280602002602001820160405280156141da578160200160208202803683370190505b509150865167ffffffffffffffff811180156141f557600080fd5b5060405190808252806020026020018201604052801561421f578160200160208202803683370190505b50905060005b87518110156142a5576142508a8a8a848151811061423f57fe5b60200260200101518a8a8a8a6132df565b84838151811061425c57fe5b6020026020010184848151811061426f57fe5b60200260200101826001600160a01b03166001600160a01b03168152508260060b60060b81525050508080600101915050614225565b5097509795505050505050565b8060020b8260020b126142f2576040805162461bcd60e51b8152602060048201526003602482015262544c5560e81b604482015290519081900360640190fd5b620d89e719600283900b1215614335576040805162461bcd60e51b8152602060048201526003602482015262544c4d60e81b604482015290519081900360640190fd5b620d89e8600282900b1315614377576040805162461bcd60e51b815260206004820152600360248201526254554d60e81b604482015290519081900360640190fd5b5050565b6040805160808101825263ffffffff9283168082526000602083018190529282019290925260016060909101819052835463ffffffff1916909117909116600160f81b17909155908190565b60020b600881901d9161010090910790565b60008082116143e757600080fd5b600160801b82106143fa57608091821c91015b68010000000000000000821061441257604091821c91015b600160201b821061442557602091821c91015b62010000821061443757601091821c91015b610100821061444857600891821c91015b6010821061445857600491821c91015b6004821061446857600291821c91015b60028210612b4257600101919050565b600080821161448657600080fd5b5060ff6001600160801b038216156144a157607f19016144a9565b608082901c91505b67ffffffffffffffff8216156144c257603f19016144ca565b604082901c91505b63ffffffff8216156144df57601f19016144e7565b602082901c91505b61ffff8216156144fa57600f1901614502565b601082901c91505b60ff821615614514576007190161451c565b600882901c91505b600f82161561452e5760031901614536565b600482901c91505b60038216156145485760011901614550565b600282901c91505b6001821615612b425760001901919050565b6000836001600160a01b0316856001600160a01b03161115614582579293925b816145af576145aa836001600160801b03168686036001600160a01b0316600160601b61322f565b6145d2565b6145d2836001600160801b03168686036001600160a01b0316600160601b6140ba565b90505b949350505050565b6000836001600160a01b0316856001600160a01b031611156145fd579293925b600160601b600160e01b03606084901b166001600160a01b03868603811690871661462757600080fd5b8361465757866001600160a01b031661464a8383896001600160a01b031661322f565b8161465157fe5b0461467d565b61467d61466e8383896001600160a01b03166140ba565b886001600160a01b0316614be5565b979650505050505050565b600080856001600160a01b03161161469f57600080fd5b6000846001600160801b0316116146b557600080fd5b816146c7576145aa8585856001614bf0565b6145d28585856001614cd1565b600080856001600160a01b0316116146eb57600080fd5b6000846001600160801b03161161470157600080fd5b81614713576145aa8585856000614cd1565b6145d28585856000614bf0565b6147286154f1565b600085600001518503905060405180608001604052808663ffffffff1681526020018263ffffffff168660020b0288602001510160060b81526020016000856001600160801b03161161477c57600161477e565b845b6001600160801b031663ffffffff60801b608085901b168161479c57fe5b048860400151016001600160a01b0316815260200160011515815250915050949350505050565b6147cb6154f1565b6147d36154f1565b888561ffff1661ffff81106147e457fe5b60408051608081018252919092015463ffffffff8116808352600160201b8204600690810b810b900b6020840152600160581b82046001600160a01b031693830193909352600160f81b900460ff1615156060820152925061484890899089614db4565b15614880578663ffffffff16826000015163ffffffff16141561486a57613465565b8161487783898988614720565b91509150613465565b888361ffff168660010161ffff168161489557fe5b0661ffff1661ffff81106148a557fe5b60408051608081018252929091015463ffffffff81168352600160201b8104600690810b810b900b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b9091041615156060820181905290925061495a57604080516080810182528a5463ffffffff81168252600160201b8104600690810b810b900b6020830152600160581b81046001600160a01b031692820192909252600160f81b90910460ff161515606082015291505b61496988836000015189614db4565b6149a0576040805162461bcd60e51b815260206004820152600360248201526213d31160ea1b604482015290519081900360640190fd5b6149ad8989898887614e75565b9150915097509795505050505050565b60006149cc60078787876140f4565b60015460025491925090600080600f87900b15614b125760006149ed612b7e565b6000805460045492935090918291614a379160089186918591600160a01b810460020b9161ffff600160b81b83048116926001600160801b0390921691600160c81b9004166132df565b9092509050614a7160058d8b8d8b8b87898b60007f0000000000000000000000000000000000000000000000000000000000000000615013565b9450614aa860058c8b8d8b8b87898b60017f0000000000000000000000000000000000000000000000000000000000000000615013565b93508415614adc57614adc60068d7f00000000000000000000000000000000000000000000000000000000000000006151cc565b8315614b0e57614b0e60068c7f00000000000000000000000000000000000000000000000000000000000000006151cc565b5050505b600080614b2460058c8c8b8a8a615232565b9092509050614b35878a84846152de565b600089600f0b1215614b63578315614b5257614b5260058c615473565b8215614b6357614b6360058b615473565b50505050505095945050505050565b60008082600f0b12614b9857614b93614b8e85858560016145dd565b6131e7565b6145d5565b614bab614b8e85858560000360006145dd565b600003949350505050565b60008082600f0b12614bd257614b93614b8e8585856001614562565b614bab614b8e8585856000036000614562565b808204910615150190565b60008115614c635760006001600160a01b03841115614c2657614c2184600160601b876001600160801b031661322f565b614c3e565b6001600160801b038516606085901b81614c3c57fe5b045b9050614c5b614c566001600160a01b03881683613d1e565b61549f565b9150506145d5565b60006001600160a01b03841115614c9157614c8c84600160601b876001600160801b03166140ba565b614ca8565b614ca8606085901b6001600160801b038716614be5565b905080866001600160a01b031611614cbf57600080fd5b6001600160a01b0386160390506145d5565b600082614cdf5750836145d5565b600160601b600160e01b03606085901b168215614d6d576001600160a01b03861684810290858281614d0d57fe5b041415614d3e57818101828110614d3c57614d3283896001600160a01b0316836140ba565b93505050506145d5565b505b614d6482614d5f878a6001600160a01b03168681614d5857fe5b0490613d1e565b614be5565b925050506145d5565b6001600160a01b03861684810290858281614d8457fe5b04148015614d9157508082115b614d9a57600080fd5b808203614d32614c56846001600160a01b038b16846140ba565b60008363ffffffff168363ffffffff1611158015614dde57508363ffffffff168263ffffffff1611155b15614dfa578163ffffffff168363ffffffff16111590506132d8565b60008463ffffffff168463ffffffff1611614e21578363ffffffff16600160201b01614e29565b8363ffffffff165b64ffffffffff16905060008563ffffffff168463ffffffff1611614e59578363ffffffff16600160201b01614e61565b8363ffffffff165b64ffffffffff169091111595945050505050565b614e7d6154f1565b614e856154f1565b60008361ffff168560010161ffff1681614e9b57fe5b0661ffff169050600060018561ffff16830103905060005b506002818301048961ffff87168281614ec857fe5b0661ffff8110614ed457fe5b60408051608081018252929091015463ffffffff81168352600160201b8104600690810b810b900b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b90910416151560608201819052909550614f3e57806001019250614eb3565b898661ffff168260010181614f4f57fe5b0661ffff8110614f5b57fe5b60408051608081018252929091015463ffffffff81168352600160201b8104600690810b810b900b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b90910416151560608201528551909450600090614fc5908b908b614db4565b9050808015614fde5750614fde8a8a8760000151614db4565b15614fe95750615006565b80614ff957600182039250615000565b8160010193505b50614eb3565b5050509550959350505050565b60028a810b900b600090815260208c90526040812080546001600160801b03168261503e828d61352b565b9050846001600160801b0316816001600160801b0316111561508c576040805162461bcd60e51b81526020600482015260026024820152614c4f60f01b604482015290519081900360640190fd5b6001600160801b038281161590821615811415945015615131578c60020b8e60020b1361511957600183018b9055600283018a9055600383018054600160381b600160d81b031916600160381b6001600160a01b038c16021766ffffffffffffff191666ffffffffffffff60068b900b161763ffffffff60d81b1916600160d81b63ffffffff8a16021790555b6003830180546001600160f81b0316600160f81b1790555b82546001600160801b0319166001600160801b0382161783558561517a5782546151759061517090600160801b9004600f90810b810b908f900b613219565b613e69565b61519b565b825461519b9061517090600160801b9004600f90810b810b908f900b6131fd565b8354600f9190910b6001600160801b03908116600160801b0291161790925550909c9b505050505050505050505050565b8060020b8260020b816151db57fe5b0760020b156151e957600080fd5b6000806152048360020b8560020b816151fe57fe5b056143c7565b600191820b820b60009081526020979097526040909620805460ff9097169190911b90951890945550505050565b600285810b80820b60009081526020899052604080822088850b850b83529082209193849391929184918291908a900b126152785750506001820154600283015461528b565b8360010154880391508360020154870390505b6000808b60020b8b60020b12156152ad575050600183015460028401546152c0565b84600101548a0391508460020154890390505b92909803979097039b96909503949094039850939650505050505050565b6040805160a08101825285546001600160801b0390811682526001870154602083015260028701549282019290925260038601548083166060830152600160801b900490911660808201526000600f85900b61537d5781516001600160801b0316615375576040805162461bcd60e51b815260206004820152600260248201526104e560f41b604482015290519081900360640190fd5b50805161538c565b8151615389908661352b565b90505b60006153b08360200151860384600001516001600160801b0316600160801b61322f565b905060006153d68460400151860385600001516001600160801b0316600160801b61322f565b905086600f0b6000146153fd5787546001600160801b0319166001600160801b0384161788555b60018801869055600288018590556001600160801b03821615158061542b57506000816001600160801b0316115b15615469576003880180546001600160801b031981166001600160801b039182168501821617808216600160801b9182900483168501909216021790555b5050505050505050565b600290810b810b6000908152602092909252604082208281556001810183905590810182905560030155565b806001600160a01b0381168114612b4257600080fd5b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915290565b6040805160808101825260008082526020820181905291810182905260608101919091529056fea26469706673582212200c1f93875bf69bd8236c0ed6fa61db810cf06b5c5481470ac7a631eb4e43c81264736f6c63430007060033a264697066735822122093a7aea0dd1757bc99241264e80faeac540e896cf901842457b186425e3e809964736f6c63430007060033", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x89035730 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x89035730 EQ PUSH2 0x13B JUMPI DUP1 PUSH4 0x8A7C195F EQ PUSH2 0x185 JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x1B0 JUMPI DUP1 PUSH4 0xA1671295 EQ PUSH2 0x1B8 JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x13AF4035 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x1698EE82 EQ PUSH2 0xAA JUMPI DUP1 PUSH4 0x22AFCCCB EQ PUSH2 0x102 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x98 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1F4 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xE6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xC0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH3 0xFFFFFF AND PUSH2 0x267 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x124 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x118 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH3 0xFFFFFF AND PUSH2 0x293 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 SWAP3 SWAP1 SWAP3 SIGNEXTEND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x143 PUSH2 0x2A8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP7 DUP8 AND DUP2 MSTORE SWAP5 DUP7 AND PUSH1 0x20 DUP7 ADD MSTORE SWAP3 SWAP1 SWAP5 AND DUP4 DUP4 ADD MSTORE PUSH3 0xFFFFFF AND PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x2 SWAP3 SWAP1 SWAP3 SIGNEXTEND PUSH1 0x80 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 RETURN JUMPDEST PUSH2 0xA8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x19B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0xFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH1 0x2 SIGNEXTEND PUSH2 0x2DE JUMP JUMPDEST PUSH2 0xE6 PUSH2 0x3A1 JUMP JUMPDEST PUSH2 0xE6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH3 0xFFFFFF AND PUSH2 0x3B0 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x20B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0xB532073B38C83145E3E5135377A08BF9AAB55BC0FD7C1179CD4FB995D2A5159C SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 DUP3 MSTORE SWAP3 DUP5 MSTORE DUP3 DUP5 KECCAK256 SWAP1 MSTORE DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x2 SIGNEXTEND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 SLOAD PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND SWAP4 SWAP3 DUP4 AND SWAP3 DUP2 AND SWAP2 PUSH3 0xFFFFFF PUSH1 0x1 PUSH1 0xA0 SHL DUP4 DIV AND SWAP2 PUSH1 0x1 PUSH1 0xB8 SHL SWAP1 DIV SWAP1 SIGNEXTEND DUP6 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x2F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0xF4240 DUP3 PUSH3 0xFFFFFF AND LT PUSH2 0x309 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x2 SIGNEXTEND SGT DUP1 ISZERO PUSH2 0x320 JUMPI POP PUSH2 0x4000 DUP2 PUSH1 0x2 SIGNEXTEND SLT JUMPDEST PUSH2 0x329 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0xFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND ISZERO PUSH2 0x34F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0xFFFFFF DUP3 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH3 0xFFFFFF NOT AND PUSH1 0x2 DUP8 SWAP1 SIGNEXTEND SWAP6 DUP7 AND OR SWAP1 SSTORE MLOAD PUSH32 0xC66A3FDF07232CDD185FEBCC6579D408C241B47AE2F9907D84BE655141EEAECC SWAP2 SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3BA PUSH2 0x546 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x3D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT PUSH2 0x3FC JUMPI DUP5 DUP7 PUSH2 0x3FF JUMP JUMPDEST DUP6 DUP6 JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x417 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0xFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 DUP2 SWAP1 SIGNEXTEND PUSH2 0x43E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP6 AND DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH3 0xFFFFFF DUP11 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD AND ISZERO PUSH2 0x47D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x48A ADDRESS DUP5 DUP5 DUP9 DUP6 PUSH2 0x57D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP10 DUP8 AND DUP1 DUP7 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP6 KECCAK256 PUSH3 0xFFFFFF DUP15 AND DUP1 DUP8 MSTORE SWAP1 DUP5 MSTORE DUP3 DUP7 KECCAK256 DUP1 SLOAD SWAP9 DUP11 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP10 DUP11 AND DUP2 OR SWAP1 SWAP2 SSTORE DUP3 DUP8 MSTORE SWAP5 DUP5 MSTORE DUP3 DUP7 KECCAK256 DUP8 DUP8 MSTORE DUP5 MSTORE DUP3 DUP7 KECCAK256 DUP2 DUP8 MSTORE DUP5 MSTORE SWAP5 DUP3 SWAP1 KECCAK256 DUP1 SLOAD SWAP1 SWAP8 AND DUP5 OR SWAP1 SWAP7 SSTORE DUP1 MLOAD PUSH1 0x2 DUP10 SWAP1 SIGNEXTEND DUP2 MSTORE SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP6 SWAP10 POP SWAP2 SWAP5 PUSH32 0x783CCA1C0412DD0D695E784568C96DA2E9C22FF989357A2E8B1D9B2B4E6B7118 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x57B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND DUP1 DUP4 MSTORE DUP8 DUP3 AND PUSH1 0x20 DUP1 DUP6 ADD DUP3 SWAP1 MSTORE SWAP3 DUP9 AND DUP5 DUP7 ADD DUP2 SWAP1 MSTORE PUSH3 0xFFFFFF DUP9 DUP2 AND PUSH1 0x60 DUP1 DUP9 ADD DUP3 SWAP1 MSTORE PUSH1 0x2 DUP11 DUP2 SIGNEXTEND PUSH1 0x80 SWAP10 DUP11 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND SWAP1 SWAP10 OR DUP2 SSTORE PUSH1 0x1 DUP1 SLOAD DUP11 AND DUP10 OR SWAP1 SSTORE DUP3 SLOAD SWAP1 SWAP9 AND DUP7 OR PUSH3 0xFFFFFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL DUP6 MUL OR PUSH3 0xFFFFFF PUSH1 0xB8 SHL NOT AND PUSH1 0x1 PUSH1 0xB8 SHL SWAP2 DUP4 SIGNEXTEND SWAP1 SWAP6 AND MUL SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP3 SSTORE DUP8 MLOAD DUP1 DUP8 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP4 DUP9 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP6 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE SWAP4 ADD SWAP4 DUP5 SWAP1 MSTORE DUP3 MLOAD SWAP3 SWAP1 SWAP2 ADD SWAP2 SWAP1 SWAP2 KECCAK256 SWAP1 SWAP2 PUSH2 0x654 SWAP1 PUSH2 0x6AB JUMP JUMPDEST DUP2 SWAP1 PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE2 SWAP1 POP DUP1 ISZERO DUP1 ISZERO PUSH2 0x674 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND SWAP1 SWAP2 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SSTORE PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xD0 SHL SUB NOT AND SWAP1 SSTORE SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x5798 DUP1 PUSH2 0x6B9 DUP4 CODECOPY ADD SWAP1 JUMP INVALID PUSH2 0x160 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP ADDRESS PUSH1 0x60 SHL PUSH1 0x80 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x8903573 PUSH1 0xE4 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 CALLER SWAP2 PUSH4 0x89035730 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0xA0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x56 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x6B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0xA0 DUP2 LT ISZERO PUSH3 0x82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x60 DUP1 DUP7 ADD MLOAD PUSH1 0x80 SWAP1 SWAP7 ADD MLOAD PUSH1 0xE8 SWAP7 DUP8 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE8 SHL SUB NOT AND PUSH2 0x100 MSTORE SWAP2 DUP2 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT SWAP1 DUP2 AND PUSH1 0xE0 MSTORE SWAP3 DUP2 SHL DUP4 AND PUSH1 0xC0 MSTORE SWAP4 SWAP1 SWAP4 SHL AND PUSH1 0xA0 MSTORE PUSH1 0x2 DUP3 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND SWAP1 SWAP3 SHL PUSH2 0x120 MSTORE SWAP2 POP PUSH3 0xF7 SWAP1 DUP3 SWAP1 PUSH3 0x10F DUP2 SHL PUSH3 0x2ADB OR SWAP1 SHR JUMP JUMPDEST PUSH1 0x80 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH2 0x140 MSTORE POP PUSH3 0x17D JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x2 DUP2 SWAP1 SIGNEXTEND PUSH3 0xD89E7 NOT DUP2 PUSH3 0x125 JUMPI INVALID JUMPDEST SDIV MUL SWAP1 POP PUSH1 0x0 DUP4 PUSH1 0x2 DUP2 SWAP1 SIGNEXTEND PUSH3 0xD89E8 DUP2 PUSH3 0x13D JUMPI INVALID JUMPDEST SDIV MUL SWAP1 POP PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND DUP4 DUP4 SUB PUSH1 0x2 SIGNEXTEND DUP2 PUSH3 0x155 JUMPI INVALID JUMPDEST SDIV PUSH1 0x1 ADD SWAP1 POP DUP1 PUSH3 0xFFFFFF AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 AND DUP2 PUSH3 0x173 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH1 0xE8 SHR PUSH2 0x120 MLOAD PUSH1 0xE8 SHR PUSH2 0x140 MLOAD PUSH1 0x80 SHR PUSH2 0x554E PUSH3 0x24A PUSH1 0x0 CODECOPY DUP1 PUSH2 0x1FAB MSTORE DUP1 PUSH2 0x4A4D MSTORE DUP1 PUSH2 0x4A84 MSTORE POP DUP1 PUSH2 0xBD8 MSTORE DUP1 PUSH2 0x2897 MSTORE DUP1 PUSH2 0x4AB8 MSTORE DUP1 PUSH2 0x4AEA MSTORE POP DUP1 PUSH2 0xCC7 MSTORE DUP1 PUSH2 0x1988 MSTORE DUP1 PUSH2 0x19BF MSTORE DUP1 PUSH2 0x28DF MSTORE POP DUP1 PUSH2 0x1185 MSTORE DUP1 PUSH2 0x1A42 MSTORE DUP1 PUSH2 0x1EB1 MSTORE DUP1 PUSH2 0x23E6 MSTORE DUP1 PUSH2 0x28BB MSTORE DUP1 PUSH2 0x3D7C MSTORE POP DUP1 PUSH2 0x8AA MSTORE DUP1 PUSH2 0x12B3 MSTORE DUP1 PUSH2 0x1A11 MSTORE DUP1 PUSH2 0x1E4B MSTORE DUP1 PUSH2 0x2360 MSTORE DUP1 PUSH2 0x3C33 MSTORE POP DUP1 PUSH2 0x2038 MSTORE DUP1 PUSH2 0x221F MSTORE DUP1 PUSH2 0x2873 MSTORE POP DUP1 PUSH2 0x2B52 MSTORE POP PUSH2 0x554E PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x18E JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70CF754A GT PUSH2 0xDE JUMPI DUP1 PUSH4 0xC45A0155 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xDDCA3F43 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xDDCA3F43 EQ PUSH2 0x7D8 JUMPI DUP1 PUSH4 0xF3058399 EQ PUSH2 0x7F8 JUMPI DUP1 PUSH4 0xF30DBA93 EQ PUSH2 0x800 JUMPI DUP1 PUSH4 0xF637731D EQ PUSH2 0x882 JUMPI PUSH2 0x18E JUMP JUMPDEST DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x7A9 JUMPI DUP1 PUSH4 0xD0C93A7C EQ PUSH2 0x7B1 JUMPI DUP1 PUSH4 0xD21220A7 EQ PUSH2 0x7D0 JUMPI PUSH2 0x18E JUMP JUMPDEST DUP1 PUSH4 0x70CF754A EQ PUSH2 0x5A0 JUMPI DUP1 PUSH4 0x8206A4D1 EQ PUSH2 0x5A8 JUMPI DUP1 PUSH4 0x85B66729 EQ PUSH2 0x5D0 JUMPI DUP1 PUSH4 0x883BDBFD EQ PUSH2 0x60D JUMPI DUP1 PUSH4 0xA34123A7 EQ PUSH2 0x714 JUMPI DUP1 PUSH4 0xA38807F2 EQ PUSH2 0x74E JUMPI PUSH2 0x18E JUMP JUMPDEST DUP1 PUSH4 0x3850C7BD GT PUSH2 0x14B JUMPI DUP1 PUSH4 0x490E6CBC GT PUSH2 0x125 JUMPI DUP1 PUSH4 0x490E6CBC EQ PUSH2 0x44C JUMPI DUP1 PUSH4 0x4F1EB3D8 EQ PUSH2 0x4D6 JUMPI DUP1 PUSH4 0x514EA4BF EQ PUSH2 0x527 JUMPI DUP1 PUSH4 0x5339C296 EQ PUSH2 0x580 JUMPI PUSH2 0x18E JUMP JUMPDEST DUP1 PUSH4 0x3850C7BD EQ PUSH2 0x339 JUMPI DUP1 PUSH4 0x3C8A7D8D EQ PUSH2 0x392 JUMPI DUP1 PUSH4 0x46141319 EQ PUSH2 0x432 JUMPI PUSH2 0x18E JUMP JUMPDEST DUP1 PUSH4 0xDFE1681 EQ PUSH2 0x193 JUMPI DUP1 PUSH4 0x128ACB08 EQ PUSH2 0x1B7 JUMPI DUP1 PUSH4 0x1A686502 EQ PUSH2 0x264 JUMPI DUP1 PUSH4 0x1AD8B03B EQ PUSH2 0x288 JUMPI DUP1 PUSH4 0x252C09D7 EQ PUSH2 0x2BF JUMPI DUP1 PUSH4 0x32148F67 EQ PUSH2 0x316 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x19B PUSH2 0x8A8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x24B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x1CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP3 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP3 PUSH1 0x60 DUP4 ADD CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0xA0 DUP2 ADD PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x20D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x21F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x240 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x8CC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x26C PUSH2 0x146B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x290 PUSH2 0x147A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2DC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1494 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP6 AND DUP6 MSTORE PUSH1 0x6 SWAP4 SWAP1 SWAP4 SIGNEXTEND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP4 DUP4 ADD MSTORE ISZERO ISZERO PUSH1 0x60 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 RETURN JUMPDEST PUSH2 0x337 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x32C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xFFFF AND PUSH2 0x14D9 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x341 PUSH2 0x15D3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP9 AND DUP9 MSTORE PUSH1 0x2 SWAP7 SWAP1 SWAP7 SIGNEXTEND PUSH1 0x20 DUP9 ADD MSTORE PUSH2 0xFFFF SWAP5 DUP6 AND DUP8 DUP8 ADD MSTORE SWAP3 DUP5 AND PUSH1 0x60 DUP8 ADD MSTORE SWAP3 AND PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0xFF SWAP1 SWAP2 AND PUSH1 0xA0 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0xC0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xE0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x24B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x3A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP3 PUSH1 0x40 DUP4 ADD CALLDATALOAD SWAP1 SWAP2 SIGNEXTEND SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x60 DUP3 ADD CALLDATALOAD AND SWAP2 DUP2 ADD SWAP1 PUSH1 0xA0 DUP2 ADD PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x3F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x406 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x427 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1623 JUMP JUMPDEST PUSH2 0x43A PUSH2 0x18DF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x337 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x462 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x498 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x4CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x18E5 JUMP JUMPDEST PUSH2 0x290 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x4EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP2 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 SIGNEXTEND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x60 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x80 ADD CALLDATALOAD AND PUSH2 0x1D40 JUMP JUMPDEST PUSH2 0x544 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x53D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1F5A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP7 DUP8 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP6 SWAP1 SWAP6 MSTORE DUP5 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP1 DUP5 AND PUSH1 0x60 DUP5 ADD MSTORE SWAP1 SWAP3 AND PUSH1 0x80 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x43A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x596 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 SIGNEXTEND PUSH2 0x1F97 JUMP JUMPDEST PUSH2 0x26C PUSH2 0x1FA9 JUMP JUMPDEST PUSH2 0x337 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1FCD JUMP JUMPDEST PUSH2 0x290 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x5E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x20 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x40 ADD CALLDATALOAD AND PUSH2 0x21B1 JUMP JUMPDEST PUSH2 0x67B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x623 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x63D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x64F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x670 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x247E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x6BF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x6A7 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x6FE JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x6E6 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x24B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x72A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 SIGNEXTEND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x250B JUMP JUMPDEST PUSH2 0x778 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x764 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP2 PUSH1 0x20 ADD CALLDATALOAD SWAP1 SIGNEXTEND PUSH2 0x2682 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x6 SWAP5 SWAP1 SWAP5 SIGNEXTEND DUP5 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH4 0xFFFFFFFF AND DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST PUSH2 0x19B PUSH2 0x2871 JUMP JUMPDEST PUSH2 0x7B9 PUSH2 0x2895 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 SWAP3 SWAP1 SWAP3 SIGNEXTEND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x19B PUSH2 0x28B9 JUMP JUMPDEST PUSH2 0x7E0 PUSH2 0x28DD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH3 0xFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x43A PUSH2 0x2901 JUMP JUMPDEST PUSH2 0x820 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x816 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x2 SIGNEXTEND PUSH2 0x2907 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP10 AND DUP10 MSTORE PUSH1 0xF SWAP8 SWAP1 SWAP8 SIGNEXTEND PUSH1 0x20 DUP10 ADD MSTORE DUP8 DUP8 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0x60 DUP8 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x6 SWAP2 SWAP1 SWAP2 SIGNEXTEND PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0xA0 DUP6 ADD MSTORE PUSH4 0xFFFFFFFF AND PUSH1 0xC0 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0xE0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH2 0x100 ADD SWAP1 RETURN JUMPDEST PUSH2 0x337 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x898 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2971 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x8D7 PUSH2 0x2B47 JUMP JUMPDEST DUP6 PUSH2 0x90E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4153 PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xE0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0xA0 SHL DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0xFFFF PUSH1 0x1 PUSH1 0xB8 SHL DUP3 DIV DUP2 AND SWAP4 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0xC8 SHL DUP2 DIV DUP4 AND PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0xD8 SHL DUP2 DIV SWAP1 SWAP3 AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xFF PUSH1 0x1 PUSH1 0xE8 SHL DUP4 DIV DUP2 AND PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 SWAP3 DIV SWAP1 SWAP2 AND ISZERO ISZERO PUSH1 0xC0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x9C7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4C4F4B PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP8 PUSH2 0xA12 JUMPI DUP1 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT DUP1 ISZERO PUSH2 0xA0D JUMPI POP PUSH20 0xFFFD8963EFD1FC6A506488495D951D5263988D26 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND LT JUMPDEST PUSH2 0xA44 JUMP JUMPDEST DUP1 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT DUP1 ISZERO PUSH2 0xA44 JUMPI POP PUSH5 0x1000276A3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND GT JUMPDEST PUSH2 0xA7B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x14D413 PUSH1 0xEA SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND DUP2 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0xC0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 DUP11 PUSH2 0xAAA JUMPI PUSH1 0x4 DUP5 PUSH1 0xA0 ADD MLOAD PUSH1 0xFF AND SWAP1 SHR PUSH2 0xABD JUMP JUMPDEST PUSH1 0x10 DUP5 PUSH1 0xA0 ADD MLOAD PUSH1 0xFF AND DUP2 PUSH2 0xABB JUMPI INVALID JUMPDEST MOD JUMPDEST PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD PUSH2 0xADE PUSH2 0x2B7E JUMP JUMPDEST PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x6 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE POP SWAP1 POP PUSH1 0x0 DUP1 DUP10 SGT SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0xE0 ADD PUSH1 0x40 MSTORE DUP1 DUP12 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x20 ADD MLOAD PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP13 PUSH2 0xB5A JUMPI PUSH1 0x2 SLOAD PUSH2 0xB5E JUMP JUMPDEST PUSH1 0x1 SLOAD JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE POP SWAP1 POP JUMPDEST DUP1 MLOAD ISZERO DUP1 ISZERO SWAP1 PUSH2 0xBAD JUMPI POP DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0xF77 JUMPI PUSH2 0xBBA PUSH2 0x54B5 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0xBFD SWAP1 PUSH1 0x6 SWAP1 PUSH32 0x0 DUP16 PUSH2 0x2B82 JUMP JUMPDEST ISZERO ISZERO PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x20 DUP4 ADD DUP2 SWAP1 MSTORE PUSH3 0xD89E7 NOT SWAP2 SIGNEXTEND SLT ISZERO PUSH2 0xC2E JUMPI PUSH3 0xD89E7 NOT PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0xC4D JUMP JUMPDEST PUSH1 0x20 DUP2 ADD MLOAD PUSH3 0xD89E8 PUSH1 0x2 SWAP2 SWAP1 SWAP2 SIGNEXTEND SGT ISZERO PUSH2 0xC4D JUMPI PUSH3 0xD89E8 PUSH1 0x20 DUP3 ADD MSTORE JUMPDEST PUSH2 0xC5A DUP2 PUSH1 0x20 ADD MLOAD PUSH2 0x2CC4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0xCEB SWAP1 DUP14 PUSH2 0xC94 JUMPI DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x60 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0xCAE JUMP JUMPDEST DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x60 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT JUMPDEST PUSH2 0xCBC JUMPI DUP3 PUSH1 0x60 ADD MLOAD PUSH2 0xCBE JUMP JUMPDEST DUP12 JUMPDEST PUSH1 0xC0 DUP6 ADD MLOAD DUP6 MLOAD PUSH32 0x0 PUSH2 0x2FF5 JUMP JUMPDEST PUSH1 0xC0 DUP6 ADD MSTORE PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x40 DUP4 ADD MSTORE DUP3 ISZERO PUSH2 0xD4D JUMPI PUSH2 0xD21 DUP2 PUSH1 0xC0 ADD MLOAD DUP3 PUSH1 0x80 ADD MLOAD ADD PUSH2 0x31E7 JUMP JUMPDEST DUP3 MLOAD SUB DUP3 MSTORE PUSH1 0xA0 DUP2 ADD MLOAD PUSH2 0xD43 SWAP1 PUSH2 0xD38 SWAP1 PUSH2 0x31E7 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 PUSH2 0x31FD JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0xD88 JUMP JUMPDEST PUSH2 0xD5A DUP2 PUSH1 0xA0 ADD MLOAD PUSH2 0x31E7 JUMP JUMPDEST DUP3 MLOAD ADD DUP3 MSTORE PUSH1 0xC0 DUP2 ADD MLOAD PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0xD82 SWAP2 PUSH2 0xD77 SWAP2 ADD PUSH2 0x31E7 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 PUSH2 0x3219 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE JUMPDEST DUP4 MLOAD PUSH1 0xFF AND ISZERO PUSH2 0xDCE JUMPI PUSH1 0x0 DUP5 PUSH1 0x0 ADD MLOAD PUSH1 0xFF AND DUP3 PUSH1 0xC0 ADD MLOAD DUP2 PUSH2 0xDA8 JUMPI INVALID JUMPDEST PUSH1 0xC0 DUP5 ADD DUP1 MLOAD SWAP3 SWAP1 SWAP2 DIV SWAP2 DUP3 SWAP1 SUB SWAP1 MSTORE PUSH1 0xA0 DUP5 ADD DUP1 MLOAD SWAP1 SWAP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP1 MSTORE POP JUMPDEST PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND ISZERO PUSH2 0xE0D JUMPI PUSH2 0xE01 DUP2 PUSH1 0xC0 ADD MLOAD PUSH1 0x1 PUSH1 0x80 SHL DUP5 PUSH1 0xC0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x322F JUMP JUMPDEST PUSH1 0x80 DUP4 ADD DUP1 MLOAD SWAP1 SWAP2 ADD SWAP1 MSTORE JUMPDEST DUP1 PUSH1 0x60 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0xF36 JUMPI DUP1 PUSH1 0x40 ADD MLOAD ISZERO PUSH2 0xF0D JUMPI DUP4 PUSH1 0xA0 ADD MLOAD PUSH2 0xE97 JUMPI PUSH2 0xE75 DUP5 PUSH1 0x40 ADD MLOAD PUSH1 0x0 DUP8 PUSH1 0x20 ADD MLOAD DUP9 PUSH1 0x40 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP11 PUSH1 0x60 ADD MLOAD PUSH1 0x8 PUSH2 0x32DF SWAP1 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0xA0 DUP6 ADD MSTORE JUMPDEST PUSH1 0x0 PUSH2 0xEE3 DUP3 PUSH1 0x20 ADD MLOAD DUP15 PUSH2 0xEAE JUMPI PUSH1 0x1 SLOAD PUSH2 0xEB4 JUMP JUMPDEST DUP5 PUSH1 0x80 ADD MLOAD JUMPDEST DUP16 PUSH2 0xEC3 JUMPI DUP6 PUSH1 0x80 ADD MLOAD PUSH2 0xEC7 JUMP JUMPDEST PUSH1 0x2 SLOAD JUMPDEST PUSH1 0x80 DUP10 ADD MLOAD PUSH1 0x60 DUP11 ADD MLOAD PUSH1 0x40 DUP12 ADD MLOAD PUSH1 0x5 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3471 JUMP JUMPDEST SWAP1 POP DUP13 ISZERO PUSH2 0xEEF JUMPI PUSH1 0x0 SUB JUMPDEST PUSH2 0xEFD DUP4 PUSH1 0xC0 ADD MLOAD DUP3 PUSH2 0x352B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0xC0 DUP5 ADD MSTORE POP JUMPDEST DUP12 PUSH2 0xF1C JUMPI DUP1 PUSH1 0x20 ADD MLOAD PUSH2 0xF25 JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x20 ADD MLOAD SUB JUMPDEST PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0xF71 JUMP JUMPDEST DUP1 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xF71 JUMPI PUSH2 0xF64 DUP3 PUSH1 0x40 ADD MLOAD PUSH2 0x35E1 JUMP JUMPDEST PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x60 DUP4 ADD MSTORE JUMPDEST POP PUSH2 0xB87 JUMP JUMPDEST DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x2 SIGNEXTEND DUP2 PUSH1 0x60 ADD MLOAD PUSH1 0x2 SIGNEXTEND EQ PUSH2 0x1045 JUMPI PUSH1 0x0 DUP1 PUSH2 0xFC5 DUP7 PUSH1 0x40 ADD MLOAD DUP7 PUSH1 0x40 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP11 PUSH1 0x60 ADD MLOAD DUP12 PUSH1 0x80 ADD MLOAD PUSH1 0x8 PUSH2 0x38FC SWAP1 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MLOAD PUSH1 0x60 DUP7 ADD MLOAD PUSH1 0x0 DUP1 SLOAD PUSH2 0xFFFF PUSH1 0xC8 SHL NOT AND PUSH1 0x1 PUSH1 0xC8 SHL PUSH2 0xFFFF SWAP6 DUP7 AND MUL OR PUSH2 0xFFFF PUSH1 0xB8 SHL NOT AND PUSH1 0x1 PUSH1 0xB8 SHL SWAP6 SWAP1 SWAP5 AND SWAP5 SWAP1 SWAP5 MUL SWAP3 SWAP1 SWAP3 OR PUSH3 0xFFFFFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL PUSH3 0xFFFFFF PUSH1 0x2 SWAP5 SWAP1 SWAP5 SIGNEXTEND SWAP4 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 MUL SWAP2 SWAP1 SWAP2 OR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND OR SWAP1 SSTORE POP PUSH2 0x106A SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD MLOAD PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST DUP1 PUSH1 0xC0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND EQ PUSH2 0x10B0 JUMPI PUSH1 0xC0 DUP2 ADD MLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST DUP11 ISZERO PUSH2 0x1100 JUMPI PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x1 SSTORE PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND ISZERO PUSH2 0x10FB JUMPI PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP2 DUP3 AND SWAP1 SWAP4 ADD AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST PUSH2 0x1146 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x2 SSTORE PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND ISZERO PUSH2 0x1146 JUMPI PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP3 AND PUSH1 0x1 PUSH1 0x80 SHL SWAP3 DUP4 SWAP1 DIV DUP3 AND SWAP1 SWAP5 ADD AND MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST DUP2 ISZERO ISZERO DUP12 ISZERO ISZERO EQ PUSH2 0x115F JUMPI PUSH1 0x20 DUP2 ADD MLOAD DUP2 MLOAD DUP12 SUB PUSH2 0x116C JUMP JUMPDEST DUP1 PUSH1 0x0 ADD MLOAD DUP11 SUB DUP2 PUSH1 0x20 ADD MLOAD JUMPDEST SWAP1 SWAP7 POP SWAP5 POP DUP11 ISZERO PUSH2 0x12A5 JUMPI PUSH1 0x0 DUP6 SLT ISZERO PUSH2 0x11AE JUMPI PUSH2 0x11AE PUSH32 0x0 DUP14 DUP8 PUSH1 0x0 SUB PUSH2 0x3A97 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x11B8 PUSH2 0x3BE5 JUMP JUMPDEST SWAP1 POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFA461E33 DUP9 DUP9 DUP13 DUP13 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP6 POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x123C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1250 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x125C PUSH2 0x3BE5 JUMP JUMPDEST PUSH2 0x1266 DUP3 DUP10 PUSH2 0x3D1E JUMP JUMPDEST GT ISZERO PUSH2 0x129F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x494941 PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH2 0x13CF JUMP JUMPDEST PUSH1 0x0 DUP7 SLT ISZERO PUSH2 0x12DC JUMPI PUSH2 0x12DC PUSH32 0x0 DUP14 DUP9 PUSH1 0x0 SUB PUSH2 0x3A97 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12E6 PUSH2 0x3D2E JUMP JUMPDEST SWAP1 POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFA461E33 DUP9 DUP9 DUP13 DUP13 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP6 POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x136A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x137E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x138A PUSH2 0x3D2E JUMP JUMPDEST PUSH2 0x1394 DUP3 DUP9 PUSH2 0x3D1E JUMP JUMPDEST GT ISZERO PUSH2 0x13CD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x494941 PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP JUMPDEST PUSH1 0x40 DUP1 DUP3 ADD MLOAD PUSH1 0xC0 DUP4 ADD MLOAD PUSH1 0x60 DUP1 DUP6 ADD MLOAD DUP5 MLOAD DUP12 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP12 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND DUP2 DUP8 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP4 AND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x2 SIGNEXTEND PUSH1 0x80 DUP3 ADD MSTORE SWAP2 MLOAD SWAP1 DUP15 AND SWAP2 CALLER SWAP2 PUSH32 0xC42079F94A6350D7E6235F29174924F928CC2AC818EB64FED8004E115FBCCA67 SWAP2 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 LOG3 POP POP PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND PUSH1 0x1 PUSH1 0xF0 SHL OR SWAP1 SSTORE POP SWAP2 SWAP9 SWAP1 SWAP8 POP SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP3 AND SWAP2 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV AND DUP3 JUMP JUMPDEST PUSH1 0x8 DUP2 PUSH2 0xFFFF DUP2 LT PUSH2 0x14A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST ADD SLOAD PUSH4 0xFFFFFFFF DUP2 AND SWAP2 POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 DIV PUSH1 0x6 SIGNEXTEND SWAP1 PUSH1 0x1 PUSH1 0x58 SHL DUP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 DIV PUSH1 0xFF AND DUP5 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x151D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4C4F4B PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND SWAP1 SSTORE PUSH2 0x1532 PUSH2 0x2B47 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0xD8 SHL SWAP1 DIV PUSH2 0xFFFF AND SWAP1 PUSH2 0x154E PUSH1 0x8 DUP4 DUP6 PUSH2 0x3DC6 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFFFF DUP1 DUP5 AND PUSH1 0x1 PUSH1 0xD8 SHL DUP2 MUL PUSH2 0xFFFF PUSH1 0xD8 SHL NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP3 SSTORE SWAP2 SWAP3 POP DUP4 AND EQ PUSH2 0x15BB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH2 0xFFFF DUP1 DUP6 AND DUP3 MSTORE DUP4 AND PUSH1 0x20 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0xAC49E518F90A358F652E4400164F05A5D8F7E35E7747279BC3A93DBF584E125A SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 JUMPDEST POP POP PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND PUSH1 0x1 PUSH1 0xF0 SHL OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP1 PUSH1 0x1 PUSH1 0xA0 SHL DUP2 DIV PUSH1 0x2 SIGNEXTEND SWAP1 PUSH2 0xFFFF PUSH1 0x1 PUSH1 0xB8 SHL DUP3 DIV DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0xC8 SHL DUP2 DIV DUP3 AND SWAP2 PUSH1 0x1 PUSH1 0xD8 SHL DUP3 DIV AND SWAP1 PUSH1 0xFF PUSH1 0x1 PUSH1 0xE8 SHL DUP3 DIV DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 DIV AND DUP8 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x166A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4C4F4B PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND SWAP1 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP6 AND PUSH2 0x168A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x16D8 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP12 PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP11 PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x16CE DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x3E69 JUMP JUMPDEST PUSH1 0xF SIGNEXTEND SWAP1 MSTORE PUSH2 0x3E7A JUMP JUMPDEST SWAP3 POP SWAP3 POP POP DUP2 SWAP4 POP DUP1 SWAP3 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP7 GT ISZERO PUSH2 0x16FA JUMPI PUSH2 0x16F7 PUSH2 0x3BE5 JUMP JUMPDEST SWAP2 POP JUMPDEST DUP5 ISZERO PUSH2 0x170B JUMPI PUSH2 0x1708 PUSH2 0x3D2E JUMP JUMPDEST SWAP1 POP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD3487997 DUP8 DUP8 DUP12 DUP12 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP6 POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x178D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x17A1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 DUP7 GT ISZERO PUSH2 0x17F8 JUMPI PUSH2 0x17B6 PUSH2 0x3BE5 JUMP JUMPDEST PUSH2 0x17C0 DUP4 DUP9 PUSH2 0x3D1E JUMP JUMPDEST GT ISZERO PUSH2 0x17F8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4D3 PUSH1 0xF4 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP5 ISZERO PUSH2 0x1848 JUMPI PUSH2 0x1806 PUSH2 0x3D2E JUMP JUMPDEST PUSH2 0x1810 DUP3 DUP8 PUSH2 0x3D1E JUMP JUMPDEST GT ISZERO PUSH2 0x1848 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4D31 PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP10 PUSH1 0x2 SIGNEXTEND DUP12 PUSH1 0x2 SIGNEXTEND DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x7A53080BA414158BE7EC69B987B5FB7D07DEE101FE85488F0853AE16239D0BDE CALLER DUP14 DUP12 DUP12 PUSH1 0x40 MLOAD DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND PUSH1 0x1 PUSH1 0xF0 SHL OR SWAP1 SSTORE POP SWAP2 SWAP9 SWAP1 SWAP8 POP SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1929 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4C4F4B PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND SWAP1 SSTORE PUSH2 0x193E PUSH2 0x2B47 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP1 PUSH2 0x1980 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0xFA SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x19B5 DUP7 PUSH32 0x0 PUSH3 0xFFFFFF AND PUSH3 0xF4240 PUSH2 0x40BA JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x19EC DUP7 PUSH32 0x0 PUSH3 0xFFFFFF AND PUSH3 0xF4240 PUSH2 0x40BA JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x19F8 PUSH2 0x3BE5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1A04 PUSH2 0x3D2E JUMP JUMPDEST SWAP1 POP DUP9 ISZERO PUSH2 0x1A37 JUMPI PUSH2 0x1A37 PUSH32 0x0 DUP12 DUP12 PUSH2 0x3A97 JUMP JUMPDEST DUP8 ISZERO PUSH2 0x1A68 JUMPI PUSH2 0x1A68 PUSH32 0x0 DUP12 DUP11 PUSH2 0x3A97 JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE9CBAFB0 DUP6 DUP6 DUP11 DUP11 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP6 POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1AEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1AFE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 PUSH2 0x1B0C PUSH2 0x3BE5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1B18 PUSH2 0x3D2E JUMP JUMPDEST SWAP1 POP DUP2 PUSH2 0x1B25 DUP6 DUP9 PUSH2 0x3D1E JUMP JUMPDEST GT ISZERO PUSH2 0x1B5D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x463 PUSH1 0xF4 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x1B68 DUP5 DUP8 PUSH2 0x3D1E JUMP JUMPDEST GT ISZERO PUSH2 0x1BA0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4631 PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP4 DUP3 SUB DUP4 DUP3 SUB DUP2 ISZERO PUSH2 0x1C2F JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0xE8 SHL SWAP1 DIV PUSH1 0xF AND SWAP1 DUP2 ISZERO PUSH2 0x1BD3 JUMPI DUP2 PUSH1 0xFF AND DUP5 DUP2 PUSH2 0x1BCD JUMPI INVALID JUMPDEST DIV PUSH2 0x1BD6 JUMP JUMPDEST PUSH1 0x0 JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND ISZERO PUSH2 0x1C09 JUMPI PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP3 AND DUP5 ADD AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT SWAP1 SWAP2 AND OR SWAP1 SSTORE JUMPDEST PUSH2 0x1C23 DUP2 DUP6 SUB PUSH1 0x1 PUSH1 0x80 SHL DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x322F JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE POP POP JUMPDEST DUP1 ISZERO PUSH2 0x1CBA JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0xE8 SHL SWAP1 DIV PUSH1 0x4 SHR PUSH1 0xF AND SWAP1 DUP2 ISZERO PUSH2 0x1C5F JUMPI DUP2 PUSH1 0xFF AND DUP4 DUP2 PUSH2 0x1C59 JUMPI INVALID JUMPDEST DIV PUSH2 0x1C62 JUMP JUMPDEST PUSH1 0x0 JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND ISZERO PUSH2 0x1C94 JUMPI PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP1 DUP4 DIV DUP3 AND DUP6 ADD DUP3 AND MUL SWAP2 AND OR SWAP1 SSTORE JUMPDEST PUSH2 0x1CAE DUP2 DUP5 SUB PUSH1 0x1 PUSH1 0x80 SHL DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x322F JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE POP POP JUMPDEST DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xBDBDB71D7860376BA52B25A5028BEEA23581364A40522F6BCFB86BB1F2DCA633 DUP16 DUP16 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND PUSH1 0x1 PUSH1 0xF0 SHL OR SWAP1 SSTORE POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1D87 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4C4F4B PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND DUP2 SSTORE PUSH2 0x1DA1 PUSH1 0x7 CALLER DUP10 DUP10 PUSH2 0x40F4 JUMP JUMPDEST PUSH1 0x3 DUP2 ADD SLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 DUP2 AND SWAP1 DUP7 AND GT PUSH2 0x1DC2 JUMPI DUP5 PUSH2 0x1DD1 JUMP JUMPDEST PUSH1 0x3 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND JUMPDEST PUSH1 0x3 DUP3 ADD SLOAD SWAP1 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP2 DIV DUP2 AND SWAP1 DUP6 AND GT PUSH2 0x1DF9 JUMPI DUP4 PUSH2 0x1E0F JUMP JUMPDEST PUSH1 0x3 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND JUMPDEST SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP4 AND ISZERO PUSH2 0x1E74 JUMPI PUSH1 0x3 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP2 DUP3 AND DUP7 SWAP1 SUB DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH2 0x1E74 SWAP1 PUSH32 0x0 SWAP1 DUP11 SWAP1 DUP7 AND PUSH2 0x3A97 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 AND ISZERO PUSH2 0x1EDA JUMPI PUSH1 0x3 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP1 DUP4 DIV DUP3 AND DUP7 SWAP1 SUB DUP3 AND MUL SWAP2 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE PUSH2 0x1EDA SWAP1 PUSH32 0x0 SWAP1 DUP11 SWAP1 DUP6 AND PUSH2 0x3A97 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP7 AND PUSH1 0x20 DUP4 ADD MSTORE DUP5 AND DUP2 DUP4 ADD MSTORE SWAP1 MLOAD PUSH1 0x2 DUP9 DUP2 SIGNEXTEND SWAP3 SWAP1 DUP11 SWAP1 SIGNEXTEND SWAP2 CALLER SWAP2 PUSH32 0x70935338E69775456A85DDEF226C395FB668B63FA0115F5F20610B388E6CA9C0 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG4 POP PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND PUSH1 0x1 PUSH1 0xF0 SHL OR SWAP1 SSTORE SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 SWAP1 SWAP4 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP3 DUP4 AND SWAP4 SWAP2 SWAP3 DUP2 DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV AND DUP6 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2011 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4C4F4B PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x8DA5CB5B PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP2 PUSH4 0x8DA5CB5B SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x207E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2092 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x20A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x20BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0xFF DUP3 AND ISZERO DUP1 PUSH2 0x20E1 JUMPI POP PUSH1 0x4 DUP3 PUSH1 0xFF AND LT ISZERO DUP1 ISZERO PUSH2 0x20E1 JUMPI POP PUSH1 0xA DUP3 PUSH1 0xFF AND GT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x210B JUMPI POP PUSH1 0xFF DUP2 AND ISZERO DUP1 PUSH2 0x210B JUMPI POP PUSH1 0x4 DUP2 PUSH1 0xFF AND LT ISZERO DUP1 ISZERO PUSH2 0x210B JUMPI POP PUSH1 0xA DUP2 PUSH1 0xFF AND GT ISZERO JUMPDEST PUSH2 0x2114 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF0 PUSH1 0x4 DUP5 SWAP1 SHL AND DUP5 ADD PUSH1 0xFF SWAP1 DUP2 AND PUSH1 0x1 PUSH1 0xE8 SHL SWAP1 DUP2 MUL PUSH1 0xFF PUSH1 0xE8 SHL NOT DUP5 AND OR SWAP1 SWAP4 SSTORE SWAP2 SWAP1 DIV AND PUSH32 0x973D8D92BB299F4AF6CE49B52A8ADB85AE46B9F214C4C4FC06AC77401237B133 PUSH1 0x10 DUP3 PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP4 SWAP1 SWAP3 MOD DUP4 AND DUP3 MSTORE PUSH1 0xF PUSH1 0x4 DUP7 SWAP1 SHR AND PUSH1 0x20 DUP4 ADD MSTORE DUP7 DUP4 AND DUP3 DUP3 ADD MSTORE SWAP2 DUP6 AND PUSH1 0x60 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG1 POP POP PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND PUSH1 0x1 PUSH1 0xF0 SHL OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x21F8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4C4F4B PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x8DA5CB5B PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP2 PUSH4 0x8DA5CB5B SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2265 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2279 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x228F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x22A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 DUP2 AND SWAP1 DUP6 AND GT PUSH2 0x22C1 JUMPI DUP4 PUSH2 0x22CE JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND JUMPDEST PUSH1 0x3 SLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP2 DIV DUP2 AND SWAP1 DUP5 AND GT PUSH2 0x22F4 JUMPI DUP3 PUSH2 0x2308 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 AND ISZERO PUSH2 0x2389 JUMPI PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP4 DUP2 AND SWAP2 AND EQ ISZERO PUSH2 0x2337 JUMPI PUSH1 0x0 NOT SWAP1 SWAP2 ADD SWAP1 JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP2 DUP3 AND DUP6 SWAP1 SUB DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH2 0x2389 SWAP1 PUSH32 0x0 SWAP1 DUP8 SWAP1 DUP6 AND PUSH2 0x3A97 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND ISZERO PUSH2 0x240F JUMPI PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 DUP2 AND PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP3 DIV AND EQ ISZERO PUSH2 0x23BA JUMPI PUSH1 0x0 NOT ADD JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP1 DUP4 DIV DUP3 AND DUP6 SWAP1 SUB DUP3 AND MUL SWAP2 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE PUSH2 0x240F SWAP1 PUSH32 0x0 SWAP1 DUP8 SWAP1 DUP5 AND PUSH2 0x3A97 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP6 AND DUP3 MSTORE DUP4 AND PUSH1 0x20 DUP3 ADD MSTORE DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP3 CALLER SWAP3 PUSH32 0x596B573906218D3411850B26A6B437D6C4522FDB43D2D2386263F86D50B8B151 SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND PUSH1 0x1 PUSH1 0xF0 SHL OR SWAP1 SSTORE SWAP1 SWAP5 SWAP1 SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH2 0x2489 PUSH2 0x2B47 JUMP JUMPDEST PUSH2 0x2500 PUSH2 0x2494 PUSH2 0x2B7E JUMP JUMPDEST DUP6 DUP6 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD DUP3 SWAP1 MSTORE POP SLOAD PUSH1 0x4 SLOAD PUSH1 0x8 SWAP7 SWAP6 SWAP5 POP PUSH1 0x1 PUSH1 0xA0 SHL DUP3 DIV PUSH1 0x2 SIGNEXTEND SWAP4 POP PUSH2 0xFFFF PUSH1 0x1 PUSH1 0xB8 SHL DUP4 DIV DUP2 AND SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP2 AND SWAP2 PUSH1 0x1 PUSH1 0xC8 SHL SWAP1 DIV AND PUSH2 0x4158 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2552 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4C4F4B PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND DUP2 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE CALLER DUP2 MSTORE PUSH1 0x2 DUP9 DUP2 SIGNEXTEND PUSH1 0x20 DUP4 ADD MSTORE DUP8 SWAP1 SIGNEXTEND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 SWAP1 DUP2 SWAP1 PUSH2 0x25AB SWAP1 PUSH1 0x60 DUP2 ADD PUSH2 0x259E PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP11 AND PUSH2 0x3E69 JUMP JUMPDEST PUSH1 0x0 SUB PUSH1 0xF SIGNEXTEND SWAP1 MSTORE PUSH2 0x3E7A JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP DUP2 PUSH1 0x0 SUB SWAP5 POP DUP1 PUSH1 0x0 SUB SWAP4 POP PUSH1 0x0 DUP6 GT DUP1 PUSH2 0x25CC JUMPI POP PUSH1 0x0 DUP5 GT JUMPDEST ISZERO PUSH2 0x260B JUMPI PUSH1 0x3 DUP4 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP3 AND DUP1 DUP10 ADD DUP3 AND PUSH1 0x1 PUSH1 0x80 SHL SWAP4 DUP5 SWAP1 DIV DUP4 AND DUP10 ADD SWAP1 SWAP3 AND SWAP1 SWAP3 MUL SWAP1 SWAP2 OR PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND OR SWAP1 SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP9 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP8 SWAP1 MSTORE DUP1 DUP3 ADD DUP7 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x2 DUP10 DUP2 SIGNEXTEND SWAP3 SWAP1 DUP12 SWAP1 SIGNEXTEND SWAP2 CALLER SWAP2 PUSH32 0xC396CD989A39F4459B5FA1AED6A9A8DCDBC45908ACFD67E028CD568DA98982C SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG4 POP POP PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND PUSH1 0x1 PUSH1 0xF0 SHL OR SWAP1 SSTORE POP SWAP1 SWAP5 SWAP1 SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x268F PUSH2 0x2B47 JUMP JUMPDEST PUSH2 0x2699 DUP6 DUP6 PUSH2 0x42B2 JUMP JUMPDEST PUSH1 0x2 DUP6 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP8 DUP5 SIGNEXTEND SWAP1 SWAP4 SIGNEXTEND DUP3 MSTORE DUP2 KECCAK256 PUSH1 0x3 DUP4 ADD SLOAD PUSH1 0x6 DUP2 SWAP1 SIGNEXTEND SWAP4 PUSH1 0x1 PUSH1 0x38 SHL DUP3 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 DUP5 SWAP3 PUSH1 0x1 PUSH1 0xD8 SHL DUP2 DIV PUSH4 0xFFFFFFFF AND SWAP3 DUP5 SWAP3 SWAP1 SWAP2 PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 DIV PUSH1 0xFF AND DUP1 PUSH2 0x26FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 DUP3 ADD SLOAD PUSH1 0x6 DUP2 SWAP1 SIGNEXTEND SWAP9 POP PUSH1 0x1 PUSH1 0x38 SHL DUP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP7 POP PUSH1 0x1 PUSH1 0xD8 SHL DUP2 DIV PUSH4 0xFFFFFFFF AND SWAP5 POP PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 DIV PUSH1 0xFF AND DUP1 PUSH2 0x273E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0xE0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0xA0 SHL DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x20 DUP5 ADD DUP2 SWAP1 MSTORE PUSH2 0xFFFF PUSH1 0x1 PUSH1 0xB8 SHL DUP5 DIV DUP2 AND SWAP6 DUP6 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0x1 PUSH1 0xC8 SHL DUP4 DIV DUP6 AND PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0xD8 SHL DUP4 DIV SWAP1 SWAP5 AND PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xFF PUSH1 0x1 PUSH1 0xE8 SHL DUP4 DIV DUP2 AND PUSH1 0xA0 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 SWAP3 DIV SWAP1 SWAP2 AND ISZERO ISZERO PUSH1 0xC0 DUP4 ADD MSTORE SWAP1 SWAP4 POP DUP15 DUP2 SIGNEXTEND SWAP2 SWAP1 SIGNEXTEND SLT ISZERO SWAP1 POP PUSH2 0x27E7 JUMPI POP SWAP4 SWAP1 SWAP5 SUB SWAP7 POP SWAP1 SUB SWAP4 POP SWAP1 SUB SWAP1 POP PUSH2 0x286A JUMP JUMPDEST DUP11 PUSH1 0x2 SIGNEXTEND DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x2 SIGNEXTEND SLT ISZERO PUSH2 0x285B JUMPI PUSH1 0x0 PUSH2 0x2803 PUSH2 0x2B7E JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x4 SLOAD PUSH1 0x60 DUP7 ADD MLOAD SWAP4 SWAP5 POP PUSH1 0x0 SWAP4 DUP5 SWAP4 PUSH2 0x2839 SWAP4 PUSH1 0x8 SWAP4 DUP9 SWAP4 DUP8 SWAP4 SWAP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP1 PUSH2 0x32DF JUMP JUMPDEST SWAP11 SWAP1 SUB SWAP9 SWAP1 SWAP9 SUB SWAP12 POP POP SWAP5 SWAP1 SWAP7 SUB SWAP3 SWAP1 SWAP3 SUB SWAP7 POP SWAP1 SWAP2 SUB SUB SWAP3 POP PUSH2 0x286A SWAP2 POP POP JUMP JUMPDEST POP SWAP5 SWAP1 SWAP4 SUB SWAP7 POP SUB SWAP4 POP SWAP1 SUB SWAP1 POP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 SWAP1 SWAP4 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP4 AND SWAP4 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP4 DIV PUSH1 0xF SIGNEXTEND SWAP3 SWAP1 PUSH1 0x6 DUP2 SWAP1 SIGNEXTEND SWAP1 PUSH1 0x1 PUSH1 0x38 SHL DUP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH1 0x1 PUSH1 0xD8 SHL DUP2 DIV PUSH4 0xFFFFFFFF AND SWAP1 PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 DIV PUSH1 0xFF AND DUP9 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x29B4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4149 PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x29BF DUP3 PUSH2 0x35E1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x29D7 PUSH2 0x29CF PUSH2 0x2B7E JUMP JUMPDEST PUSH1 0x8 SWAP1 PUSH2 0x437B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xE0 DUP2 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP1 DUP3 MSTORE PUSH1 0x2 DUP9 DUP2 SIGNEXTEND PUSH1 0x20 DUP1 DUP6 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 DUP6 DUP8 ADD DUP2 SWAP1 MSTORE PUSH2 0xFFFF DUP10 DUP2 AND PUSH1 0x60 DUP9 ADD DUP2 SWAP1 MSTORE SWAP1 DUP10 AND PUSH1 0x80 DUP9 ADD DUP2 SWAP1 MSTORE PUSH1 0xA0 DUP9 ADD DUP4 SWAP1 MSTORE PUSH1 0x1 PUSH1 0xC0 SWAP1 SWAP9 ADD SWAP8 SWAP1 SWAP8 MSTORE DUP2 SLOAD PUSH1 0x1 PUSH1 0xF0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP2 AND DUP8 OR PUSH3 0xFFFFFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL PUSH3 0xFFFFFF SWAP8 DUP8 SWAP1 SIGNEXTEND SWAP8 SWAP1 SWAP8 AND SWAP7 SWAP1 SWAP7 MUL SWAP6 SWAP1 SWAP6 OR PUSH4 0xFFFFFFFF PUSH1 0xB8 SHL NOT AND PUSH1 0x1 PUSH1 0xC8 SHL SWAP1 SWAP2 MUL OR PUSH2 0xFFFF PUSH1 0xD8 SHL NOT AND PUSH1 0x1 PUSH1 0xD8 SHL SWAP1 SWAP7 MUL SWAP6 SWAP1 SWAP6 OR PUSH2 0xFFFF PUSH1 0xE8 SHL NOT AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP4 SSTORE DUP4 MLOAD SWAP2 DUP3 MSTORE DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 MLOAD SWAP4 SWAP6 POP SWAP2 SWAP4 POP PUSH32 0x98636036CB66A9C19A37435EFC1E90142190214E8ABEB821BDBA3F2990DD4C95 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x2 DUP2 SWAP1 SIGNEXTEND PUSH3 0xD89E7 NOT DUP2 PUSH2 0x2AF0 JUMPI INVALID JUMPDEST SDIV MUL SWAP1 POP PUSH1 0x0 DUP4 PUSH1 0x2 DUP2 SWAP1 SIGNEXTEND PUSH3 0xD89E8 DUP2 PUSH2 0x2B07 JUMPI INVALID JUMPDEST SDIV MUL SWAP1 POP PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND DUP4 DUP4 SUB PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x2B1E JUMPI INVALID JUMPDEST SDIV PUSH1 0x1 ADD SWAP1 POP DUP1 PUSH3 0xFFFFFF AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 AND DUP2 PUSH2 0x2B3B JUMPI INVALID JUMPDEST DIV SWAP4 POP POP POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x2B7C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST JUMP JUMPDEST TIMESTAMP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND DUP7 PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x2B96 JUMPI INVALID JUMPDEST SDIV SWAP1 POP PUSH1 0x0 DUP7 PUSH1 0x2 SIGNEXTEND SLT DUP1 ISZERO PUSH2 0x2BBD JUMPI POP DUP5 PUSH1 0x2 SIGNEXTEND DUP7 PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x2BB6 JUMPI INVALID JUMPDEST SMOD PUSH1 0x2 SIGNEXTEND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x2BC7 JUMPI PUSH1 0x0 NOT ADD JUMPDEST DUP4 ISZERO PUSH2 0x2C3C JUMPI PUSH1 0x0 DUP1 PUSH2 0x2BD9 DUP4 PUSH2 0x43C7 JUMP JUMPDEST PUSH1 0x1 DUP3 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP14 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF DUP4 AND SWAP2 SWAP1 SWAP2 SHL DUP1 ADD PUSH1 0x0 NOT ADD SWAP1 DUP2 AND DUP1 ISZERO ISZERO SWAP8 POP SWAP3 SWAP5 POP SWAP1 SWAP3 POP SWAP1 DUP6 PUSH2 0x2C1E JUMPI DUP9 DUP4 PUSH1 0xFF AND DUP7 SUB MUL PUSH2 0x2C31 JUMP JUMPDEST DUP9 PUSH2 0x2C28 DUP3 PUSH2 0x43D9 JUMP JUMPDEST DUP5 SUB PUSH1 0xFF AND DUP7 SUB MUL JUMPDEST SWAP7 POP POP POP POP POP PUSH2 0x2CBA JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2C4B DUP4 PUSH1 0x1 ADD PUSH2 0x43C7 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH1 0x1 DUP3 PUSH1 0xFF AND PUSH1 0x1 SWAP1 SHL SUB NOT SWAP1 POP PUSH1 0x0 DUP2 DUP12 PUSH1 0x0 DUP7 PUSH1 0x1 SIGNEXTEND PUSH1 0x1 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD AND SWAP1 POP DUP1 PUSH1 0x0 EQ ISZERO SWAP6 POP DUP6 PUSH2 0x2C9D JUMPI DUP9 DUP4 PUSH1 0xFF SUB PUSH1 0xFF AND DUP7 PUSH1 0x1 ADD ADD MUL PUSH2 0x2CB3 JUMP JUMPDEST DUP9 DUP4 PUSH2 0x2CA8 DUP4 PUSH2 0x4478 JUMP JUMPDEST SUB PUSH1 0xFF AND DUP7 PUSH1 0x1 ADD ADD MUL JUMPDEST SWAP7 POP POP POP POP POP JUMPDEST POP SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH1 0x2 SIGNEXTEND SLT PUSH2 0x2CDB JUMPI DUP3 PUSH1 0x2 SIGNEXTEND PUSH2 0x2CE3 JUMP JUMPDEST DUP3 PUSH1 0x2 SIGNEXTEND PUSH1 0x0 SUB JUMPDEST SWAP1 POP PUSH3 0xD89E8 DUP2 GT ISZERO PUSH2 0x2D21 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0xFA SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 AND PUSH2 0x2D35 JUMPI PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0x2D47 JUMP JUMPDEST PUSH16 0xFFFCB933BD6FAD37AA2D162D1A594001 JUMPDEST PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x2 DUP3 AND ISZERO PUSH2 0x2D7B JUMPI PUSH16 0xFFF97272373D413259A46990580E213A MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x4 DUP3 AND ISZERO PUSH2 0x2D9A JUMPI PUSH16 0xFFF2E50F5F656932EF12357CF3C7FDCC MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x8 DUP3 AND ISZERO PUSH2 0x2DB9 JUMPI PUSH16 0xFFE5CACA7E10E4E61C3624EAA0941CD0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x10 DUP3 AND ISZERO PUSH2 0x2DD8 JUMPI PUSH16 0xFFCB9843D60F6159C9DB58835C926644 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x20 DUP3 AND ISZERO PUSH2 0x2DF7 JUMPI PUSH16 0xFF973B41FA98C081472E6896DFB254C0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x40 DUP3 AND ISZERO PUSH2 0x2E16 JUMPI PUSH16 0xFF2EA16466C96A3843EC78B326B52861 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x80 DUP3 AND ISZERO PUSH2 0x2E35 JUMPI PUSH16 0xFE5DEE046A99A2A811C461F1969C3053 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x100 DUP3 AND ISZERO PUSH2 0x2E55 JUMPI PUSH16 0xFCBE86C7900A88AEDCFFC83B479AA3A4 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x200 DUP3 AND ISZERO PUSH2 0x2E75 JUMPI PUSH16 0xF987A7253AC413176F2B074CF7815E54 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x400 DUP3 AND ISZERO PUSH2 0x2E95 JUMPI PUSH16 0xF3392B0822B70005940C7A398E4B70F3 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x800 DUP3 AND ISZERO PUSH2 0x2EB5 JUMPI PUSH16 0xE7159475A2C29B7443B29C7FA6E889D9 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x1000 DUP3 AND ISZERO PUSH2 0x2ED5 JUMPI PUSH16 0xD097F3BDFD2022B8845AD8F792AA5825 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x2000 DUP3 AND ISZERO PUSH2 0x2EF5 JUMPI PUSH16 0xA9F746462D870FDF8A65DC1F90E061E5 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x4000 DUP3 AND ISZERO PUSH2 0x2F15 JUMPI PUSH16 0x70D869A156D2A1B890BB3DF62BAF32F7 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x8000 DUP3 AND ISZERO PUSH2 0x2F35 JUMPI PUSH16 0x31BE135F97D08FD981231505542FCFA6 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x10000 DUP3 AND ISZERO PUSH2 0x2F56 JUMPI PUSH16 0x9AA508B5B7A84E1C677DE54F3E99BC9 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x20000 DUP3 AND ISZERO PUSH2 0x2F76 JUMPI PUSH15 0x5D6AF8DEDB81196699C329225EE604 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x40000 DUP3 AND ISZERO PUSH2 0x2F95 JUMPI PUSH14 0x2216E584F5FA1EA926041BEDFE98 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x80000 DUP3 AND ISZERO PUSH2 0x2FB2 JUMPI PUSH12 0x48A170391F7DC42444E8FA2 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND SGT ISZERO PUSH2 0x2FCD JUMPI DUP1 PUSH1 0x0 NOT DUP2 PUSH2 0x2FC9 JUMPI INVALID JUMPDEST DIV SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0x20 SHL DUP2 MOD ISZERO PUSH2 0x2FE0 JUMPI PUSH1 0x1 PUSH2 0x2FE3 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0xFF AND PUSH1 0x20 DUP3 SWAP1 SHR ADD SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP10 AND SWAP1 DUP11 AND LT ISZERO DUP2 DUP8 SLT DUP1 ISZERO SWAP1 PUSH2 0x307A JUMPI PUSH1 0x0 PUSH2 0x302E DUP10 DUP10 PUSH3 0xF4240 SUB PUSH3 0xFFFFFF AND PUSH3 0xF4240 PUSH2 0x322F JUMP JUMPDEST SWAP1 POP DUP3 PUSH2 0x3047 JUMPI PUSH2 0x3042 DUP13 DUP13 DUP13 PUSH1 0x1 PUSH2 0x4562 JUMP JUMPDEST PUSH2 0x3054 JUMP JUMPDEST PUSH2 0x3054 DUP12 DUP14 DUP13 PUSH1 0x1 PUSH2 0x45DD JUMP JUMPDEST SWAP6 POP DUP6 DUP2 LT PUSH2 0x3065 JUMPI DUP11 SWAP7 POP PUSH2 0x3074 JUMP JUMPDEST PUSH2 0x3071 DUP13 DUP12 DUP4 DUP7 PUSH2 0x4688 JUMP JUMPDEST SWAP7 POP JUMPDEST POP PUSH2 0x30C4 JUMP JUMPDEST DUP2 PUSH2 0x3091 JUMPI PUSH2 0x308C DUP12 DUP12 DUP12 PUSH1 0x0 PUSH2 0x45DD JUMP JUMPDEST PUSH2 0x309E JUMP JUMPDEST PUSH2 0x309E DUP11 DUP13 DUP12 PUSH1 0x0 PUSH2 0x4562 JUMP JUMPDEST SWAP4 POP DUP4 DUP9 PUSH1 0x0 SUB LT PUSH2 0x30B2 JUMPI DUP10 SWAP6 POP PUSH2 0x30C4 JUMP JUMPDEST PUSH2 0x30C1 DUP12 DUP11 DUP11 PUSH1 0x0 SUB DUP6 PUSH2 0x46D4 JUMP JUMPDEST SWAP6 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 DUP2 AND SWAP1 DUP8 AND EQ DUP3 ISZERO PUSH2 0x3127 JUMPI DUP1 DUP1 ISZERO PUSH2 0x30E3 JUMPI POP DUP2 JUMPDEST PUSH2 0x30F9 JUMPI PUSH2 0x30F4 DUP8 DUP14 DUP13 PUSH1 0x1 PUSH2 0x45DD JUMP JUMPDEST PUSH2 0x30FB JUMP JUMPDEST DUP6 JUMPDEST SWAP6 POP DUP1 DUP1 ISZERO PUSH2 0x3108 JUMPI POP DUP2 ISZERO JUMPDEST PUSH2 0x311E JUMPI PUSH2 0x3119 DUP8 DUP14 DUP13 PUSH1 0x0 PUSH2 0x4562 JUMP JUMPDEST PUSH2 0x3120 JUMP JUMPDEST DUP5 JUMPDEST SWAP5 POP PUSH2 0x3171 JUMP JUMPDEST DUP1 DUP1 ISZERO PUSH2 0x3131 JUMPI POP DUP2 JUMPDEST PUSH2 0x3147 JUMPI PUSH2 0x3142 DUP13 DUP9 DUP13 PUSH1 0x1 PUSH2 0x4562 JUMP JUMPDEST PUSH2 0x3149 JUMP JUMPDEST DUP6 JUMPDEST SWAP6 POP DUP1 DUP1 ISZERO PUSH2 0x3156 JUMPI POP DUP2 ISZERO JUMPDEST PUSH2 0x316C JUMPI PUSH2 0x3167 DUP13 DUP9 DUP13 PUSH1 0x0 PUSH2 0x45DD JUMP JUMPDEST PUSH2 0x316E JUMP JUMPDEST DUP5 JUMPDEST SWAP5 POP JUMPDEST DUP2 ISZERO DUP1 ISZERO PUSH2 0x3181 JUMPI POP DUP9 PUSH1 0x0 SUB DUP6 GT JUMPDEST ISZERO PUSH2 0x318D JUMPI DUP9 PUSH1 0x0 SUB SWAP5 POP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x31AC JUMPI POP DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x31BB JUMPI DUP6 DUP10 SUB SWAP4 POP PUSH2 0x31D8 JUMP JUMPDEST PUSH2 0x31D5 DUP7 DUP10 PUSH3 0xFFFFFF AND DUP11 PUSH3 0xF4240 SUB PUSH3 0xFFFFFF AND PUSH2 0x40BA JUMP JUMPDEST SWAP4 POP JUMPDEST POP POP POP SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xFF SHL DUP3 LT PUSH2 0x31F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 SGT ISZERO PUSH1 0x0 DUP4 SLT ISZERO EQ PUSH2 0x3213 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 DUP2 ADD DUP3 DUP2 SLT ISZERO PUSH1 0x0 DUP4 SLT ISZERO EQ PUSH2 0x3213 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH1 0x0 NOT DUP6 DUP8 MULMOD DUP7 DUP7 MUL SWAP3 POP DUP3 DUP2 LT SWAP1 DUP4 SWAP1 SUB SUB SWAP1 POP DUP1 PUSH2 0x3265 JUMPI PUSH1 0x0 DUP5 GT PUSH2 0x325A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP3 SWAP1 DIV SWAP1 POP PUSH2 0x32D8 JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0x3271 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP7 DUP9 MULMOD PUSH1 0x0 DUP7 DUP2 SUB DUP8 AND SWAP7 DUP8 SWAP1 DIV SWAP7 PUSH1 0x2 PUSH1 0x3 DUP10 MUL DUP2 XOR DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL SWAP1 SWAP2 SUB MUL SWAP2 DUP2 SWAP1 SUB DUP2 SWAP1 DIV PUSH1 0x1 ADD DUP7 DUP5 GT SWAP1 SWAP6 SUB SWAP5 SWAP1 SWAP5 MUL SWAP2 SWAP1 SWAP5 SUB SWAP3 SWAP1 SWAP3 DIV SWAP2 SWAP1 SWAP2 OR SWAP2 SWAP1 SWAP2 MUL SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH4 0xFFFFFFFF DUP8 AND PUSH2 0x3385 JUMPI PUSH1 0x0 DUP10 DUP7 PUSH2 0xFFFF AND PUSH2 0xFFFF DUP2 LT PUSH2 0x3300 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE SWAP2 SWAP1 SWAP3 ADD SLOAD PUSH4 0xFFFFFFFF DUP1 DUP3 AND DUP1 DUP5 MSTORE PUSH1 0x1 PUSH1 0x20 SHL DUP4 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x58 SHL DUP4 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP5 DUP5 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP2 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP4 ADD MSTORE SWAP1 SWAP3 POP DUP11 AND EQ PUSH2 0x3371 JUMPI PUSH2 0x336E DUP2 DUP11 DUP10 DUP9 PUSH2 0x4720 JUMP JUMPDEST SWAP1 POP JUMPDEST DUP1 PUSH1 0x20 ADD MLOAD DUP2 PUSH1 0x40 ADD MLOAD SWAP3 POP SWAP3 POP POP PUSH2 0x3465 JUMP JUMPDEST DUP7 DUP9 SUB PUSH1 0x0 DUP1 PUSH2 0x339A DUP13 DUP13 DUP6 DUP13 DUP13 DUP13 DUP13 PUSH2 0x47C3 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH1 0x0 ADD MLOAD PUSH4 0xFFFFFFFF AND DUP4 PUSH4 0xFFFFFFFF AND EQ ISZERO PUSH2 0x33CC JUMPI DUP2 PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x40 ADD MLOAD SWAP5 POP SWAP5 POP POP POP POP PUSH2 0x3465 JUMP JUMPDEST DUP1 MLOAD PUSH4 0xFFFFFFFF DUP5 DUP2 AND SWAP2 AND EQ ISZERO PUSH2 0x33F4 JUMPI DUP1 PUSH1 0x20 ADD MLOAD DUP2 PUSH1 0x40 ADD MLOAD SWAP5 POP SWAP5 POP POP POP POP PUSH2 0x3465 JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD PUSH1 0x20 DUP1 DUP6 ADD MLOAD SWAP1 DUP5 ADD MLOAD SWAP2 DUP4 SWAP1 SUB SWAP3 DUP7 SUB SWAP2 PUSH4 0xFFFFFFFF DUP1 DUP5 AND SWAP3 SWAP1 DUP6 AND SWAP2 SUB PUSH1 0x6 SIGNEXTEND DUP2 PUSH2 0x3422 JUMPI INVALID JUMPDEST SDIV MUL DUP5 PUSH1 0x20 ADD MLOAD ADD DUP3 PUSH4 0xFFFFFFFF AND DUP3 PUSH4 0xFFFFFFFF AND DUP7 PUSH1 0x40 ADD MLOAD DUP7 PUSH1 0x40 ADD MLOAD SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL DUP2 PUSH2 0x3454 JUMPI INVALID JUMPDEST DIV DUP6 PUSH1 0x40 ADD MLOAD ADD SWAP7 POP SWAP7 POP POP POP POP POP POP JUMPDEST SWAP8 POP SWAP8 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SWAP6 DUP7 SIGNEXTEND DUP7 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP8 SWAP1 SWAP8 MSTORE PUSH1 0x40 SWAP1 SWAP7 KECCAK256 PUSH1 0x1 DUP2 ADD DUP1 SLOAD SWAP1 SWAP6 SUB SWAP1 SWAP5 SSTORE SWAP4 DUP4 ADD DUP1 SLOAD SWAP1 SWAP3 SUB SWAP1 SWAP2 SSTORE PUSH1 0x3 DUP3 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0xD8 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x1 PUSH1 0x38 SHL DUP1 DUP6 DIV DUP3 AND SWAP1 SWAP7 SUB AND SWAP1 SWAP5 MUL PUSH1 0x1 PUSH1 0x38 SHL PUSH1 0x1 PUSH1 0xD8 SHL SUB NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR PUSH1 0x6 DUP2 DUP2 SIGNEXTEND SWAP1 SWAP7 SUB SWAP1 SWAP6 SIGNEXTEND PUSH7 0xFFFFFFFFFFFFFF AND PUSH7 0xFFFFFFFFFFFFFF NOT SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR DUP3 DUP2 DIV DUP6 AND SWAP1 SWAP6 SUB SWAP1 SWAP4 AND MUL PUSH4 0xFFFFFFFF PUSH1 0xD8 SHL NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SSTORE SLOAD PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0xF SIGNEXTEND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0xF SIGNEXTEND SLT ISZERO PUSH2 0x3590 JUMPI DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP3 PUSH1 0x0 SUB DUP5 SUB SWAP2 POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND LT PUSH2 0x358B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4C53 PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x3213 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP3 DUP5 ADD SWAP2 POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND LT ISZERO PUSH2 0x3213 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4C41 PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH5 0x1000276A3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND LT DUP1 ISZERO SWAP1 PUSH2 0x361D JUMPI POP PUSH20 0xFFFD8963EFD1FC6A506488495D951D5263988D26 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND LT JUMPDEST PUSH2 0x3652 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0xF9 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH5 0x100000000 PUSH1 0x1 PUSH1 0xC0 SHL SUB PUSH1 0x20 DUP4 SWAP1 SHL AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 GT PUSH1 0x7 SHL DUP2 DUP2 SHR PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH1 0x6 SHL SWAP1 DUP2 SHR PUSH4 0xFFFFFFFF DUP2 GT PUSH1 0x5 SHL SWAP1 DUP2 SHR PUSH2 0xFFFF DUP2 GT PUSH1 0x4 SHL SWAP1 DUP2 SHR PUSH1 0xFF DUP2 GT PUSH1 0x3 SWAP1 DUP2 SHL SWAP2 DUP3 SHR PUSH1 0xF DUP2 GT PUSH1 0x2 SHL SWAP1 DUP2 SHR SWAP2 DUP3 GT PUSH1 0x1 SWAP1 DUP2 SHL SWAP3 DUP4 SHR SWAP8 SWAP1 DUP9 GT SWAP7 OR SWAP1 SWAP5 OR SWAP1 SWAP3 OR OR SWAP1 SWAP2 OR OR OR PUSH1 0x80 DUP2 LT PUSH2 0x36E6 JUMPI PUSH1 0x7F DUP2 SUB DUP4 SWAP1 SHR SWAP2 POP PUSH2 0x36F0 JUMP JUMPDEST DUP1 PUSH1 0x7F SUB DUP4 SWAP1 SHL SWAP2 POP JUMPDEST SWAP1 DUP1 MUL PUSH1 0x7F DUP2 DUP2 SHR PUSH1 0xFF DUP4 DUP2 SHR SWAP2 SWAP1 SWAP2 SHR DUP1 MUL DUP1 DUP4 SHR DUP2 DUP4 SHR SHR DUP1 MUL DUP1 DUP5 SHR DUP2 DUP5 SHR SHR DUP1 MUL DUP1 DUP6 SHR DUP2 DUP6 SHR SHR DUP1 MUL DUP1 DUP7 SHR DUP2 DUP7 SHR SHR DUP1 MUL DUP1 DUP8 SHR DUP2 DUP8 SHR SHR DUP1 MUL DUP1 DUP9 SHR DUP2 DUP9 SHR SHR DUP1 MUL DUP1 DUP10 SHR DUP2 DUP10 SHR SHR DUP1 MUL DUP1 DUP11 SHR DUP2 DUP11 SHR SHR DUP1 MUL DUP1 DUP12 SHR DUP2 DUP12 SHR SHR DUP1 MUL DUP1 DUP13 SHR DUP2 DUP13 SHR SHR DUP1 MUL DUP1 DUP14 SHR DUP2 DUP14 SHR SHR DUP1 MUL DUP1 DUP15 SHR SWAP13 DUP2 SWAP1 SHR SWAP13 SWAP1 SWAP13 SHR DUP1 MUL SWAP13 DUP14 SWAP1 SHR SWAP15 SWAP14 PUSH1 0x7F NOT DUP16 ADD PUSH1 0x40 SHL PUSH1 0xC0 SWAP2 SWAP1 SWAP2 SHR PUSH8 0x8000000000000000 AND OR PUSH1 0xC1 SWAP12 SWAP1 SWAP12 SHR PUSH8 0x4000000000000000 AND SWAP11 SWAP1 SWAP11 OR PUSH1 0xC2 SWAP10 SWAP1 SWAP10 SHR PUSH8 0x2000000000000000 AND SWAP9 SWAP1 SWAP9 OR PUSH1 0xC3 SWAP8 SWAP1 SWAP8 SHR PUSH8 0x1000000000000000 AND SWAP7 SWAP1 SWAP7 OR PUSH1 0xC4 SWAP6 SWAP1 SWAP6 SHR PUSH8 0x800000000000000 AND SWAP5 SWAP1 SWAP5 OR PUSH1 0xC5 SWAP4 SWAP1 SWAP4 SHR PUSH8 0x400000000000000 AND SWAP3 SWAP1 SWAP3 OR PUSH1 0xC6 SWAP2 SWAP1 SWAP2 SHR PUSH8 0x200000000000000 AND OR PUSH1 0xC7 SWAP2 SWAP1 SWAP2 SHR PUSH1 0x1 PUSH1 0x38 SHL AND OR PUSH1 0xC8 SWAP2 SWAP1 SWAP2 SHR PUSH7 0x80000000000000 AND OR PUSH1 0xC9 SWAP2 SWAP1 SWAP2 SHR PUSH7 0x40000000000000 AND OR PUSH1 0xCA SWAP2 SWAP1 SWAP2 SHR PUSH7 0x20000000000000 AND OR PUSH1 0xCB SWAP2 SWAP1 SWAP2 SHR PUSH7 0x10000000000000 AND OR PUSH1 0xCC SWAP2 SWAP1 SWAP2 SHR PUSH7 0x8000000000000 AND OR PUSH1 0xCD SWAP2 SWAP1 SWAP2 SHR PUSH7 0x4000000000000 AND OR PUSH10 0x3627A301D71055774C85 DUP2 MUL PUSH16 0x28F6481AB7F045A5AF012A19D003AA9 NOT DUP2 ADD PUSH1 0x80 SWAP1 DUP2 SAR SWAP1 PUSH16 0xDB2DF09E81959A81455E260799A0632F DUP4 ADD SWAP1 SAR PUSH1 0x2 DUP2 DUP2 SIGNEXTEND SWAP1 DUP4 SWAP1 SIGNEXTEND EQ PUSH2 0x38ED JUMPI DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x38D1 DUP3 PUSH2 0x2CC4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x38E6 JUMPI DUP2 PUSH2 0x38E8 JUMP JUMPDEST DUP1 JUMPDEST PUSH2 0x38EF JUMP JUMPDEST DUP2 JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP10 DUP10 PUSH2 0xFFFF AND PUSH2 0xFFFF DUP2 LT PUSH2 0x3912 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE SWAP2 SWAP1 SWAP3 ADD SLOAD PUSH4 0xFFFFFFFF DUP1 DUP3 AND DUP1 DUP5 MSTORE PUSH1 0x1 PUSH1 0x20 SHL DUP4 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x58 SHL DUP4 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP5 DUP5 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP2 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP4 ADD MSTORE SWAP1 SWAP3 POP DUP10 AND EQ ISZERO PUSH2 0x3981 JUMPI DUP9 DUP6 SWAP3 POP SWAP3 POP POP PUSH2 0x3465 JUMP JUMPDEST DUP5 PUSH2 0xFFFF AND DUP5 PUSH2 0xFFFF AND GT DUP1 ISZERO PUSH2 0x39A2 JUMPI POP PUSH1 0x1 DUP6 SUB PUSH2 0xFFFF AND DUP10 PUSH2 0xFFFF AND EQ JUMPDEST ISZERO PUSH2 0x39AF JUMPI DUP4 SWAP2 POP PUSH2 0x39B3 JUMP JUMPDEST DUP5 SWAP2 POP JUMPDEST DUP2 PUSH2 0xFFFF AND DUP10 PUSH1 0x1 ADD PUSH2 0xFFFF AND DUP2 PUSH2 0x39C7 JUMPI INVALID JUMPDEST MOD SWAP3 POP PUSH2 0x39D6 DUP2 DUP10 DUP10 DUP10 PUSH2 0x4720 JUMP JUMPDEST DUP11 DUP5 PUSH2 0xFFFF AND PUSH2 0xFFFF DUP2 LT PUSH2 0x39E7 JUMPI INVALID JUMPDEST DUP3 MLOAD SWAP2 ADD DUP1 SLOAD PUSH1 0x20 DUP5 ADD MLOAD PUSH1 0x40 DUP6 ADD MLOAD PUSH1 0x60 SWAP1 SWAP6 ADD MLOAD ISZERO ISZERO PUSH1 0x1 PUSH1 0xF8 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP7 AND PUSH1 0x1 PUSH1 0x58 SHL MUL PUSH32 0xFF0000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFF PUSH1 0x6 SWAP4 SWAP1 SWAP4 SIGNEXTEND PUSH7 0xFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0x20 SHL MUL PUSH11 0xFFFFFFFFFFFFFF00000000 NOT PUSH4 0xFFFFFFFF SWAP1 SWAP8 AND PUSH4 0xFFFFFFFF NOT SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR SWAP6 SWAP1 SWAP6 AND SWAP3 SWAP1 SWAP3 OR AND SWAP3 SWAP1 SWAP3 OR SWAP3 SWAP1 SWAP3 AND OR SWAP1 SSTORE POP SWAP8 POP SWAP8 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xA9059CBB PUSH1 0xE0 SHL OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 DUP6 SWAP5 SWAP4 DUP10 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x3B13 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x3AF4 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3B75 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3B7A JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x3BA8 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x3BA8 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3BA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x3BDE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x2A23 PUSH1 0xF1 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD ADDRESS PUSH1 0x24 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x70A08231 PUSH1 0xE0 SHL OR DUP2 MSTORE SWAP2 MLOAD DUP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 DUP5 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x3C7E JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x3C5F JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3CDE JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3CE3 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x3CF7 JUMPI POP PUSH1 0x20 DUP2 MLOAD LT ISZERO JUMPDEST PUSH2 0x3D00 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3D15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 POP POP POP SWAP1 JUMP JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0x3213 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD ADDRESS PUSH1 0x24 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x70A08231 PUSH1 0xE0 SHL OR DUP2 MSTORE SWAP2 MLOAD DUP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 DUP5 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 PUSH1 0x20 DUP4 LT PUSH2 0x3C7E JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x3C5F JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH2 0xFFFF AND GT PUSH2 0x3E04 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x49 PUSH1 0xF8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 PUSH2 0xFFFF AND DUP3 PUSH2 0xFFFF AND GT PUSH2 0x3E1A JUMPI POP DUP2 PUSH2 0x32D8 JUMP JUMPDEST DUP3 JUMPDEST DUP3 PUSH2 0xFFFF AND DUP2 PUSH2 0xFFFF AND LT ISZERO PUSH2 0x3E60 JUMPI PUSH1 0x1 DUP6 DUP3 PUSH2 0xFFFF AND PUSH2 0xFFFF DUP2 LT PUSH2 0x3E3F JUMPI INVALID JUMPDEST ADD DUP1 SLOAD PUSH4 0xFFFFFFFF NOT AND PUSH4 0xFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x1 ADD PUSH2 0x3E1C JUMP JUMPDEST POP SWAP1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 PUSH1 0xF DUP2 SWAP1 SIGNEXTEND DUP2 EQ PUSH2 0x2B42 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x3E87 PUSH2 0x2B47 JUMP JUMPDEST PUSH2 0x3E99 DUP5 PUSH1 0x20 ADD MLOAD DUP6 PUSH1 0x40 ADD MLOAD PUSH2 0x42B2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xE0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0xA0 SHL DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP1 DUP5 ADD DUP3 SWAP1 MSTORE PUSH2 0xFFFF PUSH1 0x1 PUSH1 0xB8 SHL DUP5 DIV DUP2 AND DUP6 DUP8 ADD MSTORE PUSH1 0x1 PUSH1 0xC8 SHL DUP5 DIV DUP2 AND PUSH1 0x60 DUP1 DUP8 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0xD8 SHL DUP6 DIV SWAP1 SWAP2 AND PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0xFF PUSH1 0x1 PUSH1 0xE8 SHL DUP6 DIV DUP2 AND PUSH1 0xA0 DUP8 ADD MSTORE PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 SWAP5 DIV SWAP1 SWAP4 AND ISZERO ISZERO PUSH1 0xC0 DUP6 ADD MSTORE DUP9 MLOAD SWAP1 DUP10 ADD MLOAD SWAP5 DUP10 ADD MLOAD SWAP3 DUP10 ADD MLOAD SWAP4 SWAP5 PUSH2 0x3F3D SWAP5 SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 SWAP1 PUSH2 0x49BD JUMP JUMPDEST SWAP4 POP DUP5 PUSH1 0x60 ADD MLOAD PUSH1 0xF SIGNEXTEND PUSH1 0x0 EQ PUSH2 0x40B2 JUMPI DUP5 PUSH1 0x20 ADD MLOAD PUSH1 0x2 SIGNEXTEND DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x2 SIGNEXTEND SLT ISZERO PUSH2 0x3F92 JUMPI PUSH2 0x3F8B PUSH2 0x3F74 DUP7 PUSH1 0x20 ADD MLOAD PUSH2 0x2CC4 JUMP JUMPDEST PUSH2 0x3F81 DUP8 PUSH1 0x40 ADD MLOAD PUSH2 0x2CC4 JUMP JUMPDEST DUP8 PUSH1 0x60 ADD MLOAD PUSH2 0x4B72 JUMP JUMPDEST SWAP3 POP PUSH2 0x40B2 JUMP JUMPDEST DUP5 PUSH1 0x40 ADD MLOAD PUSH1 0x2 SIGNEXTEND DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x2 SIGNEXTEND SLT ISZERO PUSH2 0x4088 JUMPI PUSH1 0x4 SLOAD PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH2 0x3FE4 SWAP1 PUSH2 0x3FC8 PUSH2 0x2B7E JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x60 DUP7 ADD MLOAD PUSH1 0x80 DUP8 ADD MLOAD PUSH1 0x8 SWAP5 SWAP4 SWAP3 SWAP2 DUP8 SWAP2 PUSH2 0x38FC JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFFFF PUSH1 0xC8 SHL NOT AND PUSH1 0x1 PUSH1 0xC8 SHL PUSH2 0xFFFF SWAP4 DUP5 AND MUL OR PUSH2 0xFFFF PUSH1 0xB8 SHL NOT AND PUSH1 0x1 PUSH1 0xB8 SHL SWAP4 SWAP1 SWAP3 AND SWAP3 SWAP1 SWAP3 MUL OR SWAP1 SSTORE DUP2 MLOAD PUSH1 0x40 DUP8 ADD MLOAD PUSH2 0x4034 SWAP2 SWAP1 PUSH2 0x402A SWAP1 PUSH2 0x2CC4 JUMP JUMPDEST DUP9 PUSH1 0x60 ADD MLOAD PUSH2 0x4B72 JUMP JUMPDEST SWAP4 POP PUSH2 0x4052 PUSH2 0x4046 DUP8 PUSH1 0x20 ADD MLOAD PUSH2 0x2CC4 JUMP JUMPDEST DUP4 MLOAD PUSH1 0x60 DUP10 ADD MLOAD PUSH2 0x4BB6 JUMP JUMPDEST SWAP3 POP PUSH2 0x4062 DUP2 DUP8 PUSH1 0x60 ADD MLOAD PUSH2 0x352B JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP PUSH2 0x40B2 JUMP JUMPDEST PUSH2 0x40AF PUSH2 0x4098 DUP7 PUSH1 0x20 ADD MLOAD PUSH2 0x2CC4 JUMP JUMPDEST PUSH2 0x40A5 DUP8 PUSH1 0x40 ADD MLOAD PUSH2 0x2CC4 JUMP JUMPDEST DUP8 PUSH1 0x60 ADD MLOAD PUSH2 0x4BB6 JUMP JUMPDEST SWAP2 POP JUMPDEST POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x40C7 DUP5 DUP5 DUP5 PUSH2 0x322F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 DUP1 PUSH2 0x40D3 JUMPI INVALID JUMPDEST DUP5 DUP7 MULMOD GT ISZERO PUSH2 0x32D8 JUMPI PUSH1 0x0 NOT DUP2 LT PUSH2 0x40EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 SWAP5 SWAP1 SWAP5 SHL PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP1 DUP7 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x2 SWAP4 DUP5 SIGNEXTEND PUSH1 0xE8 SWAP1 DUP2 SHL PUSH1 0x34 DUP8 ADD MSTORE SWAP3 SWAP1 SWAP4 SIGNEXTEND SWAP1 SWAP2 SHL PUSH1 0x37 DUP5 ADD MSTORE DUP1 MLOAD DUP1 DUP5 SUB PUSH1 0x1A ADD DUP2 MSTORE PUSH1 0x3A SWAP1 SWAP4 ADD DUP2 MSTORE DUP3 MLOAD SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 KECCAK256 PUSH1 0x0 SWAP1 DUP2 MSTORE SWAP3 SWAP1 MSTORE SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x0 DUP4 PUSH2 0xFFFF AND GT PUSH2 0x4198 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x49 PUSH1 0xF8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP7 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x41B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x41DA JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP2 POP DUP7 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x41F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x421F JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP8 MLOAD DUP2 LT ISZERO PUSH2 0x42A5 JUMPI PUSH2 0x4250 DUP11 DUP11 DUP11 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x423F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP11 DUP11 DUP11 DUP11 PUSH2 0x32DF JUMP JUMPDEST DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x425C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x426F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP DUP3 PUSH1 0x6 SIGNEXTEND PUSH1 0x6 SIGNEXTEND DUP2 MSTORE POP POP POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x4225 JUMP JUMPDEST POP SWAP8 POP SWAP8 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x2 SIGNEXTEND DUP3 PUSH1 0x2 SIGNEXTEND SLT PUSH2 0x42F2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x544C55 PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH3 0xD89E7 NOT PUSH1 0x2 DUP4 SWAP1 SIGNEXTEND SLT ISZERO PUSH2 0x4335 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x544C4D PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH3 0xD89E8 PUSH1 0x2 DUP3 SWAP1 SIGNEXTEND SGT ISZERO PUSH2 0x4377 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x54554D PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE PUSH4 0xFFFFFFFF SWAP3 DUP4 AND DUP1 DUP3 MSTORE PUSH1 0x0 PUSH1 0x20 DUP4 ADD DUP2 SWAP1 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0x60 SWAP1 SWAP2 ADD DUP2 SWAP1 MSTORE DUP4 SLOAD PUSH4 0xFFFFFFFF NOT AND SWAP1 SWAP2 OR SWAP1 SWAP2 AND PUSH1 0x1 PUSH1 0xF8 SHL OR SWAP1 SWAP2 SSTORE SWAP1 DUP2 SWAP1 JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND PUSH1 0x8 DUP2 SWAP1 SAR SWAP2 PUSH2 0x100 SWAP1 SWAP2 SMOD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0x43E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x80 SHL DUP3 LT PUSH2 0x43FA JUMPI PUSH1 0x80 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH9 0x10000000000000000 DUP3 LT PUSH2 0x4412 JUMPI PUSH1 0x40 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x1 PUSH1 0x20 SHL DUP3 LT PUSH2 0x4425 JUMPI PUSH1 0x20 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH3 0x10000 DUP3 LT PUSH2 0x4437 JUMPI PUSH1 0x10 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH2 0x100 DUP3 LT PUSH2 0x4448 JUMPI PUSH1 0x8 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x10 DUP3 LT PUSH2 0x4458 JUMPI PUSH1 0x4 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x4 DUP3 LT PUSH2 0x4468 JUMPI PUSH1 0x2 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x2 DUP3 LT PUSH2 0x2B42 JUMPI PUSH1 0x1 ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0x4486 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xFF PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 AND ISZERO PUSH2 0x44A1 JUMPI PUSH1 0x7F NOT ADD PUSH2 0x44A9 JUMP JUMPDEST PUSH1 0x80 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP3 AND ISZERO PUSH2 0x44C2 JUMPI PUSH1 0x3F NOT ADD PUSH2 0x44CA JUMP JUMPDEST PUSH1 0x40 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH4 0xFFFFFFFF DUP3 AND ISZERO PUSH2 0x44DF JUMPI PUSH1 0x1F NOT ADD PUSH2 0x44E7 JUMP JUMPDEST PUSH1 0x20 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH2 0xFFFF DUP3 AND ISZERO PUSH2 0x44FA JUMPI PUSH1 0xF NOT ADD PUSH2 0x4502 JUMP JUMPDEST PUSH1 0x10 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0xFF DUP3 AND ISZERO PUSH2 0x4514 JUMPI PUSH1 0x7 NOT ADD PUSH2 0x451C JUMP JUMPDEST PUSH1 0x8 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0xF DUP3 AND ISZERO PUSH2 0x452E JUMPI PUSH1 0x3 NOT ADD PUSH2 0x4536 JUMP JUMPDEST PUSH1 0x4 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0x3 DUP3 AND ISZERO PUSH2 0x4548 JUMPI PUSH1 0x1 NOT ADD PUSH2 0x4550 JUMP JUMPDEST PUSH1 0x2 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0x1 DUP3 AND ISZERO PUSH2 0x2B42 JUMPI PUSH1 0x0 NOT ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x4582 JUMPI SWAP3 SWAP4 SWAP3 JUMPDEST DUP2 PUSH2 0x45AF JUMPI PUSH2 0x45AA DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP7 DUP7 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x60 SHL PUSH2 0x322F JUMP JUMPDEST PUSH2 0x45D2 JUMP JUMPDEST PUSH2 0x45D2 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP7 DUP7 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x60 SHL PUSH2 0x40BA JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x45FD JUMPI SWAP3 SWAP4 SWAP3 JUMPDEST PUSH1 0x1 PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH1 0x60 DUP5 SWAP1 SHL AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP7 SUB DUP2 AND SWAP1 DUP8 AND PUSH2 0x4627 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 PUSH2 0x4657 JUMPI DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x464A DUP4 DUP4 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x322F JUMP JUMPDEST DUP2 PUSH2 0x4651 JUMPI INVALID JUMPDEST DIV PUSH2 0x467D JUMP JUMPDEST PUSH2 0x467D PUSH2 0x466E DUP4 DUP4 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x40BA JUMP JUMPDEST DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4BE5 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0x469F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT PUSH2 0x46B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH2 0x46C7 JUMPI PUSH2 0x45AA DUP6 DUP6 DUP6 PUSH1 0x1 PUSH2 0x4BF0 JUMP JUMPDEST PUSH2 0x45D2 DUP6 DUP6 DUP6 PUSH1 0x1 PUSH2 0x4CD1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0x46EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT PUSH2 0x4701 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH2 0x4713 JUMPI PUSH2 0x45AA DUP6 DUP6 DUP6 PUSH1 0x0 PUSH2 0x4CD1 JUMP JUMPDEST PUSH2 0x45D2 DUP6 DUP6 DUP6 PUSH1 0x0 PUSH2 0x4BF0 JUMP JUMPDEST PUSH2 0x4728 PUSH2 0x54F1 JUMP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x0 ADD MLOAD DUP6 SUB SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 DUP7 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH4 0xFFFFFFFF AND DUP7 PUSH1 0x2 SIGNEXTEND MUL DUP9 PUSH1 0x20 ADD MLOAD ADD PUSH1 0x6 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT PUSH2 0x477C JUMPI PUSH1 0x1 PUSH2 0x477E JUMP JUMPDEST DUP5 JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH4 0xFFFFFFFF PUSH1 0x80 SHL PUSH1 0x80 DUP6 SWAP1 SHL AND DUP2 PUSH2 0x479C JUMPI INVALID JUMPDEST DIV DUP9 PUSH1 0x40 ADD MLOAD ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 ISZERO ISZERO DUP2 MSTORE POP SWAP2 POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x47CB PUSH2 0x54F1 JUMP JUMPDEST PUSH2 0x47D3 PUSH2 0x54F1 JUMP JUMPDEST DUP9 DUP6 PUSH2 0xFFFF AND PUSH2 0xFFFF DUP2 LT PUSH2 0x47E4 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE SWAP2 SWAP1 SWAP3 ADD SLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP1 DUP4 MSTORE PUSH1 0x1 PUSH1 0x20 SHL DUP3 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x58 SHL DUP3 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP4 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP3 ADD MSTORE SWAP3 POP PUSH2 0x4848 SWAP1 DUP10 SWAP1 DUP10 PUSH2 0x4DB4 JUMP JUMPDEST ISZERO PUSH2 0x4880 JUMPI DUP7 PUSH4 0xFFFFFFFF AND DUP3 PUSH1 0x0 ADD MLOAD PUSH4 0xFFFFFFFF AND EQ ISZERO PUSH2 0x486A JUMPI PUSH2 0x3465 JUMP JUMPDEST DUP2 PUSH2 0x4877 DUP4 DUP10 DUP10 DUP9 PUSH2 0x4720 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x3465 JUMP JUMPDEST DUP9 DUP4 PUSH2 0xFFFF AND DUP7 PUSH1 0x1 ADD PUSH2 0xFFFF AND DUP2 PUSH2 0x4895 JUMPI INVALID JUMPDEST MOD PUSH2 0xFFFF AND PUSH2 0xFFFF DUP2 LT PUSH2 0x48A5 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE SWAP3 SWAP1 SWAP2 ADD SLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0x20 SHL DUP2 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x1 PUSH1 0x58 SHL DUP3 DIV AND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xFF PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP2 DIV AND ISZERO ISZERO PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE SWAP1 SWAP3 POP PUSH2 0x495A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE DUP11 SLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0x20 SHL DUP2 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x58 SHL DUP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP2 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP3 ADD MSTORE SWAP2 POP JUMPDEST PUSH2 0x4969 DUP9 DUP4 PUSH1 0x0 ADD MLOAD DUP10 PUSH2 0x4DB4 JUMP JUMPDEST PUSH2 0x49A0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x13D311 PUSH1 0xEA SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x49AD DUP10 DUP10 DUP10 DUP9 DUP8 PUSH2 0x4E75 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP8 POP SWAP8 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x49CC PUSH1 0x7 DUP8 DUP8 DUP8 PUSH2 0x40F4 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x2 SLOAD SWAP2 SWAP3 POP SWAP1 PUSH1 0x0 DUP1 PUSH1 0xF DUP8 SWAP1 SIGNEXTEND ISZERO PUSH2 0x4B12 JUMPI PUSH1 0x0 PUSH2 0x49ED PUSH2 0x2B7E JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x4 SLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 DUP3 SWAP2 PUSH2 0x4A37 SWAP2 PUSH1 0x8 SWAP2 DUP7 SWAP2 DUP6 SWAP2 PUSH1 0x1 PUSH1 0xA0 SHL DUP2 DIV PUSH1 0x2 SIGNEXTEND SWAP2 PUSH2 0xFFFF PUSH1 0x1 PUSH1 0xB8 SHL DUP4 DIV DUP2 AND SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH1 0x1 PUSH1 0xC8 SHL SWAP1 DIV AND PUSH2 0x32DF JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x4A71 PUSH1 0x5 DUP14 DUP12 DUP14 DUP12 DUP12 DUP8 DUP10 DUP12 PUSH1 0x0 PUSH32 0x0 PUSH2 0x5013 JUMP JUMPDEST SWAP5 POP PUSH2 0x4AA8 PUSH1 0x5 DUP13 DUP12 DUP14 DUP12 DUP12 DUP8 DUP10 DUP12 PUSH1 0x1 PUSH32 0x0 PUSH2 0x5013 JUMP JUMPDEST SWAP4 POP DUP5 ISZERO PUSH2 0x4ADC JUMPI PUSH2 0x4ADC PUSH1 0x6 DUP14 PUSH32 0x0 PUSH2 0x51CC JUMP JUMPDEST DUP4 ISZERO PUSH2 0x4B0E JUMPI PUSH2 0x4B0E PUSH1 0x6 DUP13 PUSH32 0x0 PUSH2 0x51CC JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x4B24 PUSH1 0x5 DUP13 DUP13 DUP12 DUP11 DUP11 PUSH2 0x5232 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x4B35 DUP8 DUP11 DUP5 DUP5 PUSH2 0x52DE JUMP JUMPDEST PUSH1 0x0 DUP10 PUSH1 0xF SIGNEXTEND SLT ISZERO PUSH2 0x4B63 JUMPI DUP4 ISZERO PUSH2 0x4B52 JUMPI PUSH2 0x4B52 PUSH1 0x5 DUP13 PUSH2 0x5473 JUMP JUMPDEST DUP3 ISZERO PUSH2 0x4B63 JUMPI PUSH2 0x4B63 PUSH1 0x5 DUP12 PUSH2 0x5473 JUMP JUMPDEST POP POP POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0xF SIGNEXTEND SLT PUSH2 0x4B98 JUMPI PUSH2 0x4B93 PUSH2 0x4B8E DUP6 DUP6 DUP6 PUSH1 0x1 PUSH2 0x45DD JUMP JUMPDEST PUSH2 0x31E7 JUMP JUMPDEST PUSH2 0x45D5 JUMP JUMPDEST PUSH2 0x4BAB PUSH2 0x4B8E DUP6 DUP6 DUP6 PUSH1 0x0 SUB PUSH1 0x0 PUSH2 0x45DD JUMP JUMPDEST PUSH1 0x0 SUB SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0xF SIGNEXTEND SLT PUSH2 0x4BD2 JUMPI PUSH2 0x4B93 PUSH2 0x4B8E DUP6 DUP6 DUP6 PUSH1 0x1 PUSH2 0x4562 JUMP JUMPDEST PUSH2 0x4BAB PUSH2 0x4B8E DUP6 DUP6 DUP6 PUSH1 0x0 SUB PUSH1 0x0 PUSH2 0x4562 JUMP JUMPDEST DUP1 DUP3 DIV SWAP2 MOD ISZERO ISZERO ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO PUSH2 0x4C63 JUMPI PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 GT ISZERO PUSH2 0x4C26 JUMPI PUSH2 0x4C21 DUP5 PUSH1 0x1 PUSH1 0x60 SHL DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x322F JUMP JUMPDEST PUSH2 0x4C3E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP6 AND PUSH1 0x60 DUP6 SWAP1 SHL DUP2 PUSH2 0x4C3C JUMPI INVALID JUMPDEST DIV JUMPDEST SWAP1 POP PUSH2 0x4C5B PUSH2 0x4C56 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP4 PUSH2 0x3D1E JUMP JUMPDEST PUSH2 0x549F JUMP JUMPDEST SWAP2 POP POP PUSH2 0x45D5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 GT ISZERO PUSH2 0x4C91 JUMPI PUSH2 0x4C8C DUP5 PUSH1 0x1 PUSH1 0x60 SHL DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x40BA JUMP JUMPDEST PUSH2 0x4CA8 JUMP JUMPDEST PUSH2 0x4CA8 PUSH1 0x60 DUP6 SWAP1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP8 AND PUSH2 0x4BE5 JUMP JUMPDEST SWAP1 POP DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0x4CBF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SUB SWAP1 POP PUSH2 0x45D5 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x4CDF JUMPI POP DUP4 PUSH2 0x45D5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH1 0x60 DUP6 SWAP1 SHL AND DUP3 ISZERO PUSH2 0x4D6D JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 DUP2 MUL SWAP1 DUP6 DUP3 DUP2 PUSH2 0x4D0D JUMPI INVALID JUMPDEST DIV EQ ISZERO PUSH2 0x4D3E JUMPI DUP2 DUP2 ADD DUP3 DUP2 LT PUSH2 0x4D3C JUMPI PUSH2 0x4D32 DUP4 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH2 0x40BA JUMP JUMPDEST SWAP4 POP POP POP POP PUSH2 0x45D5 JUMP JUMPDEST POP JUMPDEST PUSH2 0x4D64 DUP3 PUSH2 0x4D5F DUP8 DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 DUP2 PUSH2 0x4D58 JUMPI INVALID JUMPDEST DIV SWAP1 PUSH2 0x3D1E JUMP JUMPDEST PUSH2 0x4BE5 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x45D5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 DUP2 MUL SWAP1 DUP6 DUP3 DUP2 PUSH2 0x4D84 JUMPI INVALID JUMPDEST DIV EQ DUP1 ISZERO PUSH2 0x4D91 JUMPI POP DUP1 DUP3 GT JUMPDEST PUSH2 0x4D9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 DUP3 SUB PUSH2 0x4D32 PUSH2 0x4C56 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP5 PUSH2 0x40BA JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH4 0xFFFFFFFF AND DUP4 PUSH4 0xFFFFFFFF AND GT ISZERO DUP1 ISZERO PUSH2 0x4DDE JUMPI POP DUP4 PUSH4 0xFFFFFFFF AND DUP3 PUSH4 0xFFFFFFFF AND GT ISZERO JUMPDEST ISZERO PUSH2 0x4DFA JUMPI DUP2 PUSH4 0xFFFFFFFF AND DUP4 PUSH4 0xFFFFFFFF AND GT ISZERO SWAP1 POP PUSH2 0x32D8 JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH4 0xFFFFFFFF AND DUP5 PUSH4 0xFFFFFFFF AND GT PUSH2 0x4E21 JUMPI DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0x1 PUSH1 0x20 SHL ADD PUSH2 0x4E29 JUMP JUMPDEST DUP4 PUSH4 0xFFFFFFFF AND JUMPDEST PUSH5 0xFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 DUP6 PUSH4 0xFFFFFFFF AND DUP5 PUSH4 0xFFFFFFFF AND GT PUSH2 0x4E59 JUMPI DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0x1 PUSH1 0x20 SHL ADD PUSH2 0x4E61 JUMP JUMPDEST DUP4 PUSH4 0xFFFFFFFF AND JUMPDEST PUSH5 0xFFFFFFFFFF AND SWAP1 SWAP2 GT ISZERO SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x4E7D PUSH2 0x54F1 JUMP JUMPDEST PUSH2 0x4E85 PUSH2 0x54F1 JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH2 0xFFFF AND DUP6 PUSH1 0x1 ADD PUSH2 0xFFFF AND DUP2 PUSH2 0x4E9B JUMPI INVALID JUMPDEST MOD PUSH2 0xFFFF AND SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP6 PUSH2 0xFFFF AND DUP4 ADD SUB SWAP1 POP PUSH1 0x0 JUMPDEST POP PUSH1 0x2 DUP2 DUP4 ADD DIV DUP10 PUSH2 0xFFFF DUP8 AND DUP3 DUP2 PUSH2 0x4EC8 JUMPI INVALID JUMPDEST MOD PUSH2 0xFFFF DUP2 LT PUSH2 0x4ED4 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE SWAP3 SWAP1 SWAP2 ADD SLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0x20 SHL DUP2 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x1 PUSH1 0x58 SHL DUP3 DIV AND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xFF PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP2 DIV AND ISZERO ISZERO PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE SWAP1 SWAP6 POP PUSH2 0x4F3E JUMPI DUP1 PUSH1 0x1 ADD SWAP3 POP PUSH2 0x4EB3 JUMP JUMPDEST DUP10 DUP7 PUSH2 0xFFFF AND DUP3 PUSH1 0x1 ADD DUP2 PUSH2 0x4F4F JUMPI INVALID JUMPDEST MOD PUSH2 0xFFFF DUP2 LT PUSH2 0x4F5B JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE SWAP3 SWAP1 SWAP2 ADD SLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0x20 SHL DUP2 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x1 PUSH1 0x58 SHL DUP3 DIV AND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xFF PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP2 DIV AND ISZERO ISZERO PUSH1 0x60 DUP3 ADD MSTORE DUP6 MLOAD SWAP1 SWAP5 POP PUSH1 0x0 SWAP1 PUSH2 0x4FC5 SWAP1 DUP12 SWAP1 DUP12 PUSH2 0x4DB4 JUMP JUMPDEST SWAP1 POP DUP1 DUP1 ISZERO PUSH2 0x4FDE JUMPI POP PUSH2 0x4FDE DUP11 DUP11 DUP8 PUSH1 0x0 ADD MLOAD PUSH2 0x4DB4 JUMP JUMPDEST ISZERO PUSH2 0x4FE9 JUMPI POP PUSH2 0x5006 JUMP JUMPDEST DUP1 PUSH2 0x4FF9 JUMPI PUSH1 0x1 DUP3 SUB SWAP3 POP PUSH2 0x5000 JUMP JUMPDEST DUP2 PUSH1 0x1 ADD SWAP4 POP JUMPDEST POP PUSH2 0x4EB3 JUMP JUMPDEST POP POP POP SWAP6 POP SWAP6 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP11 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP13 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP3 PUSH2 0x503E DUP3 DUP14 PUSH2 0x352B JUMP JUMPDEST SWAP1 POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT ISZERO PUSH2 0x508C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4C4F PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 DUP2 AND ISZERO SWAP1 DUP3 AND ISZERO DUP2 EQ ISZERO SWAP5 POP ISZERO PUSH2 0x5131 JUMPI DUP13 PUSH1 0x2 SIGNEXTEND DUP15 PUSH1 0x2 SIGNEXTEND SGT PUSH2 0x5119 JUMPI PUSH1 0x1 DUP4 ADD DUP12 SWAP1 SSTORE PUSH1 0x2 DUP4 ADD DUP11 SWAP1 SSTORE PUSH1 0x3 DUP4 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x38 SHL PUSH1 0x1 PUSH1 0xD8 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x38 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND MUL OR PUSH7 0xFFFFFFFFFFFFFF NOT AND PUSH7 0xFFFFFFFFFFFFFF PUSH1 0x6 DUP12 SWAP1 SIGNEXTEND AND OR PUSH4 0xFFFFFFFF PUSH1 0xD8 SHL NOT AND PUSH1 0x1 PUSH1 0xD8 SHL PUSH4 0xFFFFFFFF DUP11 AND MUL OR SWAP1 SSTORE JUMPDEST PUSH1 0x3 DUP4 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB AND PUSH1 0x1 PUSH1 0xF8 SHL OR SWAP1 SSTORE JUMPDEST DUP3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 AND OR DUP4 SSTORE DUP6 PUSH2 0x517A JUMPI DUP3 SLOAD PUSH2 0x5175 SWAP1 PUSH2 0x5170 SWAP1 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0xF SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 DUP16 SWAP1 SIGNEXTEND PUSH2 0x3219 JUMP JUMPDEST PUSH2 0x3E69 JUMP JUMPDEST PUSH2 0x519B JUMP JUMPDEST DUP3 SLOAD PUSH2 0x519B SWAP1 PUSH2 0x5170 SWAP1 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0xF SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 DUP16 SWAP1 SIGNEXTEND PUSH2 0x31FD JUMP JUMPDEST DUP4 SLOAD PUSH1 0xF SWAP2 SWAP1 SWAP2 SIGNEXTEND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 DUP2 AND PUSH1 0x1 PUSH1 0x80 SHL MUL SWAP2 AND OR SWAP1 SWAP3 SSTORE POP SWAP1 SWAP13 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x2 SIGNEXTEND DUP3 PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x51DB JUMPI INVALID JUMPDEST SMOD PUSH1 0x2 SIGNEXTEND ISZERO PUSH2 0x51E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x5204 DUP4 PUSH1 0x2 SIGNEXTEND DUP6 PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x51FE JUMPI INVALID JUMPDEST SDIV PUSH2 0x43C7 JUMP JUMPDEST PUSH1 0x1 SWAP2 DUP3 SIGNEXTEND DUP3 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP8 SWAP1 SWAP8 MSTORE PUSH1 0x40 SWAP1 SWAP7 KECCAK256 DUP1 SLOAD PUSH1 0xFF SWAP1 SWAP8 AND SWAP2 SWAP1 SWAP2 SHL SWAP1 SWAP6 XOR SWAP1 SWAP5 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP6 DUP2 SIGNEXTEND DUP1 DUP3 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP10 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP9 DUP6 SIGNEXTEND DUP6 SIGNEXTEND DUP4 MSTORE SWAP1 DUP3 KECCAK256 SWAP2 SWAP4 DUP5 SWAP4 SWAP2 SWAP3 SWAP2 DUP5 SWAP2 DUP3 SWAP2 SWAP1 DUP11 SWAP1 SIGNEXTEND SLT PUSH2 0x5278 JUMPI POP POP PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH2 0x528B JUMP JUMPDEST DUP4 PUSH1 0x1 ADD SLOAD DUP9 SUB SWAP2 POP DUP4 PUSH1 0x2 ADD SLOAD DUP8 SUB SWAP1 POP JUMPDEST PUSH1 0x0 DUP1 DUP12 PUSH1 0x2 SIGNEXTEND DUP12 PUSH1 0x2 SIGNEXTEND SLT ISZERO PUSH2 0x52AD JUMPI POP POP PUSH1 0x1 DUP4 ADD SLOAD PUSH1 0x2 DUP5 ADD SLOAD PUSH2 0x52C0 JUMP JUMPDEST DUP5 PUSH1 0x1 ADD SLOAD DUP11 SUB SWAP2 POP DUP5 PUSH1 0x2 ADD SLOAD DUP10 SUB SWAP1 POP JUMPDEST SWAP3 SWAP1 SWAP9 SUB SWAP8 SWAP1 SWAP8 SUB SWAP12 SWAP7 SWAP1 SWAP6 SUB SWAP5 SWAP1 SWAP5 SUB SWAP9 POP SWAP4 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE DUP6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x1 DUP8 ADD SLOAD PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x2 DUP8 ADD SLOAD SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x3 DUP7 ADD SLOAD DUP1 DUP4 AND PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV SWAP1 SWAP2 AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0xF DUP6 SWAP1 SIGNEXTEND PUSH2 0x537D JUMPI DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x5375 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4E5 PUSH1 0xF4 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH2 0x538C JUMP JUMPDEST DUP2 MLOAD PUSH2 0x5389 SWAP1 DUP7 PUSH2 0x352B JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x0 PUSH2 0x53B0 DUP4 PUSH1 0x20 ADD MLOAD DUP7 SUB DUP5 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0x322F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x53D6 DUP5 PUSH1 0x40 ADD MLOAD DUP7 SUB DUP6 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0x322F JUMP JUMPDEST SWAP1 POP DUP7 PUSH1 0xF SIGNEXTEND PUSH1 0x0 EQ PUSH2 0x53FD JUMPI DUP8 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP5 AND OR DUP9 SSTORE JUMPDEST PUSH1 0x1 DUP9 ADD DUP7 SWAP1 SSTORE PUSH1 0x2 DUP9 ADD DUP6 SWAP1 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 AND ISZERO ISZERO DUP1 PUSH2 0x542B JUMPI POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT JUMPDEST ISZERO PUSH2 0x5469 JUMPI PUSH1 0x3 DUP9 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP2 DUP3 AND DUP6 ADD DUP3 AND OR DUP1 DUP3 AND PUSH1 0x1 PUSH1 0x80 SHL SWAP2 DUP3 SWAP1 DIV DUP4 AND DUP6 ADD SWAP1 SWAP3 AND MUL OR SWAP1 SSTORE JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 DUP3 KECCAK256 DUP3 DUP2 SSTORE PUSH1 0x1 DUP2 ADD DUP4 SWAP1 SSTORE SWAP1 DUP2 ADD DUP3 SWAP1 SSTORE PUSH1 0x3 ADD SSTORE JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x2B42 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xE0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xA0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xC0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC 0x1F SWAP4 DUP8 JUMPDEST 0xF6 SWAP12 0xD8 0x23 PUSH13 0xED6FA61DB810CF06B5C548147 EXP 0xC7 0xA6 BALANCE 0xEB 0x4E NUMBER 0xC8 SLT PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP4 0xA7 0xAE LOG0 0xDD OR JUMPI 0xBC SWAP10 0x24 SLT PUSH5 0xE80FAEAC54 0xE DUP10 PUSH13 0xF901842457B186425E3E809964 PUSH20 0x6F6C634300070600330000000000000000000000 ", - "sourceMap": "344:2503:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2008:163;;;;;;;;;;;;;;;;-1:-1:-1;2008:163:4;-1:-1:-1;;;;;2008:163:4;;:::i;:::-;;653:90;;;;;;;;;;;;;;;;-1:-1:-1;653:90:4;;-1:-1:-1;;;;;653:90:4;;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;653:90:4;;;;;;;;;;;;;;548:61;;;;;;;;;;;;;;;;-1:-1:-1;548:61:4;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;401:37:6;;;:::i;:::-;;;;-1:-1:-1;;;;;401:37:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2215:630:4;;;;;;;;;;;;;;;;-1:-1:-1;2215:630:4;;;;;;;;;;;:::i;474:29::-;;;:::i;1143:821::-;;;;;;;;;;;;;;;;-1:-1:-1;1143:821:4;;-1:-1:-1;;;;;1143:821:4;;;;;;;;;;;;;;;;;;:::i;2008:163::-;2092:5;;-1:-1:-1;;;;;2092:5:4;2078:10;:19;2070:28;;;;;;2126:5;;2113:27;;-1:-1:-1;;;;;2113:27:4;;;;2126:5;;2113:27;;2126:5;;2113:27;2150:5;:14;;-1:-1:-1;;;;;;2150:14:4;-1:-1:-1;;;;;2150:14:4;;;;;;;;;;2008:163::o;653:90::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;653:90:4;;:::o;548:61::-;;;;;;;;;;;;;;;:::o;401:37:6:-;;;;;;;;-1:-1:-1;;;;;401:37:6;;;;;;;;;;;;-1:-1:-1;;;401:37:6;;;;-1:-1:-1;;;401:37:6;;;;;:::o;2215:630:4:-;2319:5;;-1:-1:-1;;;;;2319:5:4;2305:10;:19;2297:28;;;;;;2349:7;2343:3;:13;;;2335:22;;;;;;2665:1;2651:11;:15;;;:38;;;;;2684:5;2670:11;:19;;;2651:38;2643:47;;;;;;2708:25;;;;;;;:20;:25;;;;;;;;;;:30;;;2700:39;;;;;;2750:25;;;;;;;;:20;:25;;;;;;:39;;-1:-1:-1;;2750:39:4;;;;;;;;;;;2804:34;;;2750:25;2804:34;2215:630;;:::o;474:29::-;;;-1:-1:-1;;;;;474:29:4;;:::o;1143:821::-;1279:12;1036:22:3;:20;:22::i;:::-;1321:6:4::1;-1:-1:-1::0;;;;;1311:16:4::1;:6;-1:-1:-1::0;;;;;1311:16:4::1;;;1303:25;;;::::0;::::1;;1339:14;1355::::0;1382:6:::1;-1:-1:-1::0;;;;;1373:15:4::1;:6;-1:-1:-1::0;;;;;1373:15:4::1;;:53;;1411:6;1419;1373:53;;;1392:6;1400;1373:53;1338:88:::0;;-1:-1:-1;1338:88:4;-1:-1:-1;;;;;;1444:20:4;::::1;1436:29;;;::::0;::::1;;1495:25;::::0;::::1;1475:17;1495:25:::0;;;:20:::1;:25;::::0;;;;;::::1;::::0;;::::1;::::0;1538:16;;::::1;1530:25;;;::::0;::::1;;-1:-1:-1::0;;;;;1573:15:4;;::::1;1613:1;1573:15:::0;;;:7:::1;:15;::::0;;;;;;;:23;;::::1;::::0;;;;;;;:28:::1;::::0;::::1;::::0;;;;;;;;::::1;:42:::0;1565:51:::1;;;::::0;::::1;;1633:55;1648:4;1655:6;1663;1671:3;1676:11;1633:6;:55::i;:::-;-1:-1:-1::0;;;;;1698:15:4;;::::1;;::::0;;;:7:::1;:15;::::0;;;;;;;:23;;::::1;::::0;;;;;;;;;:28:::1;::::0;::::1;::::0;;;;;;;;;:35;;;;::::1;-1:-1:-1::0;;;;;;1698:35:4;;::::1;::::0;::::1;::::0;;;1856:15;;;;;;;;;:23;;;;;;;;:28;;;;;;;;;:35;;;;::::1;::::0;::::1;::::0;;;1906:51;;::::1;::::0;;::::1;::::0;;;;::::1;::::0;;;;;;1626:62;;-1:-1:-1;1698:28:4;;1906:51:::1;::::0;;;;;;;;::::1;1068:1:3;;;1143:821:4::0;;;;;:::o;835:96:3:-;906:4;-1:-1:-1;;;;;915:8:3;898:25;;890:34;;;;;;835:96::o;981:424:6:-;1178:98;;;;;;;;-1:-1:-1;;;;;1178:98:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1165:111:6;;-1:-1:-1;;;;;;1165:111:6;;;;;;;;-1:-1:-1;1165:111:6;;;;;;;;;;;;;;;-1:-1:-1;;;;1165:111:6;-1:-1:-1;;;1165:111:6;;;-1:-1:-1;;;;1165:111:6;-1:-1:-1;;;1165:111:6;;;;;;;;;;;;;;1335:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1325:42;;;;;;;;;;-1:-1:-1;;1301:69:6;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1388:10:6;1381:17;;-1:-1:-1;;;;;;1381:17:6;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1381:17:6;;;1286:85;981:424;-1:-1:-1;;;;;;981:424:6:o;-1:-1:-1:-;;;;;;;;:::o" - }, - "methodIdentifiers": { - "createPool(address,address,uint24)": "a1671295", - "enableFeeAmount(uint24,int24)": "8a7c195f", - "feeAmountTickSpacing(uint24)": "22afcccb", - "getPool(address,address,uint24)": "1698ee82", - "owner()": "8da5cb5b", - "parameters()": "89035730", - "setOwner(address)": "13af4035" - } - }, - "storageLayout": { - "storage": [ - { - "astId": 3512, - "contract": "@uniswap/v3-core/contracts/UniswapV3Factory.sol:UniswapV3Factory", - "label": "parameters", - "offset": 0, - "slot": "0", - "type": "t_struct(Parameters)3508_storage" - }, - { - "astId": 753, - "contract": "@uniswap/v3-core/contracts/UniswapV3Factory.sol:UniswapV3Factory", - "label": "owner", - "offset": 0, - "slot": "3", - "type": "t_address" - }, - { - "astId": 759, - "contract": "@uniswap/v3-core/contracts/UniswapV3Factory.sol:UniswapV3Factory", - "label": "feeAmountTickSpacing", - "offset": 0, - "slot": "4", - "type": "t_mapping(t_uint24,t_int24)" - }, - { - "astId": 769, - "contract": "@uniswap/v3-core/contracts/UniswapV3Factory.sol:UniswapV3Factory", - "label": "getPool", - "offset": 0, - "slot": "5", - "type": "t_mapping(t_address,t_mapping(t_address,t_mapping(t_uint24,t_address)))" - } - ], - "types": { - "t_address": { - "encoding": "inplace", - "label": "address", - "numberOfBytes": "20" - }, - "t_int24": { - "encoding": "inplace", - "label": "int24", - "numberOfBytes": "3" - }, - "t_mapping(t_address,t_mapping(t_address,t_mapping(t_uint24,t_address)))": { - "encoding": "mapping", - "key": "t_address", - "label": "mapping(address => mapping(address => mapping(uint24 => address)))", - "numberOfBytes": "32", - "value": "t_mapping(t_address,t_mapping(t_uint24,t_address))" - }, - "t_mapping(t_address,t_mapping(t_uint24,t_address))": { - "encoding": "mapping", - "key": "t_address", - "label": "mapping(address => mapping(uint24 => address))", - "numberOfBytes": "32", - "value": "t_mapping(t_uint24,t_address)" - }, - "t_mapping(t_uint24,t_address)": { - "encoding": "mapping", - "key": "t_uint24", - "label": "mapping(uint24 => address)", - "numberOfBytes": "32", - "value": "t_address" - }, - "t_mapping(t_uint24,t_int24)": { - "encoding": "mapping", - "key": "t_uint24", - "label": "mapping(uint24 => int24)", - "numberOfBytes": "32", - "value": "t_int24" - }, - "t_struct(Parameters)3508_storage": { - "encoding": "inplace", - "label": "struct UniswapV3PoolDeployer.Parameters", - "members": [ - { - "astId": 3499, - "contract": "@uniswap/v3-core/contracts/UniswapV3Factory.sol:UniswapV3Factory", - "label": "factory", - "offset": 0, - "slot": "0", - "type": "t_address" - }, - { - "astId": 3501, - "contract": "@uniswap/v3-core/contracts/UniswapV3Factory.sol:UniswapV3Factory", - "label": "token0", - "offset": 0, - "slot": "1", - "type": "t_address" - }, - { - "astId": 3503, - "contract": "@uniswap/v3-core/contracts/UniswapV3Factory.sol:UniswapV3Factory", - "label": "token1", - "offset": 0, - "slot": "2", - "type": "t_address" - }, - { - "astId": 3505, - "contract": "@uniswap/v3-core/contracts/UniswapV3Factory.sol:UniswapV3Factory", - "label": "fee", - "offset": 20, - "slot": "2", - "type": "t_uint24" - }, - { - "astId": 3507, - "contract": "@uniswap/v3-core/contracts/UniswapV3Factory.sol:UniswapV3Factory", - "label": "tickSpacing", - "offset": 23, - "slot": "2", - "type": "t_int24" - } - ], - "numberOfBytes": "96" - }, - "t_uint24": { - "encoding": "inplace", - "label": "uint24", - "numberOfBytes": "3" - } - } - } - } - }, - "@uniswap/v3-core/contracts/UniswapV3Pool.sol": { - "UniswapV3Pool": { - "abi": [ - { - "inputs": [], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "int24", - "name": "tickLower", - "type": "int24" - }, - { - "indexed": true, - "internalType": "int24", - "name": "tickUpper", - "type": "int24" - }, - { - "indexed": false, - "internalType": "uint128", - "name": "amount", - "type": "uint128" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount0", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount1", - "type": "uint256" - } - ], - "name": "Burn", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "indexed": true, - "internalType": "int24", - "name": "tickLower", - "type": "int24" - }, - { - "indexed": true, - "internalType": "int24", - "name": "tickUpper", - "type": "int24" - }, - { - "indexed": false, - "internalType": "uint128", - "name": "amount0", - "type": "uint128" - }, - { - "indexed": false, - "internalType": "uint128", - "name": "amount1", - "type": "uint128" - } - ], - "name": "Collect", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint128", - "name": "amount0", - "type": "uint128" - }, - { - "indexed": false, - "internalType": "uint128", - "name": "amount1", - "type": "uint128" - } - ], - "name": "CollectProtocol", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount0", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount1", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "paid0", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "paid1", - "type": "uint256" - } - ], - "name": "Flash", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint16", - "name": "observationCardinalityNextOld", - "type": "uint16" - }, - { - "indexed": false, - "internalType": "uint16", - "name": "observationCardinalityNextNew", - "type": "uint16" - } - ], - "name": "IncreaseObservationCardinalityNext", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint160", - "name": "sqrtPriceX96", - "type": "uint160" - }, - { - "indexed": false, - "internalType": "int24", - "name": "tick", - "type": "int24" - } - ], - "name": "Initialize", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "int24", - "name": "tickLower", - "type": "int24" - }, - { - "indexed": true, - "internalType": "int24", - "name": "tickUpper", - "type": "int24" - }, - { - "indexed": false, - "internalType": "uint128", - "name": "amount", - "type": "uint128" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount0", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount1", - "type": "uint256" - } - ], - "name": "Mint", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint8", - "name": "feeProtocol0Old", - "type": "uint8" - }, - { - "indexed": false, - "internalType": "uint8", - "name": "feeProtocol1Old", - "type": "uint8" - }, - { - "indexed": false, - "internalType": "uint8", - "name": "feeProtocol0New", - "type": "uint8" - }, - { - "indexed": false, - "internalType": "uint8", - "name": "feeProtocol1New", - "type": "uint8" - } - ], - "name": "SetFeeProtocol", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "indexed": false, - "internalType": "int256", - "name": "amount0", - "type": "int256" - }, - { - "indexed": false, - "internalType": "int256", - "name": "amount1", - "type": "int256" - }, - { - "indexed": false, - "internalType": "uint160", - "name": "sqrtPriceX96", - "type": "uint160" - }, - { - "indexed": false, - "internalType": "uint128", - "name": "liquidity", - "type": "uint128" - }, - { - "indexed": false, - "internalType": "int24", - "name": "tick", - "type": "int24" - } - ], - "name": "Swap", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "int24", - "name": "tickLower", - "type": "int24" - }, - { - "internalType": "int24", - "name": "tickUpper", - "type": "int24" - }, - { - "internalType": "uint128", - "name": "amount", - "type": "uint128" - } - ], - "name": "burn", - "outputs": [ - { - "internalType": "uint256", - "name": "amount0", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amount1", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "int24", - "name": "tickLower", - "type": "int24" - }, - { - "internalType": "int24", - "name": "tickUpper", - "type": "int24" - }, - { - "internalType": "uint128", - "name": "amount0Requested", - "type": "uint128" - }, - { - "internalType": "uint128", - "name": "amount1Requested", - "type": "uint128" - } - ], - "name": "collect", - "outputs": [ - { - "internalType": "uint128", - "name": "amount0", - "type": "uint128" - }, - { - "internalType": "uint128", - "name": "amount1", - "type": "uint128" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "uint128", - "name": "amount0Requested", - "type": "uint128" - }, - { - "internalType": "uint128", - "name": "amount1Requested", - "type": "uint128" - } - ], - "name": "collectProtocol", - "outputs": [ - { - "internalType": "uint128", - "name": "amount0", - "type": "uint128" - }, - { - "internalType": "uint128", - "name": "amount1", - "type": "uint128" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "factory", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "fee", - "outputs": [ - { - "internalType": "uint24", - "name": "", - "type": "uint24" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "feeGrowthGlobal0X128", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "feeGrowthGlobal1X128", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount0", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amount1", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "flash", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "observationCardinalityNext", - "type": "uint16" - } - ], - "name": "increaseObservationCardinalityNext", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint160", - "name": "sqrtPriceX96", - "type": "uint160" - } - ], - "name": "initialize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "liquidity", - "outputs": [ - { - "internalType": "uint128", - "name": "", - "type": "uint128" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "maxLiquidityPerTick", - "outputs": [ - { - "internalType": "uint128", - "name": "", - "type": "uint128" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "int24", - "name": "tickLower", - "type": "int24" - }, - { - "internalType": "int24", - "name": "tickUpper", - "type": "int24" - }, - { - "internalType": "uint128", - "name": "amount", - "type": "uint128" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "mint", - "outputs": [ - { - "internalType": "uint256", - "name": "amount0", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amount1", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "observations", - "outputs": [ - { - "internalType": "uint32", - "name": "blockTimestamp", - "type": "uint32" - }, - { - "internalType": "int56", - "name": "tickCumulative", - "type": "int56" - }, - { - "internalType": "uint160", - "name": "secondsPerLiquidityCumulativeX128", - "type": "uint160" - }, - { - "internalType": "bool", - "name": "initialized", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint32[]", - "name": "secondsAgos", - "type": "uint32[]" - } - ], - "name": "observe", - "outputs": [ - { - "internalType": "int56[]", - "name": "tickCumulatives", - "type": "int56[]" - }, - { - "internalType": "uint160[]", - "name": "secondsPerLiquidityCumulativeX128s", - "type": "uint160[]" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "name": "positions", - "outputs": [ - { - "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": "protocolFees", - "outputs": [ - { - "internalType": "uint128", - "name": "token0", - "type": "uint128" - }, - { - "internalType": "uint128", - "name": "token1", - "type": "uint128" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint8", - "name": "feeProtocol0", - "type": "uint8" - }, - { - "internalType": "uint8", - "name": "feeProtocol1", - "type": "uint8" - } - ], - "name": "setFeeProtocol", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "slot0", - "outputs": [ - { - "internalType": "uint160", - "name": "sqrtPriceX96", - "type": "uint160" - }, - { - "internalType": "int24", - "name": "tick", - "type": "int24" - }, - { - "internalType": "uint16", - "name": "observationIndex", - "type": "uint16" - }, - { - "internalType": "uint16", - "name": "observationCardinality", - "type": "uint16" - }, - { - "internalType": "uint16", - "name": "observationCardinalityNext", - "type": "uint16" - }, - { - "internalType": "uint8", - "name": "feeProtocol", - "type": "uint8" - }, - { - "internalType": "bool", - "name": "unlocked", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "int24", - "name": "tickLower", - "type": "int24" - }, - { - "internalType": "int24", - "name": "tickUpper", - "type": "int24" - } - ], - "name": "snapshotCumulativesInside", - "outputs": [ - { - "internalType": "int56", - "name": "tickCumulativeInside", - "type": "int56" - }, - { - "internalType": "uint160", - "name": "secondsPerLiquidityInsideX128", - "type": "uint160" - }, - { - "internalType": "uint32", - "name": "secondsInside", - "type": "uint32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "bool", - "name": "zeroForOne", - "type": "bool" - }, - { - "internalType": "int256", - "name": "amountSpecified", - "type": "int256" - }, - { - "internalType": "uint160", - "name": "sqrtPriceLimitX96", - "type": "uint160" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "swap", - "outputs": [ - { - "internalType": "int256", - "name": "amount0", - "type": "int256" - }, - { - "internalType": "int256", - "name": "amount1", - "type": "int256" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "int16", - "name": "", - "type": "int16" - } - ], - "name": "tickBitmap", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "tickSpacing", - "outputs": [ - { - "internalType": "int24", - "name": "", - "type": "int24" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "int24", - "name": "", - "type": "int24" - } - ], - "name": "ticks", - "outputs": [ - { - "internalType": "uint128", - "name": "liquidityGross", - "type": "uint128" - }, - { - "internalType": "int128", - "name": "liquidityNet", - "type": "int128" - }, - { - "internalType": "uint256", - "name": "feeGrowthOutside0X128", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "feeGrowthOutside1X128", - "type": "uint256" - }, - { - "internalType": "int56", - "name": "tickCumulativeOutside", - "type": "int56" - }, - { - "internalType": "uint160", - "name": "secondsPerLiquidityOutsideX128", - "type": "uint160" - }, - { - "internalType": "uint32", - "name": "secondsOutside", - "type": "uint32" - }, - { - "internalType": "bool", - "name": "initialized", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "token0", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "token1", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "evm": { - "bytecode": { - "generatedSources": [], - "linkReferences": {}, - "object": "6101606040523480156200001257600080fd5b503060601b60805260408051630890357360e41b81529051600091339163890357309160048082019260a092909190829003018186803b1580156200005657600080fd5b505afa1580156200006b573d6000803e3d6000fd5b505050506040513d60a08110156200008257600080fd5b508051602080830151604084015160608086015160809096015160e896871b6001600160e81b0319166101005291811b6001600160601b031990811660e05292811b831660c0529390931b1660a052600282810b900b90921b610120529150620000f79082906200010f811b62002adb17901c565b60801b6001600160801b03191661014052506200017d565b60008082600281900b620d89e719816200012557fe5b05029050600083600281900b620d89e8816200013d57fe5b0502905060008460020b83830360020b816200015557fe5b0560010190508062ffffff166001600160801b038016816200017357fe5b0495945050505050565b60805160601c60a05160601c60c05160601c60e05160601c6101005160e81c6101205160e81c6101405160801c61554e6200024a60003980611fab5280614a4d5280614a84525080610bd852806128975280614ab85280614aea525080610cc7528061198852806119bf52806128df5250806111855280611a425280611eb152806123e652806128bb5280613d7c5250806108aa52806112b35280611a115280611e4b52806123605280613c33525080612038528061221f5280612873525080612b52525061554e6000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c806370cf754a116100de578063c45a015511610097578063ddca3f4311610071578063ddca3f43146107d8578063f3058399146107f8578063f30dba9314610800578063f637731d146108825761018e565b8063c45a0155146107a9578063d0c93a7c146107b1578063d21220a7146107d05761018e565b806370cf754a146105a05780638206a4d1146105a857806385b66729146105d0578063883bdbfd1461060d578063a34123a714610714578063a38807f21461074e5761018e565b80633850c7bd1161014b578063490e6cbc11610125578063490e6cbc1461044c5780634f1eb3d8146104d6578063514ea4bf146105275780635339c296146105805761018e565b80633850c7bd146103395780633c8a7d8d1461039257806346141319146104325761018e565b80630dfe168114610193578063128acb08146101b75780631a686502146102645780631ad8b03b14610288578063252c09d7146102bf57806332148f6714610316575b600080fd5b61019b6108a8565b604080516001600160a01b039092168252519081900360200190f35b61024b600480360360a08110156101cd57600080fd5b6001600160a01b0382358116926020810135151592604082013592606083013516919081019060a081016080820135600160201b81111561020d57600080fd5b82018360208201111561021f57600080fd5b803590602001918460018302840111600160201b8311171561024057600080fd5b5090925090506108cc565b6040805192835260208301919091528051918290030190f35b61026c61146b565b604080516001600160801b039092168252519081900360200190f35b61029061147a565b60405180836001600160801b03168152602001826001600160801b031681526020019250505060405180910390f35b6102dc600480360360208110156102d557600080fd5b5035611494565b6040805163ffffffff909516855260069390930b60208501526001600160a01b039091168383015215156060830152519081900360800190f35b6103376004803603602081101561032c57600080fd5b503561ffff166114d9565b005b6103416115d3565b604080516001600160a01b03909816885260029690960b602088015261ffff9485168787015292841660608701529216608085015260ff90911660a0840152151560c0830152519081900360e00190f35b61024b600480360360a08110156103a857600080fd5b6001600160a01b03823516916020810135600290810b92604083013590910b916001600160801b036060820135169181019060a081016080820135600160201b8111156103f457600080fd5b82018360208201111561040657600080fd5b803590602001918460018302840111600160201b8311171561042757600080fd5b509092509050611623565b61043a6118df565b60408051918252519081900360200190f35b6103376004803603608081101561046257600080fd5b6001600160a01b038235169160208101359160408201359190810190608081016060820135600160201b81111561049857600080fd5b8201836020820111156104aa57600080fd5b803590602001918460018302840111600160201b831117156104cb57600080fd5b5090925090506118e5565b610290600480360360a08110156104ec57600080fd5b506001600160a01b03813516906020810135600290810b91604081013590910b906001600160801b0360608201358116916080013516611d40565b6105446004803603602081101561053d57600080fd5b5035611f5a565b604080516001600160801b0396871681526020810195909552848101939093529084166060840152909216608082015290519081900360a00190f35b61043a6004803603602081101561059657600080fd5b503560010b611f97565b61026c611fa9565b610337600480360360408110156105be57600080fd5b5060ff81358116916020013516611fcd565b610290600480360360608110156105e657600080fd5b506001600160a01b03813516906001600160801b03602082013581169160400135166121b1565b61067b6004803603602081101561062357600080fd5b810190602081018135600160201b81111561063d57600080fd5b82018360208201111561064f57600080fd5b803590602001918460208302840111600160201b8311171561067057600080fd5b50909250905061247e565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156106bf5781810151838201526020016106a7565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156106fe5781810151838201526020016106e6565b5050505090500194505050505060405180910390f35b61024b6004803603606081101561072a57600080fd5b508035600290810b91602081013590910b90604001356001600160801b031661250b565b6107786004803603604081101561076457600080fd5b508035600290810b9160200135900b612682565b6040805160069490940b84526001600160a01b03909216602084015263ffffffff1682820152519081900360600190f35b61019b612871565b6107b9612895565b6040805160029290920b8252519081900360200190f35b61019b6128b9565b6107e06128dd565b6040805162ffffff9092168252519081900360200190f35b61043a612901565b6108206004803603602081101561081657600080fd5b503560020b612907565b604080516001600160801b039099168952600f9790970b602089015287870195909552606087019390935260069190910b60808601526001600160a01b031660a085015263ffffffff1660c0840152151560e083015251908190036101000190f35b6103376004803603602081101561089857600080fd5b50356001600160a01b0316612971565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806108d7612b47565b8561090e576040805162461bcd60e51b8152602060048201526002602482015261415360f01b604482015290519081900360640190fd5b6040805160e0810182526000546001600160a01b0381168252600160a01b8104600290810b810b900b602083015261ffff600160b81b8204811693830193909352600160c81b810483166060830152600160d81b8104909216608082015260ff600160e81b8304811660a0830152600160f01b909204909116151560c082018190526109c7576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b87610a125780600001516001600160a01b0316866001600160a01b0316118015610a0d575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038716105b610a44565b80600001516001600160a01b0316866001600160a01b0316108015610a4457506401000276a36001600160a01b038716115b610a7b576040805162461bcd60e51b815260206004820152600360248201526214d41360ea1b604482015290519081900360640190fd5b6000805460ff60f01b191681556040805160c08101909152808a610aaa5760048460a0015160ff16901c610abd565b60108460a0015160ff1681610abb57fe5b065b60ff1681526004546001600160801b03166020820152604001610ade612b7e565b63ffffffff168152602001600060060b815260200160006001600160a01b031681526020016000151581525090506000808913905060006040518060e001604052808b81526020016000815260200185600001516001600160a01b03168152602001856020015160020b81526020018c610b5a57600254610b5e565b6001545b815260200160006001600160801b0316815260200184602001516001600160801b031681525090505b805115801590610bad5750886001600160a01b031681604001516001600160a01b031614155b15610f7757610bba6154b5565b60408201516001600160a01b031681526060820151610bfd906006907f00000000000000000000000000000000000000000000000000000000000000008f612b82565b15156040830152600290810b810b60208301819052620d89e719910b1215610c2e57620d89e7196020820152610c4d565b6020810151620d89e860029190910b1315610c4d57620d89e860208201525b610c5a8160200151612cc4565b6001600160a01b031660608201526040820151610ceb908d610c94578b6001600160a01b031683606001516001600160a01b031611610cae565b8b6001600160a01b031683606001516001600160a01b0316105b610cbc578260600151610cbe565b8b5b60c085015185517f0000000000000000000000000000000000000000000000000000000000000000612ff5565b60c085015260a084015260808301526001600160a01b031660408301528215610d4d57610d218160c001518260800151016131e7565b825103825260a0810151610d4390610d38906131e7565b6020840151906131fd565b6020830152610d88565b610d5a8160a001516131e7565b825101825260c08101516080820151610d8291610d7791016131e7565b602084015190613219565b60208301525b835160ff1615610dce576000846000015160ff168260c0015181610da857fe5b60c0840180519290910491829003905260a0840180519091016001600160801b03169052505b60c08201516001600160801b031615610e0d57610e018160c00151600160801b8460c001516001600160801b031661322f565b60808301805190910190525b80606001516001600160a01b031682604001516001600160a01b03161415610f3657806040015115610f0d578360a00151610e9757610e75846040015160008760200151886040015188602001518a6060015160086132df909695949392919063ffffffff16565b6001600160a01b03166080860152600690810b900b6060850152600160a08501525b6000610ee382602001518e610eae57600154610eb4565b84608001515b8f610ec3578560800151610ec7565b6002545b608089015160608a015160408b01516005959493929190613471565b90508c15610eef576000035b610efd8360c001518261352b565b6001600160801b031660c0840152505b8b610f1c578060200151610f25565b60018160200151035b600290810b900b6060830152610f71565b80600001516001600160a01b031682604001516001600160a01b031614610f7157610f6482604001516135e1565b600290810b900b60608301525b50610b87565b836020015160020b816060015160020b1461104557600080610fc586604001518660400151886020015188602001518a606001518b6080015160086138fc909695949392919063ffffffff16565b604085015160608601516000805461ffff60c81b1916600160c81b61ffff958616021761ffff60b81b1916600160b81b95909416949094029290921762ffffff60a01b1916600160a01b62ffffff60029490940b9390931692909202919091176001600160a01b0319166001600160a01b039091161790555061106a9050565b6040810151600080546001600160a01b0319166001600160a01b039092169190911790555b8060c001516001600160801b031683602001516001600160801b0316146110b05760c0810151600480546001600160801b0319166001600160801b039092169190911790555b8a1561110057608081015160015560a08101516001600160801b0316156110fb5760a0810151600380546001600160801b031981166001600160801b03918216909301169190911790555b611146565b608081015160025560a08101516001600160801b0316156111465760a0810151600380546001600160801b03808216600160801b92839004821690940116029190911790555b8115158b15151461115f57602081015181518b0361116c565b80600001518a0381602001515b90965094508a156112a55760008512156111ae576111ae7f00000000000000000000000000000000000000000000000000000000000000008d87600003613a97565b60006111b8613be5565b9050336001600160a01b031663fa461e3388888c8c6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561123c57600080fd5b505af1158015611250573d6000803e3d6000fd5b5050505061125c613be5565b6112668289613d1e565b111561129f576040805162461bcd60e51b815260206004820152600360248201526249494160e81b604482015290519081900360640190fd5b506113cf565b60008612156112dc576112dc7f00000000000000000000000000000000000000000000000000000000000000008d88600003613a97565b60006112e6613d2e565b9050336001600160a01b031663fa461e3388888c8c6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561136a57600080fd5b505af115801561137e573d6000803e3d6000fd5b5050505061138a613d2e565b6113948288613d1e565b11156113cd576040805162461bcd60e51b815260206004820152600360248201526249494160e81b604482015290519081900360640190fd5b505b60408082015160c083015160608085015184518b8152602081018b90526001600160a01b03948516818701526001600160801b039093169183019190915260020b60808201529151908e169133917fc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca679181900360a00190a350506000805460ff60f01b1916600160f01b17905550919890975095505050505050565b6004546001600160801b031681565b6003546001600160801b0380821691600160801b90041682565b60088161ffff81106114a557600080fd5b015463ffffffff81169150600160201b810460060b90600160581b81046001600160a01b031690600160f81b900460ff1684565b600054600160f01b900460ff1661151d576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b19169055611532612b47565b60008054600160d81b900461ffff169061154e60088385613dc6565b6000805461ffff808416600160d81b810261ffff60d81b19909316929092179092559192508316146115bb576040805161ffff80851682528316602082015281517fac49e518f90a358f652e4400164f05a5d8f7e35e7747279bc3a93dbf584e125a929181900390910190a15b50506000805460ff60f01b1916600160f01b17905550565b6000546001600160a01b03811690600160a01b810460020b9061ffff600160b81b8204811691600160c81b8104821691600160d81b8204169060ff600160e81b8204811691600160f01b90041687565b600080548190600160f01b900460ff1661166a576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b191690556001600160801b03851661168a57600080fd5b6000806116d860405180608001604052808c6001600160a01b031681526020018b60020b81526020018a60020b81526020016116ce8a6001600160801b0316613e69565b600f0b9052613e7a565b925092505081935080925060008060008611156116fa576116f7613be5565b91505b841561170b57611708613d2e565b90505b336001600160a01b031663d348799787878b8b6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561178d57600080fd5b505af11580156117a1573d6000803e3d6000fd5b5050505060008611156117f8576117b6613be5565b6117c08388613d1e565b11156117f8576040805162461bcd60e51b815260206004820152600260248201526104d360f41b604482015290519081900360640190fd5b841561184857611806613d2e565b6118108287613d1e565b1115611848576040805162461bcd60e51b81526020600482015260026024820152614d3160f01b604482015290519081900360640190fd5b8960020b8b60020b8d6001600160a01b03167f7a53080ba414158be7ec69b987b5fb7d07dee101fe85488f0853ae16239d0bde338d8b8b60405180856001600160a01b03168152602001846001600160801b0316815260200183815260200182815260200194505050505060405180910390a450506000805460ff60f01b1916600160f01b17905550919890975095505050505050565b60025481565b600054600160f01b900460ff16611929576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b1916905561193e612b47565b6004546001600160801b031680611980576040805162461bcd60e51b81526020600482015260016024820152601360fa1b604482015290519081900360640190fd5b60006119b5867f000000000000000000000000000000000000000000000000000000000000000062ffffff16620f42406140ba565b905060006119ec867f000000000000000000000000000000000000000000000000000000000000000062ffffff16620f42406140ba565b905060006119f8613be5565b90506000611a04613d2e565b90508815611a3757611a377f00000000000000000000000000000000000000000000000000000000000000008b8b613a97565b8715611a6857611a687f00000000000000000000000000000000000000000000000000000000000000008b8a613a97565b336001600160a01b031663e9cbafb085858a8a6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015611aea57600080fd5b505af1158015611afe573d6000803e3d6000fd5b505050506000611b0c613be5565b90506000611b18613d2e565b905081611b258588613d1e565b1115611b5d576040805162461bcd60e51b8152602060048201526002602482015261046360f41b604482015290519081900360640190fd5b80611b688487613d1e565b1115611ba0576040805162461bcd60e51b8152602060048201526002602482015261463160f01b604482015290519081900360640190fd5b8382038382038115611c2f5760008054600160e81b9004600f16908115611bd3578160ff168481611bcd57fe5b04611bd6565b60005b90506001600160801b03811615611c0957600380546001600160801b038082168401166001600160801b03199091161790555b611c23818503600160801b8d6001600160801b031661322f565b60018054909101905550505b8015611cba5760008054600160e81b900460041c600f16908115611c5f578160ff168381611c5957fe5b04611c62565b60005b90506001600160801b03811615611c9457600380546001600160801b03600160801b8083048216850182160291161790555b611cae818403600160801b8d6001600160801b031661322f565b60028054909101905550505b8d6001600160a01b0316336001600160a01b03167fbdbdb71d7860376ba52b25a5028beea23581364a40522f6bcfb86bb1f2dca6338f8f86866040518085815260200184815260200183815260200182815260200194505050505060405180910390a350506000805460ff60f01b1916600160f01b179055505050505050505050505050565b600080548190600160f01b900460ff16611d87576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b19168155611da160073389896140f4565b60038101549091506001600160801b0390811690861611611dc25784611dd1565b60038101546001600160801b03165b60038201549093506001600160801b03600160801b909104811690851611611df95783611e0f565b6003810154600160801b90046001600160801b03165b91506001600160801b03831615611e74576003810180546001600160801b031981166001600160801b03918216869003821617909155611e74907f0000000000000000000000000000000000000000000000000000000000000000908a908616613a97565b6001600160801b03821615611eda576003810180546001600160801b03600160801b808304821686900382160291811691909117909155611eda907f0000000000000000000000000000000000000000000000000000000000000000908a908516613a97565b604080516001600160a01b038a1681526001600160801b0380861660208301528416818301529051600288810b92908a900b9133917f70935338e69775456a85ddef226c395fb668b63fa0115f5f20610b388e6ca9c0919081900360600190a4506000805460ff60f01b1916600160f01b17905590969095509350505050565b60076020526000908152604090208054600182015460028301546003909301546001600160801b0392831693919281811691600160801b90041685565b60066020526000908152604090205481565b7f000000000000000000000000000000000000000000000000000000000000000081565b600054600160f01b900460ff16612011576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b1916905560408051638da5cb5b60e01b815290516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691638da5cb5b916004808301926020929190829003018186803b15801561207e57600080fd5b505afa158015612092573d6000803e3d6000fd5b505050506040513d60208110156120a857600080fd5b50516001600160a01b031633146120be57600080fd5b60ff821615806120e1575060048260ff16101580156120e15750600a8260ff1611155b801561210b575060ff8116158061210b575060048160ff161015801561210b5750600a8160ff1611155b61211457600080fd5b60008054610ff0600484901b16840160ff908116600160e81b90810260ff60e81b19841617909355919004167f973d8d92bb299f4af6ce49b52a8adb85ae46b9f214c4c4fc06ac77401237b1336010826040805160ff9390920683168252600f600486901c16602083015286831682820152918516606082015290519081900360800190a150506000805460ff60f01b1916600160f01b17905550565b600080548190600160f01b900460ff166121f8576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b1916905560408051638da5cb5b60e01b815290516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691638da5cb5b916004808301926020929190829003018186803b15801561226557600080fd5b505afa158015612279573d6000803e3d6000fd5b505050506040513d602081101561228f57600080fd5b50516001600160a01b031633146122a557600080fd5b6003546001600160801b03908116908516116122c157836122ce565b6003546001600160801b03165b6003549092506001600160801b03600160801b9091048116908416116122f45782612308565b600354600160801b90046001600160801b03165b90506001600160801b03821615612389576003546001600160801b038381169116141561233757600019909101905b600380546001600160801b031981166001600160801b03918216859003821617909155612389907f00000000000000000000000000000000000000000000000000000000000000009087908516613a97565b6001600160801b0381161561240f576003546001600160801b03828116600160801b9092041614156123ba57600019015b600380546001600160801b03600160801b80830482168590038216029181169190911790915561240f907f00000000000000000000000000000000000000000000000000000000000000009087908416613a97565b604080516001600160801b0380851682528316602082015281516001600160a01b0388169233927f596b573906218d3411850b26a6b437d6c4522fdb43d2d2386263f86d50b8b151929081900390910190a36000805460ff60f01b1916600160f01b1790559094909350915050565b606080612489612b47565b612500612494612b7e565b858580806020026020016040519081016040528093929190818152602001838360200280828437600092018290525054600454600896959450600160a01b820460020b935061ffff600160b81b8304811693506001600160801b0390911691600160c81b900416614158565b915091509250929050565b600080548190600160f01b900460ff16612552576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b1916815560408051608081018252338152600288810b602083015287900b91810191909152819081906125ab906060810161259e6001600160801b038a16613e69565b600003600f0b9052613e7a565b92509250925081600003945080600003935060008511806125cc5750600084115b1561260b576003830180546001600160801b038082168089018216600160801b93849004831689019092169092029091176001600160801b0319161790555b604080516001600160801b0388168152602081018790528082018690529051600289810b92908b900b9133917f0c396cd989a39f4459b5fa1aed6a9a8dcdbc45908acfd67e028cd568da98982c919081900360600190a450506000805460ff60f01b1916600160f01b179055509094909350915050565b600080600061268f612b47565b61269985856142b2565b600285810b810b60009081526005602052604080822087840b90930b825281206003830154600681900b93600160381b82046001600160a01b0316928492600160d81b810463ffffffff169284929091600160f81b900460ff16806126fd57600080fd5b6003820154600681900b9850600160381b81046001600160a01b03169650600160d81b810463ffffffff169450600160f81b900460ff168061273e57600080fd5b50506040805160e0810182526000546001600160a01b0381168252600160a01b8104600290810b810b810b6020840181905261ffff600160b81b8404811695850195909552600160c81b830485166060850152600160d81b8304909416608084015260ff600160e81b8304811660a0850152600160f01b909204909116151560c08301529093508e810b91900b121590506127e75750939094039650900393509003905061286a565b8a60020b816020015160020b121561285b576000612803612b7e565b6020830151604084015160045460608601519394506000938493612839936008938893879392916001600160801b0316906132df565b9a9003989098039b50509490960392909203965090910303925061286a915050565b50949093039650039350900390505b9250925092565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60015481565b60056020526000908152604090208054600182015460028301546003909301546001600160801b03831693600160801b909304600f0b9290600681900b90600160381b81046001600160a01b031690600160d81b810463ffffffff1690600160f81b900460ff1688565b6000546001600160a01b0316156129b4576040805162461bcd60e51b8152602060048201526002602482015261414960f01b604482015290519081900360640190fd5b60006129bf826135e1565b90506000806129d76129cf612b7e565b60089061437b565b6040805160e0810182526001600160a01b038816808252600288810b6020808501829052600085870181905261ffff898116606088018190529089166080880181905260a08801839052600160c0909801979097528154600160f01b6001600160a01b0319909116871762ffffff60a01b1916600160a01b62ffffff9787900b97909716969096029590951763ffffffff60b81b1916600160c81b9091021761ffff60d81b1916600160d81b9096029590951761ffff60e81b191692909217909355835191825281019190915281519395509193507f98636036cb66a9c19a37435efc1e90142190214e8abeb821bdba3f2990dd4c9592918290030190a150505050565b60008082600281900b620d89e71981612af057fe5b05029050600083600281900b620d89e881612b0757fe5b0502905060008460020b83830360020b81612b1e57fe5b0560010190508062ffffff166001600160801b03801681612b3b57fe5b0493505050505b919050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614612b7c57600080fd5b565b4290565b60008060008460020b8660020b81612b9657fe5b05905060008660020b128015612bbd57508460020b8660020b81612bb657fe5b0760020b15155b15612bc757600019015b8315612c3c57600080612bd9836143c7565b600182810b810b600090815260208d9052604090205460ff83169190911b80016000190190811680151597509294509092509085612c1e57888360ff16860302612c31565b88612c28826143d9565b840360ff168603025b965050505050612cba565b600080612c4b836001016143c7565b91509150600060018260ff166001901b031990506000818b60008660010b60010b8152602001908152602001600020541690508060001415955085612c9d57888360ff0360ff16866001010102612cb3565b8883612ca883614478565b0360ff168660010101025b9650505050505b5094509492505050565b60008060008360020b12612cdb578260020b612ce3565b8260020b6000035b9050620d89e8811115612d21576040805162461bcd60e51b81526020600482015260016024820152601560fa1b604482015290519081900360640190fd5b600060018216612d3557600160801b612d47565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615612d7b576ffff97272373d413259a46990580e213a0260801c5b6004821615612d9a576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615612db9576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615612dd8576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615612df7576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615612e16576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615612e35576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615612e55576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615612e75576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615612e95576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615612eb5576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615612ed5576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615612ef5576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615612f15576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615612f35576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615612f56576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615612f76576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615612f95576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615612fb2576b048a170391f7dc42444e8fa20260801c5b60008460020b1315612fcd578060001981612fc957fe5b0490505b600160201b810615612fe0576001612fe3565b60005b60ff16602082901c0192505050919050565b60008080806001600160a01b03808916908a16101581871280159061307a57600061302e8989620f42400362ffffff16620f424061322f565b905082613047576130428c8c8c6001614562565b613054565b6130548b8d8c60016145dd565b9550858110613065578a9650613074565b6130718c8b8386614688565b96505b506130c4565b816130915761308c8b8b8b60006145dd565b61309e565b61309e8a8c8b6000614562565b93508388600003106130b2578995506130c4565b6130c18b8a8a600003856146d4565b95505b6001600160a01b038a8116908716148215613127578080156130e35750815b6130f9576130f4878d8c60016145dd565b6130fb565b855b9550808015613108575081155b61311e57613119878d8c6000614562565b613120565b845b9450613171565b8080156131315750815b613147576131428c888c6001614562565b613149565b855b9550808015613156575081155b61316c576131678c888c60006145dd565b61316e565b845b94505b8115801561318157508860000385115b1561318d578860000394505b8180156131ac57508a6001600160a01b0316876001600160a01b031614155b156131bb5785890393506131d8565b6131d5868962ffffff168a620f42400362ffffff166140ba565b93505b50505095509550955095915050565b6000600160ff1b82106131f957600080fd5b5090565b8082038281131560008312151461321357600080fd5b92915050565b8181018281121560008312151461321357600080fd5b6000808060001985870986860292508281109083900303905080613265576000841161325a57600080fd5b5082900490506132d8565b80841161327157600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b60008063ffffffff8716613385576000898661ffff1661ffff811061330057fe5b60408051608081018252919092015463ffffffff808216808452600160201b8304600690810b810b900b6020850152600160581b83046001600160a01b031694840194909452600160f81b90910460ff16151560608301529092508a16146133715761336e818a8988614720565b90505b806020015181604001519250925050613465565b86880360008061339a8c8c858c8c8c8c6147c3565b91509150816000015163ffffffff168363ffffffff1614156133cc578160200151826040015194509450505050613465565b805163ffffffff848116911614156133f4578060200151816040015194509450505050613465565b8151815160208085015190840151918390039286039163ffffffff80841692908516910360060b8161342257fe5b05028460200151018263ffffffff168263ffffffff1686604001518660400151036001600160a01b0316028161345457fe5b048560400151019650965050505050505b97509795505050505050565b600295860b860b60009081526020979097526040909620600181018054909503909455938301805490920390915560038201805463ffffffff600160d81b6001600160a01b03600160381b808504821690960316909402600160381b600160d81b031990921691909117600681810b90960390950b66ffffffffffffff1666ffffffffffffff199095169490941782810485169095039093160263ffffffff60d81b1990931692909217905554600160801b9004600f0b90565b60008082600f0b121561359057826001600160801b03168260000384039150816001600160801b03161061358b576040805162461bcd60e51b81526020600482015260026024820152614c5360f01b604482015290519081900360640190fd5b613213565b826001600160801b03168284019150816001600160801b03161015613213576040805162461bcd60e51b81526020600482015260026024820152614c4160f01b604482015290519081900360640190fd5b60006401000276a36001600160a01b0383161080159061361d575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038316105b613652576040805162461bcd60e51b81526020600482015260016024820152602960f91b604482015290519081900360640190fd5b640100000000600160c01b03602083901b166001600160801b03811160071b81811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c979088119617909417909217179091171717608081106136e657607f810383901c91506136f0565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d607f198f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c600160381b161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581026f028f6481ab7f045a5af012a19d003aa9198101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b146138ed57886001600160a01b03166138d182612cc4565b6001600160a01b031611156138e657816138e8565b805b6138ef565b815b9998505050505050505050565b6000806000898961ffff1661ffff811061391257fe5b60408051608081018252919092015463ffffffff808216808452600160201b8304600690810b810b900b6020850152600160581b83046001600160a01b031694840194909452600160f81b90910460ff1615156060830152909250891614156139815788859250925050613465565b8461ffff168461ffff161180156139a257506001850361ffff168961ffff16145b156139af578391506139b3565b8491505b8161ffff168960010161ffff16816139c757fe5b0692506139d681898989614720565b8a8461ffff1661ffff81106139e757fe5b825191018054602084015160408501516060909501511515600160f81b026001600160f81b036001600160a01b03909616600160581b027fff0000000000000000000000000000000000000000ffffffffffffffffffffff60069390930b66ffffffffffffff16600160201b026affffffffffffff000000001963ffffffff90971663ffffffff199095169490941795909516929092171692909217929092161790555097509795505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1781529251825160009485949389169392918291908083835b60208310613b135780518252601f199092019160209182019101613af4565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613b75576040519150601f19603f3d011682016040523d82523d6000602084013e613b7a565b606091505b5091509150818015613ba8575080511580613ba85750808060200190516020811015613ba557600080fd5b50515b613bde576040805162461bcd60e51b81526020600482015260026024820152612a2360f11b604482015290519081900360640190fd5b5050505050565b604080513060248083019190915282518083039091018152604490910182526020810180516001600160e01b03166370a0823160e01b17815291518151600093849384936001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001693919290918291908083835b60208310613c7e5780518252601f199092019160209182019101613c5f565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114613cde576040519150601f19603f3d011682016040523d82523d6000602084013e613ce3565b606091505b5091509150818015613cf757506020815110155b613d0057600080fd5b808060200190516020811015613d1557600080fd5b50519250505090565b8082018281101561321357600080fd5b604080513060248083019190915282518083039091018152604490910182526020810180516001600160e01b03166370a0823160e01b17815291518151600093849384936001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016939192909182919080838360208310613c7e5780518252601f199092019160209182019101613c5f565b6000808361ffff1611613e04576040805162461bcd60e51b81526020600482015260016024820152604960f81b604482015290519081900360640190fd5b8261ffff168261ffff1611613e1a5750816132d8565b825b8261ffff168161ffff161015613e60576001858261ffff1661ffff8110613e3f57fe5b01805463ffffffff191663ffffffff92909216919091179055600101613e1c565b50909392505050565b80600f81900b8114612b4257600080fd5b6000806000613e87612b47565b613e99846020015185604001516142b2565b6040805160e0810182526000546001600160a01b0381168252600160a01b8104600290810b810b900b602080840182905261ffff600160b81b8404811685870152600160c81b84048116606080870191909152600160d81b8504909116608086015260ff600160e81b8504811660a0870152600160f01b909404909316151560c085015288519089015194890151928901519394613f3d94919390929091906149bd565b93508460600151600f0b6000146140b257846020015160020b816020015160020b1215613f9257613f8b613f748660200151612cc4565b613f818760400151612cc4565b8760600151614b72565b92506140b2565b846040015160020b816020015160020b12156140885760045460408201516001600160801b0390911690613fe490613fc8612b7e565b60208501516060860151608087015160089493929187916138fc565b6000805461ffff60c81b1916600160c81b61ffff938416021761ffff60b81b1916600160b81b939092169290920217905581516040870151614034919061402a90612cc4565b8860600151614b72565b93506140526140468760200151612cc4565b83516060890151614bb6565b925061406281876060015161352b565b600480546001600160801b0319166001600160801b0392909216919091179055506140b2565b6140af6140988660200151612cc4565b6140a58760400151612cc4565b8760600151614bb6565b91505b509193909250565b60006140c784848461322f565b9050600082806140d357fe5b84860911156132d85760001981106140ea57600080fd5b6001019392505050565b6040805160609490941b6bffffffffffffffffffffffff1916602080860191909152600293840b60e890811b60348701529290930b90911b60378401528051808403601a018152603a90930181528251928201929092206000908152929052902090565b60608060008361ffff1611614198576040805162461bcd60e51b81526020600482015260016024820152604960f81b604482015290519081900360640190fd5b865167ffffffffffffffff811180156141b057600080fd5b506040519080825280602002602001820160405280156141da578160200160208202803683370190505b509150865167ffffffffffffffff811180156141f557600080fd5b5060405190808252806020026020018201604052801561421f578160200160208202803683370190505b50905060005b87518110156142a5576142508a8a8a848151811061423f57fe5b60200260200101518a8a8a8a6132df565b84838151811061425c57fe5b6020026020010184848151811061426f57fe5b60200260200101826001600160a01b03166001600160a01b03168152508260060b60060b81525050508080600101915050614225565b5097509795505050505050565b8060020b8260020b126142f2576040805162461bcd60e51b8152602060048201526003602482015262544c5560e81b604482015290519081900360640190fd5b620d89e719600283900b1215614335576040805162461bcd60e51b8152602060048201526003602482015262544c4d60e81b604482015290519081900360640190fd5b620d89e8600282900b1315614377576040805162461bcd60e51b815260206004820152600360248201526254554d60e81b604482015290519081900360640190fd5b5050565b6040805160808101825263ffffffff9283168082526000602083018190529282019290925260016060909101819052835463ffffffff1916909117909116600160f81b17909155908190565b60020b600881901d9161010090910790565b60008082116143e757600080fd5b600160801b82106143fa57608091821c91015b68010000000000000000821061441257604091821c91015b600160201b821061442557602091821c91015b62010000821061443757601091821c91015b610100821061444857600891821c91015b6010821061445857600491821c91015b6004821061446857600291821c91015b60028210612b4257600101919050565b600080821161448657600080fd5b5060ff6001600160801b038216156144a157607f19016144a9565b608082901c91505b67ffffffffffffffff8216156144c257603f19016144ca565b604082901c91505b63ffffffff8216156144df57601f19016144e7565b602082901c91505b61ffff8216156144fa57600f1901614502565b601082901c91505b60ff821615614514576007190161451c565b600882901c91505b600f82161561452e5760031901614536565b600482901c91505b60038216156145485760011901614550565b600282901c91505b6001821615612b425760001901919050565b6000836001600160a01b0316856001600160a01b03161115614582579293925b816145af576145aa836001600160801b03168686036001600160a01b0316600160601b61322f565b6145d2565b6145d2836001600160801b03168686036001600160a01b0316600160601b6140ba565b90505b949350505050565b6000836001600160a01b0316856001600160a01b031611156145fd579293925b600160601b600160e01b03606084901b166001600160a01b03868603811690871661462757600080fd5b8361465757866001600160a01b031661464a8383896001600160a01b031661322f565b8161465157fe5b0461467d565b61467d61466e8383896001600160a01b03166140ba565b886001600160a01b0316614be5565b979650505050505050565b600080856001600160a01b03161161469f57600080fd5b6000846001600160801b0316116146b557600080fd5b816146c7576145aa8585856001614bf0565b6145d28585856001614cd1565b600080856001600160a01b0316116146eb57600080fd5b6000846001600160801b03161161470157600080fd5b81614713576145aa8585856000614cd1565b6145d28585856000614bf0565b6147286154f1565b600085600001518503905060405180608001604052808663ffffffff1681526020018263ffffffff168660020b0288602001510160060b81526020016000856001600160801b03161161477c57600161477e565b845b6001600160801b031663ffffffff60801b608085901b168161479c57fe5b048860400151016001600160a01b0316815260200160011515815250915050949350505050565b6147cb6154f1565b6147d36154f1565b888561ffff1661ffff81106147e457fe5b60408051608081018252919092015463ffffffff8116808352600160201b8204600690810b810b900b6020840152600160581b82046001600160a01b031693830193909352600160f81b900460ff1615156060820152925061484890899089614db4565b15614880578663ffffffff16826000015163ffffffff16141561486a57613465565b8161487783898988614720565b91509150613465565b888361ffff168660010161ffff168161489557fe5b0661ffff1661ffff81106148a557fe5b60408051608081018252929091015463ffffffff81168352600160201b8104600690810b810b900b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b9091041615156060820181905290925061495a57604080516080810182528a5463ffffffff81168252600160201b8104600690810b810b900b6020830152600160581b81046001600160a01b031692820192909252600160f81b90910460ff161515606082015291505b61496988836000015189614db4565b6149a0576040805162461bcd60e51b815260206004820152600360248201526213d31160ea1b604482015290519081900360640190fd5b6149ad8989898887614e75565b9150915097509795505050505050565b60006149cc60078787876140f4565b60015460025491925090600080600f87900b15614b125760006149ed612b7e565b6000805460045492935090918291614a379160089186918591600160a01b810460020b9161ffff600160b81b83048116926001600160801b0390921691600160c81b9004166132df565b9092509050614a7160058d8b8d8b8b87898b60007f0000000000000000000000000000000000000000000000000000000000000000615013565b9450614aa860058c8b8d8b8b87898b60017f0000000000000000000000000000000000000000000000000000000000000000615013565b93508415614adc57614adc60068d7f00000000000000000000000000000000000000000000000000000000000000006151cc565b8315614b0e57614b0e60068c7f00000000000000000000000000000000000000000000000000000000000000006151cc565b5050505b600080614b2460058c8c8b8a8a615232565b9092509050614b35878a84846152de565b600089600f0b1215614b63578315614b5257614b5260058c615473565b8215614b6357614b6360058b615473565b50505050505095945050505050565b60008082600f0b12614b9857614b93614b8e85858560016145dd565b6131e7565b6145d5565b614bab614b8e85858560000360006145dd565b600003949350505050565b60008082600f0b12614bd257614b93614b8e8585856001614562565b614bab614b8e8585856000036000614562565b808204910615150190565b60008115614c635760006001600160a01b03841115614c2657614c2184600160601b876001600160801b031661322f565b614c3e565b6001600160801b038516606085901b81614c3c57fe5b045b9050614c5b614c566001600160a01b03881683613d1e565b61549f565b9150506145d5565b60006001600160a01b03841115614c9157614c8c84600160601b876001600160801b03166140ba565b614ca8565b614ca8606085901b6001600160801b038716614be5565b905080866001600160a01b031611614cbf57600080fd5b6001600160a01b0386160390506145d5565b600082614cdf5750836145d5565b600160601b600160e01b03606085901b168215614d6d576001600160a01b03861684810290858281614d0d57fe5b041415614d3e57818101828110614d3c57614d3283896001600160a01b0316836140ba565b93505050506145d5565b505b614d6482614d5f878a6001600160a01b03168681614d5857fe5b0490613d1e565b614be5565b925050506145d5565b6001600160a01b03861684810290858281614d8457fe5b04148015614d9157508082115b614d9a57600080fd5b808203614d32614c56846001600160a01b038b16846140ba565b60008363ffffffff168363ffffffff1611158015614dde57508363ffffffff168263ffffffff1611155b15614dfa578163ffffffff168363ffffffff16111590506132d8565b60008463ffffffff168463ffffffff1611614e21578363ffffffff16600160201b01614e29565b8363ffffffff165b64ffffffffff16905060008563ffffffff168463ffffffff1611614e59578363ffffffff16600160201b01614e61565b8363ffffffff165b64ffffffffff169091111595945050505050565b614e7d6154f1565b614e856154f1565b60008361ffff168560010161ffff1681614e9b57fe5b0661ffff169050600060018561ffff16830103905060005b506002818301048961ffff87168281614ec857fe5b0661ffff8110614ed457fe5b60408051608081018252929091015463ffffffff81168352600160201b8104600690810b810b900b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b90910416151560608201819052909550614f3e57806001019250614eb3565b898661ffff168260010181614f4f57fe5b0661ffff8110614f5b57fe5b60408051608081018252929091015463ffffffff81168352600160201b8104600690810b810b900b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b90910416151560608201528551909450600090614fc5908b908b614db4565b9050808015614fde5750614fde8a8a8760000151614db4565b15614fe95750615006565b80614ff957600182039250615000565b8160010193505b50614eb3565b5050509550959350505050565b60028a810b900b600090815260208c90526040812080546001600160801b03168261503e828d61352b565b9050846001600160801b0316816001600160801b0316111561508c576040805162461bcd60e51b81526020600482015260026024820152614c4f60f01b604482015290519081900360640190fd5b6001600160801b038281161590821615811415945015615131578c60020b8e60020b1361511957600183018b9055600283018a9055600383018054600160381b600160d81b031916600160381b6001600160a01b038c16021766ffffffffffffff191666ffffffffffffff60068b900b161763ffffffff60d81b1916600160d81b63ffffffff8a16021790555b6003830180546001600160f81b0316600160f81b1790555b82546001600160801b0319166001600160801b0382161783558561517a5782546151759061517090600160801b9004600f90810b810b908f900b613219565b613e69565b61519b565b825461519b9061517090600160801b9004600f90810b810b908f900b6131fd565b8354600f9190910b6001600160801b03908116600160801b0291161790925550909c9b505050505050505050505050565b8060020b8260020b816151db57fe5b0760020b156151e957600080fd5b6000806152048360020b8560020b816151fe57fe5b056143c7565b600191820b820b60009081526020979097526040909620805460ff9097169190911b90951890945550505050565b600285810b80820b60009081526020899052604080822088850b850b83529082209193849391929184918291908a900b126152785750506001820154600283015461528b565b8360010154880391508360020154870390505b6000808b60020b8b60020b12156152ad575050600183015460028401546152c0565b84600101548a0391508460020154890390505b92909803979097039b96909503949094039850939650505050505050565b6040805160a08101825285546001600160801b0390811682526001870154602083015260028701549282019290925260038601548083166060830152600160801b900490911660808201526000600f85900b61537d5781516001600160801b0316615375576040805162461bcd60e51b815260206004820152600260248201526104e560f41b604482015290519081900360640190fd5b50805161538c565b8151615389908661352b565b90505b60006153b08360200151860384600001516001600160801b0316600160801b61322f565b905060006153d68460400151860385600001516001600160801b0316600160801b61322f565b905086600f0b6000146153fd5787546001600160801b0319166001600160801b0384161788555b60018801869055600288018590556001600160801b03821615158061542b57506000816001600160801b0316115b15615469576003880180546001600160801b031981166001600160801b039182168501821617808216600160801b9182900483168501909216021790555b5050505050505050565b600290810b810b6000908152602092909252604082208281556001810183905590810182905560030155565b806001600160a01b0381168114612b4257600080fd5b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915290565b6040805160808101825260008082526020820181905291810182905260608101919091529056fea26469706673582212200c1f93875bf69bd8236c0ed6fa61db810cf06b5c5481470ac7a631eb4e43c81264736f6c63430007060033", - "opcodes": "PUSH2 0x160 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP ADDRESS PUSH1 0x60 SHL PUSH1 0x80 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x8903573 PUSH1 0xE4 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP2 CALLER SWAP2 PUSH4 0x89035730 SWAP2 PUSH1 0x4 DUP1 DUP3 ADD SWAP3 PUSH1 0xA0 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x56 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x6B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0xA0 DUP2 LT ISZERO PUSH3 0x82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP1 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x60 DUP1 DUP7 ADD MLOAD PUSH1 0x80 SWAP1 SWAP7 ADD MLOAD PUSH1 0xE8 SWAP7 DUP8 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE8 SHL SUB NOT AND PUSH2 0x100 MSTORE SWAP2 DUP2 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT SWAP1 DUP2 AND PUSH1 0xE0 MSTORE SWAP3 DUP2 SHL DUP4 AND PUSH1 0xC0 MSTORE SWAP4 SWAP1 SWAP4 SHL AND PUSH1 0xA0 MSTORE PUSH1 0x2 DUP3 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND SWAP1 SWAP3 SHL PUSH2 0x120 MSTORE SWAP2 POP PUSH3 0xF7 SWAP1 DUP3 SWAP1 PUSH3 0x10F DUP2 SHL PUSH3 0x2ADB OR SWAP1 SHR JUMP JUMPDEST PUSH1 0x80 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH2 0x140 MSTORE POP PUSH3 0x17D JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x2 DUP2 SWAP1 SIGNEXTEND PUSH3 0xD89E7 NOT DUP2 PUSH3 0x125 JUMPI INVALID JUMPDEST SDIV MUL SWAP1 POP PUSH1 0x0 DUP4 PUSH1 0x2 DUP2 SWAP1 SIGNEXTEND PUSH3 0xD89E8 DUP2 PUSH3 0x13D JUMPI INVALID JUMPDEST SDIV MUL SWAP1 POP PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND DUP4 DUP4 SUB PUSH1 0x2 SIGNEXTEND DUP2 PUSH3 0x155 JUMPI INVALID JUMPDEST SDIV PUSH1 0x1 ADD SWAP1 POP DUP1 PUSH3 0xFFFFFF AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 AND DUP2 PUSH3 0x173 JUMPI INVALID JUMPDEST DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH1 0xE8 SHR PUSH2 0x120 MLOAD PUSH1 0xE8 SHR PUSH2 0x140 MLOAD PUSH1 0x80 SHR PUSH2 0x554E PUSH3 0x24A PUSH1 0x0 CODECOPY DUP1 PUSH2 0x1FAB MSTORE DUP1 PUSH2 0x4A4D MSTORE DUP1 PUSH2 0x4A84 MSTORE POP DUP1 PUSH2 0xBD8 MSTORE DUP1 PUSH2 0x2897 MSTORE DUP1 PUSH2 0x4AB8 MSTORE DUP1 PUSH2 0x4AEA MSTORE POP DUP1 PUSH2 0xCC7 MSTORE DUP1 PUSH2 0x1988 MSTORE DUP1 PUSH2 0x19BF MSTORE DUP1 PUSH2 0x28DF MSTORE POP DUP1 PUSH2 0x1185 MSTORE DUP1 PUSH2 0x1A42 MSTORE DUP1 PUSH2 0x1EB1 MSTORE DUP1 PUSH2 0x23E6 MSTORE DUP1 PUSH2 0x28BB MSTORE DUP1 PUSH2 0x3D7C MSTORE POP DUP1 PUSH2 0x8AA MSTORE DUP1 PUSH2 0x12B3 MSTORE DUP1 PUSH2 0x1A11 MSTORE DUP1 PUSH2 0x1E4B MSTORE DUP1 PUSH2 0x2360 MSTORE DUP1 PUSH2 0x3C33 MSTORE POP DUP1 PUSH2 0x2038 MSTORE DUP1 PUSH2 0x221F MSTORE DUP1 PUSH2 0x2873 MSTORE POP DUP1 PUSH2 0x2B52 MSTORE POP PUSH2 0x554E PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x18E JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70CF754A GT PUSH2 0xDE JUMPI DUP1 PUSH4 0xC45A0155 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xDDCA3F43 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xDDCA3F43 EQ PUSH2 0x7D8 JUMPI DUP1 PUSH4 0xF3058399 EQ PUSH2 0x7F8 JUMPI DUP1 PUSH4 0xF30DBA93 EQ PUSH2 0x800 JUMPI DUP1 PUSH4 0xF637731D EQ PUSH2 0x882 JUMPI PUSH2 0x18E JUMP JUMPDEST DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x7A9 JUMPI DUP1 PUSH4 0xD0C93A7C EQ PUSH2 0x7B1 JUMPI DUP1 PUSH4 0xD21220A7 EQ PUSH2 0x7D0 JUMPI PUSH2 0x18E JUMP JUMPDEST DUP1 PUSH4 0x70CF754A EQ PUSH2 0x5A0 JUMPI DUP1 PUSH4 0x8206A4D1 EQ PUSH2 0x5A8 JUMPI DUP1 PUSH4 0x85B66729 EQ PUSH2 0x5D0 JUMPI DUP1 PUSH4 0x883BDBFD EQ PUSH2 0x60D JUMPI DUP1 PUSH4 0xA34123A7 EQ PUSH2 0x714 JUMPI DUP1 PUSH4 0xA38807F2 EQ PUSH2 0x74E JUMPI PUSH2 0x18E JUMP JUMPDEST DUP1 PUSH4 0x3850C7BD GT PUSH2 0x14B JUMPI DUP1 PUSH4 0x490E6CBC GT PUSH2 0x125 JUMPI DUP1 PUSH4 0x490E6CBC EQ PUSH2 0x44C JUMPI DUP1 PUSH4 0x4F1EB3D8 EQ PUSH2 0x4D6 JUMPI DUP1 PUSH4 0x514EA4BF EQ PUSH2 0x527 JUMPI DUP1 PUSH4 0x5339C296 EQ PUSH2 0x580 JUMPI PUSH2 0x18E JUMP JUMPDEST DUP1 PUSH4 0x3850C7BD EQ PUSH2 0x339 JUMPI DUP1 PUSH4 0x3C8A7D8D EQ PUSH2 0x392 JUMPI DUP1 PUSH4 0x46141319 EQ PUSH2 0x432 JUMPI PUSH2 0x18E JUMP JUMPDEST DUP1 PUSH4 0xDFE1681 EQ PUSH2 0x193 JUMPI DUP1 PUSH4 0x128ACB08 EQ PUSH2 0x1B7 JUMPI DUP1 PUSH4 0x1A686502 EQ PUSH2 0x264 JUMPI DUP1 PUSH4 0x1AD8B03B EQ PUSH2 0x288 JUMPI DUP1 PUSH4 0x252C09D7 EQ PUSH2 0x2BF JUMPI DUP1 PUSH4 0x32148F67 EQ PUSH2 0x316 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x19B PUSH2 0x8A8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x24B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x1CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP3 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP3 PUSH1 0x60 DUP4 ADD CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0xA0 DUP2 ADD PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x20D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x21F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x240 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x8CC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x26C PUSH2 0x146B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x290 PUSH2 0x147A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2DC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1494 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP6 AND DUP6 MSTORE PUSH1 0x6 SWAP4 SWAP1 SWAP4 SIGNEXTEND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP4 DUP4 ADD MSTORE ISZERO ISZERO PUSH1 0x60 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 RETURN JUMPDEST PUSH2 0x337 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x32C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xFFFF AND PUSH2 0x14D9 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x341 PUSH2 0x15D3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP9 AND DUP9 MSTORE PUSH1 0x2 SWAP7 SWAP1 SWAP7 SIGNEXTEND PUSH1 0x20 DUP9 ADD MSTORE PUSH2 0xFFFF SWAP5 DUP6 AND DUP8 DUP8 ADD MSTORE SWAP3 DUP5 AND PUSH1 0x60 DUP8 ADD MSTORE SWAP3 AND PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0xFF SWAP1 SWAP2 AND PUSH1 0xA0 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0xC0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xE0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x24B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x3A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP3 PUSH1 0x40 DUP4 ADD CALLDATALOAD SWAP1 SWAP2 SIGNEXTEND SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x60 DUP3 ADD CALLDATALOAD AND SWAP2 DUP2 ADD SWAP1 PUSH1 0xA0 DUP2 ADD PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x3F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x406 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x427 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1623 JUMP JUMPDEST PUSH2 0x43A PUSH2 0x18DF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x337 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x462 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x498 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x4CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x18E5 JUMP JUMPDEST PUSH2 0x290 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x4EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP2 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 SIGNEXTEND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x60 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x80 ADD CALLDATALOAD AND PUSH2 0x1D40 JUMP JUMPDEST PUSH2 0x544 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x53D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1F5A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP7 DUP8 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP6 SWAP1 SWAP6 MSTORE DUP5 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP1 DUP5 AND PUSH1 0x60 DUP5 ADD MSTORE SWAP1 SWAP3 AND PUSH1 0x80 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x43A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x596 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 SIGNEXTEND PUSH2 0x1F97 JUMP JUMPDEST PUSH2 0x26C PUSH2 0x1FA9 JUMP JUMPDEST PUSH2 0x337 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1FCD JUMP JUMPDEST PUSH2 0x290 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x5E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x20 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x40 ADD CALLDATALOAD AND PUSH2 0x21B1 JUMP JUMPDEST PUSH2 0x67B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x623 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x63D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x64F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x670 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x247E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x6BF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x6A7 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x6FE JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x6E6 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x24B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x72A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 SIGNEXTEND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x250B JUMP JUMPDEST PUSH2 0x778 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x764 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP2 PUSH1 0x20 ADD CALLDATALOAD SWAP1 SIGNEXTEND PUSH2 0x2682 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x6 SWAP5 SWAP1 SWAP5 SIGNEXTEND DUP5 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH4 0xFFFFFFFF AND DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST PUSH2 0x19B PUSH2 0x2871 JUMP JUMPDEST PUSH2 0x7B9 PUSH2 0x2895 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 SWAP3 SWAP1 SWAP3 SIGNEXTEND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x19B PUSH2 0x28B9 JUMP JUMPDEST PUSH2 0x7E0 PUSH2 0x28DD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH3 0xFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x43A PUSH2 0x2901 JUMP JUMPDEST PUSH2 0x820 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x816 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x2 SIGNEXTEND PUSH2 0x2907 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP10 AND DUP10 MSTORE PUSH1 0xF SWAP8 SWAP1 SWAP8 SIGNEXTEND PUSH1 0x20 DUP10 ADD MSTORE DUP8 DUP8 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0x60 DUP8 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x6 SWAP2 SWAP1 SWAP2 SIGNEXTEND PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0xA0 DUP6 ADD MSTORE PUSH4 0xFFFFFFFF AND PUSH1 0xC0 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0xE0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH2 0x100 ADD SWAP1 RETURN JUMPDEST PUSH2 0x337 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x898 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2971 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x8D7 PUSH2 0x2B47 JUMP JUMPDEST DUP6 PUSH2 0x90E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4153 PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xE0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0xA0 SHL DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0xFFFF PUSH1 0x1 PUSH1 0xB8 SHL DUP3 DIV DUP2 AND SWAP4 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0xC8 SHL DUP2 DIV DUP4 AND PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0xD8 SHL DUP2 DIV SWAP1 SWAP3 AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xFF PUSH1 0x1 PUSH1 0xE8 SHL DUP4 DIV DUP2 AND PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 SWAP3 DIV SWAP1 SWAP2 AND ISZERO ISZERO PUSH1 0xC0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x9C7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4C4F4B PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP8 PUSH2 0xA12 JUMPI DUP1 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT DUP1 ISZERO PUSH2 0xA0D JUMPI POP PUSH20 0xFFFD8963EFD1FC6A506488495D951D5263988D26 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND LT JUMPDEST PUSH2 0xA44 JUMP JUMPDEST DUP1 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT DUP1 ISZERO PUSH2 0xA44 JUMPI POP PUSH5 0x1000276A3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND GT JUMPDEST PUSH2 0xA7B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x14D413 PUSH1 0xEA SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND DUP2 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0xC0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 DUP11 PUSH2 0xAAA JUMPI PUSH1 0x4 DUP5 PUSH1 0xA0 ADD MLOAD PUSH1 0xFF AND SWAP1 SHR PUSH2 0xABD JUMP JUMPDEST PUSH1 0x10 DUP5 PUSH1 0xA0 ADD MLOAD PUSH1 0xFF AND DUP2 PUSH2 0xABB JUMPI INVALID JUMPDEST MOD JUMPDEST PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD PUSH2 0xADE PUSH2 0x2B7E JUMP JUMPDEST PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x6 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE POP SWAP1 POP PUSH1 0x0 DUP1 DUP10 SGT SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0xE0 ADD PUSH1 0x40 MSTORE DUP1 DUP12 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x20 ADD MLOAD PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP13 PUSH2 0xB5A JUMPI PUSH1 0x2 SLOAD PUSH2 0xB5E JUMP JUMPDEST PUSH1 0x1 SLOAD JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE POP SWAP1 POP JUMPDEST DUP1 MLOAD ISZERO DUP1 ISZERO SWAP1 PUSH2 0xBAD JUMPI POP DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0xF77 JUMPI PUSH2 0xBBA PUSH2 0x54B5 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0xBFD SWAP1 PUSH1 0x6 SWAP1 PUSH32 0x0 DUP16 PUSH2 0x2B82 JUMP JUMPDEST ISZERO ISZERO PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x20 DUP4 ADD DUP2 SWAP1 MSTORE PUSH3 0xD89E7 NOT SWAP2 SIGNEXTEND SLT ISZERO PUSH2 0xC2E JUMPI PUSH3 0xD89E7 NOT PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0xC4D JUMP JUMPDEST PUSH1 0x20 DUP2 ADD MLOAD PUSH3 0xD89E8 PUSH1 0x2 SWAP2 SWAP1 SWAP2 SIGNEXTEND SGT ISZERO PUSH2 0xC4D JUMPI PUSH3 0xD89E8 PUSH1 0x20 DUP3 ADD MSTORE JUMPDEST PUSH2 0xC5A DUP2 PUSH1 0x20 ADD MLOAD PUSH2 0x2CC4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0xCEB SWAP1 DUP14 PUSH2 0xC94 JUMPI DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x60 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0xCAE JUMP JUMPDEST DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x60 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT JUMPDEST PUSH2 0xCBC JUMPI DUP3 PUSH1 0x60 ADD MLOAD PUSH2 0xCBE JUMP JUMPDEST DUP12 JUMPDEST PUSH1 0xC0 DUP6 ADD MLOAD DUP6 MLOAD PUSH32 0x0 PUSH2 0x2FF5 JUMP JUMPDEST PUSH1 0xC0 DUP6 ADD MSTORE PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x40 DUP4 ADD MSTORE DUP3 ISZERO PUSH2 0xD4D JUMPI PUSH2 0xD21 DUP2 PUSH1 0xC0 ADD MLOAD DUP3 PUSH1 0x80 ADD MLOAD ADD PUSH2 0x31E7 JUMP JUMPDEST DUP3 MLOAD SUB DUP3 MSTORE PUSH1 0xA0 DUP2 ADD MLOAD PUSH2 0xD43 SWAP1 PUSH2 0xD38 SWAP1 PUSH2 0x31E7 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 PUSH2 0x31FD JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0xD88 JUMP JUMPDEST PUSH2 0xD5A DUP2 PUSH1 0xA0 ADD MLOAD PUSH2 0x31E7 JUMP JUMPDEST DUP3 MLOAD ADD DUP3 MSTORE PUSH1 0xC0 DUP2 ADD MLOAD PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0xD82 SWAP2 PUSH2 0xD77 SWAP2 ADD PUSH2 0x31E7 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 PUSH2 0x3219 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE JUMPDEST DUP4 MLOAD PUSH1 0xFF AND ISZERO PUSH2 0xDCE JUMPI PUSH1 0x0 DUP5 PUSH1 0x0 ADD MLOAD PUSH1 0xFF AND DUP3 PUSH1 0xC0 ADD MLOAD DUP2 PUSH2 0xDA8 JUMPI INVALID JUMPDEST PUSH1 0xC0 DUP5 ADD DUP1 MLOAD SWAP3 SWAP1 SWAP2 DIV SWAP2 DUP3 SWAP1 SUB SWAP1 MSTORE PUSH1 0xA0 DUP5 ADD DUP1 MLOAD SWAP1 SWAP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP1 MSTORE POP JUMPDEST PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND ISZERO PUSH2 0xE0D JUMPI PUSH2 0xE01 DUP2 PUSH1 0xC0 ADD MLOAD PUSH1 0x1 PUSH1 0x80 SHL DUP5 PUSH1 0xC0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x322F JUMP JUMPDEST PUSH1 0x80 DUP4 ADD DUP1 MLOAD SWAP1 SWAP2 ADD SWAP1 MSTORE JUMPDEST DUP1 PUSH1 0x60 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0xF36 JUMPI DUP1 PUSH1 0x40 ADD MLOAD ISZERO PUSH2 0xF0D JUMPI DUP4 PUSH1 0xA0 ADD MLOAD PUSH2 0xE97 JUMPI PUSH2 0xE75 DUP5 PUSH1 0x40 ADD MLOAD PUSH1 0x0 DUP8 PUSH1 0x20 ADD MLOAD DUP9 PUSH1 0x40 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP11 PUSH1 0x60 ADD MLOAD PUSH1 0x8 PUSH2 0x32DF SWAP1 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0xA0 DUP6 ADD MSTORE JUMPDEST PUSH1 0x0 PUSH2 0xEE3 DUP3 PUSH1 0x20 ADD MLOAD DUP15 PUSH2 0xEAE JUMPI PUSH1 0x1 SLOAD PUSH2 0xEB4 JUMP JUMPDEST DUP5 PUSH1 0x80 ADD MLOAD JUMPDEST DUP16 PUSH2 0xEC3 JUMPI DUP6 PUSH1 0x80 ADD MLOAD PUSH2 0xEC7 JUMP JUMPDEST PUSH1 0x2 SLOAD JUMPDEST PUSH1 0x80 DUP10 ADD MLOAD PUSH1 0x60 DUP11 ADD MLOAD PUSH1 0x40 DUP12 ADD MLOAD PUSH1 0x5 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3471 JUMP JUMPDEST SWAP1 POP DUP13 ISZERO PUSH2 0xEEF JUMPI PUSH1 0x0 SUB JUMPDEST PUSH2 0xEFD DUP4 PUSH1 0xC0 ADD MLOAD DUP3 PUSH2 0x352B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0xC0 DUP5 ADD MSTORE POP JUMPDEST DUP12 PUSH2 0xF1C JUMPI DUP1 PUSH1 0x20 ADD MLOAD PUSH2 0xF25 JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x20 ADD MLOAD SUB JUMPDEST PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0xF71 JUMP JUMPDEST DUP1 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xF71 JUMPI PUSH2 0xF64 DUP3 PUSH1 0x40 ADD MLOAD PUSH2 0x35E1 JUMP JUMPDEST PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x60 DUP4 ADD MSTORE JUMPDEST POP PUSH2 0xB87 JUMP JUMPDEST DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x2 SIGNEXTEND DUP2 PUSH1 0x60 ADD MLOAD PUSH1 0x2 SIGNEXTEND EQ PUSH2 0x1045 JUMPI PUSH1 0x0 DUP1 PUSH2 0xFC5 DUP7 PUSH1 0x40 ADD MLOAD DUP7 PUSH1 0x40 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP11 PUSH1 0x60 ADD MLOAD DUP12 PUSH1 0x80 ADD MLOAD PUSH1 0x8 PUSH2 0x38FC SWAP1 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MLOAD PUSH1 0x60 DUP7 ADD MLOAD PUSH1 0x0 DUP1 SLOAD PUSH2 0xFFFF PUSH1 0xC8 SHL NOT AND PUSH1 0x1 PUSH1 0xC8 SHL PUSH2 0xFFFF SWAP6 DUP7 AND MUL OR PUSH2 0xFFFF PUSH1 0xB8 SHL NOT AND PUSH1 0x1 PUSH1 0xB8 SHL SWAP6 SWAP1 SWAP5 AND SWAP5 SWAP1 SWAP5 MUL SWAP3 SWAP1 SWAP3 OR PUSH3 0xFFFFFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL PUSH3 0xFFFFFF PUSH1 0x2 SWAP5 SWAP1 SWAP5 SIGNEXTEND SWAP4 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 MUL SWAP2 SWAP1 SWAP2 OR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND OR SWAP1 SSTORE POP PUSH2 0x106A SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD MLOAD PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST DUP1 PUSH1 0xC0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND EQ PUSH2 0x10B0 JUMPI PUSH1 0xC0 DUP2 ADD MLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST DUP11 ISZERO PUSH2 0x1100 JUMPI PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x1 SSTORE PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND ISZERO PUSH2 0x10FB JUMPI PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP2 DUP3 AND SWAP1 SWAP4 ADD AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST PUSH2 0x1146 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x2 SSTORE PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND ISZERO PUSH2 0x1146 JUMPI PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP3 AND PUSH1 0x1 PUSH1 0x80 SHL SWAP3 DUP4 SWAP1 DIV DUP3 AND SWAP1 SWAP5 ADD AND MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST DUP2 ISZERO ISZERO DUP12 ISZERO ISZERO EQ PUSH2 0x115F JUMPI PUSH1 0x20 DUP2 ADD MLOAD DUP2 MLOAD DUP12 SUB PUSH2 0x116C JUMP JUMPDEST DUP1 PUSH1 0x0 ADD MLOAD DUP11 SUB DUP2 PUSH1 0x20 ADD MLOAD JUMPDEST SWAP1 SWAP7 POP SWAP5 POP DUP11 ISZERO PUSH2 0x12A5 JUMPI PUSH1 0x0 DUP6 SLT ISZERO PUSH2 0x11AE JUMPI PUSH2 0x11AE PUSH32 0x0 DUP14 DUP8 PUSH1 0x0 SUB PUSH2 0x3A97 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x11B8 PUSH2 0x3BE5 JUMP JUMPDEST SWAP1 POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFA461E33 DUP9 DUP9 DUP13 DUP13 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP6 POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x123C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1250 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x125C PUSH2 0x3BE5 JUMP JUMPDEST PUSH2 0x1266 DUP3 DUP10 PUSH2 0x3D1E JUMP JUMPDEST GT ISZERO PUSH2 0x129F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x494941 PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH2 0x13CF JUMP JUMPDEST PUSH1 0x0 DUP7 SLT ISZERO PUSH2 0x12DC JUMPI PUSH2 0x12DC PUSH32 0x0 DUP14 DUP9 PUSH1 0x0 SUB PUSH2 0x3A97 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12E6 PUSH2 0x3D2E JUMP JUMPDEST SWAP1 POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFA461E33 DUP9 DUP9 DUP13 DUP13 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP6 POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x136A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x137E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x138A PUSH2 0x3D2E JUMP JUMPDEST PUSH2 0x1394 DUP3 DUP9 PUSH2 0x3D1E JUMP JUMPDEST GT ISZERO PUSH2 0x13CD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x494941 PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP JUMPDEST PUSH1 0x40 DUP1 DUP3 ADD MLOAD PUSH1 0xC0 DUP4 ADD MLOAD PUSH1 0x60 DUP1 DUP6 ADD MLOAD DUP5 MLOAD DUP12 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP12 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND DUP2 DUP8 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP4 AND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x2 SIGNEXTEND PUSH1 0x80 DUP3 ADD MSTORE SWAP2 MLOAD SWAP1 DUP15 AND SWAP2 CALLER SWAP2 PUSH32 0xC42079F94A6350D7E6235F29174924F928CC2AC818EB64FED8004E115FBCCA67 SWAP2 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 LOG3 POP POP PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND PUSH1 0x1 PUSH1 0xF0 SHL OR SWAP1 SSTORE POP SWAP2 SWAP9 SWAP1 SWAP8 POP SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP3 AND SWAP2 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV AND DUP3 JUMP JUMPDEST PUSH1 0x8 DUP2 PUSH2 0xFFFF DUP2 LT PUSH2 0x14A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST ADD SLOAD PUSH4 0xFFFFFFFF DUP2 AND SWAP2 POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 DIV PUSH1 0x6 SIGNEXTEND SWAP1 PUSH1 0x1 PUSH1 0x58 SHL DUP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 DIV PUSH1 0xFF AND DUP5 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x151D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4C4F4B PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND SWAP1 SSTORE PUSH2 0x1532 PUSH2 0x2B47 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0xD8 SHL SWAP1 DIV PUSH2 0xFFFF AND SWAP1 PUSH2 0x154E PUSH1 0x8 DUP4 DUP6 PUSH2 0x3DC6 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFFFF DUP1 DUP5 AND PUSH1 0x1 PUSH1 0xD8 SHL DUP2 MUL PUSH2 0xFFFF PUSH1 0xD8 SHL NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP3 SSTORE SWAP2 SWAP3 POP DUP4 AND EQ PUSH2 0x15BB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH2 0xFFFF DUP1 DUP6 AND DUP3 MSTORE DUP4 AND PUSH1 0x20 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0xAC49E518F90A358F652E4400164F05A5D8F7E35E7747279BC3A93DBF584E125A SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 JUMPDEST POP POP PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND PUSH1 0x1 PUSH1 0xF0 SHL OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP1 PUSH1 0x1 PUSH1 0xA0 SHL DUP2 DIV PUSH1 0x2 SIGNEXTEND SWAP1 PUSH2 0xFFFF PUSH1 0x1 PUSH1 0xB8 SHL DUP3 DIV DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0xC8 SHL DUP2 DIV DUP3 AND SWAP2 PUSH1 0x1 PUSH1 0xD8 SHL DUP3 DIV AND SWAP1 PUSH1 0xFF PUSH1 0x1 PUSH1 0xE8 SHL DUP3 DIV DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 DIV AND DUP8 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x166A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4C4F4B PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND SWAP1 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP6 AND PUSH2 0x168A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x16D8 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP12 PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP11 PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x16CE DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x3E69 JUMP JUMPDEST PUSH1 0xF SIGNEXTEND SWAP1 MSTORE PUSH2 0x3E7A JUMP JUMPDEST SWAP3 POP SWAP3 POP POP DUP2 SWAP4 POP DUP1 SWAP3 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP7 GT ISZERO PUSH2 0x16FA JUMPI PUSH2 0x16F7 PUSH2 0x3BE5 JUMP JUMPDEST SWAP2 POP JUMPDEST DUP5 ISZERO PUSH2 0x170B JUMPI PUSH2 0x1708 PUSH2 0x3D2E JUMP JUMPDEST SWAP1 POP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD3487997 DUP8 DUP8 DUP12 DUP12 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP6 POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x178D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x17A1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 DUP7 GT ISZERO PUSH2 0x17F8 JUMPI PUSH2 0x17B6 PUSH2 0x3BE5 JUMP JUMPDEST PUSH2 0x17C0 DUP4 DUP9 PUSH2 0x3D1E JUMP JUMPDEST GT ISZERO PUSH2 0x17F8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4D3 PUSH1 0xF4 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP5 ISZERO PUSH2 0x1848 JUMPI PUSH2 0x1806 PUSH2 0x3D2E JUMP JUMPDEST PUSH2 0x1810 DUP3 DUP8 PUSH2 0x3D1E JUMP JUMPDEST GT ISZERO PUSH2 0x1848 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4D31 PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP10 PUSH1 0x2 SIGNEXTEND DUP12 PUSH1 0x2 SIGNEXTEND DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x7A53080BA414158BE7EC69B987B5FB7D07DEE101FE85488F0853AE16239D0BDE CALLER DUP14 DUP12 DUP12 PUSH1 0x40 MLOAD DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND PUSH1 0x1 PUSH1 0xF0 SHL OR SWAP1 SSTORE POP SWAP2 SWAP9 SWAP1 SWAP8 POP SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1929 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4C4F4B PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND SWAP1 SSTORE PUSH2 0x193E PUSH2 0x2B47 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP1 PUSH2 0x1980 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0xFA SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x19B5 DUP7 PUSH32 0x0 PUSH3 0xFFFFFF AND PUSH3 0xF4240 PUSH2 0x40BA JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x19EC DUP7 PUSH32 0x0 PUSH3 0xFFFFFF AND PUSH3 0xF4240 PUSH2 0x40BA JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x19F8 PUSH2 0x3BE5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1A04 PUSH2 0x3D2E JUMP JUMPDEST SWAP1 POP DUP9 ISZERO PUSH2 0x1A37 JUMPI PUSH2 0x1A37 PUSH32 0x0 DUP12 DUP12 PUSH2 0x3A97 JUMP JUMPDEST DUP8 ISZERO PUSH2 0x1A68 JUMPI PUSH2 0x1A68 PUSH32 0x0 DUP12 DUP11 PUSH2 0x3A97 JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE9CBAFB0 DUP6 DUP6 DUP11 DUP11 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP6 POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1AEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1AFE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 PUSH2 0x1B0C PUSH2 0x3BE5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1B18 PUSH2 0x3D2E JUMP JUMPDEST SWAP1 POP DUP2 PUSH2 0x1B25 DUP6 DUP9 PUSH2 0x3D1E JUMP JUMPDEST GT ISZERO PUSH2 0x1B5D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x463 PUSH1 0xF4 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x1B68 DUP5 DUP8 PUSH2 0x3D1E JUMP JUMPDEST GT ISZERO PUSH2 0x1BA0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4631 PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP4 DUP3 SUB DUP4 DUP3 SUB DUP2 ISZERO PUSH2 0x1C2F JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0xE8 SHL SWAP1 DIV PUSH1 0xF AND SWAP1 DUP2 ISZERO PUSH2 0x1BD3 JUMPI DUP2 PUSH1 0xFF AND DUP5 DUP2 PUSH2 0x1BCD JUMPI INVALID JUMPDEST DIV PUSH2 0x1BD6 JUMP JUMPDEST PUSH1 0x0 JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND ISZERO PUSH2 0x1C09 JUMPI PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP3 AND DUP5 ADD AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT SWAP1 SWAP2 AND OR SWAP1 SSTORE JUMPDEST PUSH2 0x1C23 DUP2 DUP6 SUB PUSH1 0x1 PUSH1 0x80 SHL DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x322F JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE POP POP JUMPDEST DUP1 ISZERO PUSH2 0x1CBA JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0xE8 SHL SWAP1 DIV PUSH1 0x4 SHR PUSH1 0xF AND SWAP1 DUP2 ISZERO PUSH2 0x1C5F JUMPI DUP2 PUSH1 0xFF AND DUP4 DUP2 PUSH2 0x1C59 JUMPI INVALID JUMPDEST DIV PUSH2 0x1C62 JUMP JUMPDEST PUSH1 0x0 JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND ISZERO PUSH2 0x1C94 JUMPI PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP1 DUP4 DIV DUP3 AND DUP6 ADD DUP3 AND MUL SWAP2 AND OR SWAP1 SSTORE JUMPDEST PUSH2 0x1CAE DUP2 DUP5 SUB PUSH1 0x1 PUSH1 0x80 SHL DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x322F JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE POP POP JUMPDEST DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xBDBDB71D7860376BA52B25A5028BEEA23581364A40522F6BCFB86BB1F2DCA633 DUP16 DUP16 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND PUSH1 0x1 PUSH1 0xF0 SHL OR SWAP1 SSTORE POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1D87 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4C4F4B PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND DUP2 SSTORE PUSH2 0x1DA1 PUSH1 0x7 CALLER DUP10 DUP10 PUSH2 0x40F4 JUMP JUMPDEST PUSH1 0x3 DUP2 ADD SLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 DUP2 AND SWAP1 DUP7 AND GT PUSH2 0x1DC2 JUMPI DUP5 PUSH2 0x1DD1 JUMP JUMPDEST PUSH1 0x3 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND JUMPDEST PUSH1 0x3 DUP3 ADD SLOAD SWAP1 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP2 DIV DUP2 AND SWAP1 DUP6 AND GT PUSH2 0x1DF9 JUMPI DUP4 PUSH2 0x1E0F JUMP JUMPDEST PUSH1 0x3 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND JUMPDEST SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP4 AND ISZERO PUSH2 0x1E74 JUMPI PUSH1 0x3 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP2 DUP3 AND DUP7 SWAP1 SUB DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH2 0x1E74 SWAP1 PUSH32 0x0 SWAP1 DUP11 SWAP1 DUP7 AND PUSH2 0x3A97 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 AND ISZERO PUSH2 0x1EDA JUMPI PUSH1 0x3 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP1 DUP4 DIV DUP3 AND DUP7 SWAP1 SUB DUP3 AND MUL SWAP2 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE PUSH2 0x1EDA SWAP1 PUSH32 0x0 SWAP1 DUP11 SWAP1 DUP6 AND PUSH2 0x3A97 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP7 AND PUSH1 0x20 DUP4 ADD MSTORE DUP5 AND DUP2 DUP4 ADD MSTORE SWAP1 MLOAD PUSH1 0x2 DUP9 DUP2 SIGNEXTEND SWAP3 SWAP1 DUP11 SWAP1 SIGNEXTEND SWAP2 CALLER SWAP2 PUSH32 0x70935338E69775456A85DDEF226C395FB668B63FA0115F5F20610B388E6CA9C0 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG4 POP PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND PUSH1 0x1 PUSH1 0xF0 SHL OR SWAP1 SSTORE SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 SWAP1 SWAP4 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP3 DUP4 AND SWAP4 SWAP2 SWAP3 DUP2 DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV AND DUP6 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2011 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4C4F4B PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x8DA5CB5B PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP2 PUSH4 0x8DA5CB5B SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x207E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2092 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x20A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x20BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0xFF DUP3 AND ISZERO DUP1 PUSH2 0x20E1 JUMPI POP PUSH1 0x4 DUP3 PUSH1 0xFF AND LT ISZERO DUP1 ISZERO PUSH2 0x20E1 JUMPI POP PUSH1 0xA DUP3 PUSH1 0xFF AND GT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x210B JUMPI POP PUSH1 0xFF DUP2 AND ISZERO DUP1 PUSH2 0x210B JUMPI POP PUSH1 0x4 DUP2 PUSH1 0xFF AND LT ISZERO DUP1 ISZERO PUSH2 0x210B JUMPI POP PUSH1 0xA DUP2 PUSH1 0xFF AND GT ISZERO JUMPDEST PUSH2 0x2114 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF0 PUSH1 0x4 DUP5 SWAP1 SHL AND DUP5 ADD PUSH1 0xFF SWAP1 DUP2 AND PUSH1 0x1 PUSH1 0xE8 SHL SWAP1 DUP2 MUL PUSH1 0xFF PUSH1 0xE8 SHL NOT DUP5 AND OR SWAP1 SWAP4 SSTORE SWAP2 SWAP1 DIV AND PUSH32 0x973D8D92BB299F4AF6CE49B52A8ADB85AE46B9F214C4C4FC06AC77401237B133 PUSH1 0x10 DUP3 PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP4 SWAP1 SWAP3 MOD DUP4 AND DUP3 MSTORE PUSH1 0xF PUSH1 0x4 DUP7 SWAP1 SHR AND PUSH1 0x20 DUP4 ADD MSTORE DUP7 DUP4 AND DUP3 DUP3 ADD MSTORE SWAP2 DUP6 AND PUSH1 0x60 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG1 POP POP PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND PUSH1 0x1 PUSH1 0xF0 SHL OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x21F8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4C4F4B PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x8DA5CB5B PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP2 PUSH4 0x8DA5CB5B SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2265 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2279 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x228F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x22A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 DUP2 AND SWAP1 DUP6 AND GT PUSH2 0x22C1 JUMPI DUP4 PUSH2 0x22CE JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND JUMPDEST PUSH1 0x3 SLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP2 DIV DUP2 AND SWAP1 DUP5 AND GT PUSH2 0x22F4 JUMPI DUP3 PUSH2 0x2308 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 AND ISZERO PUSH2 0x2389 JUMPI PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP4 DUP2 AND SWAP2 AND EQ ISZERO PUSH2 0x2337 JUMPI PUSH1 0x0 NOT SWAP1 SWAP2 ADD SWAP1 JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP2 DUP3 AND DUP6 SWAP1 SUB DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH2 0x2389 SWAP1 PUSH32 0x0 SWAP1 DUP8 SWAP1 DUP6 AND PUSH2 0x3A97 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND ISZERO PUSH2 0x240F JUMPI PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 DUP2 AND PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP3 DIV AND EQ ISZERO PUSH2 0x23BA JUMPI PUSH1 0x0 NOT ADD JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP1 DUP4 DIV DUP3 AND DUP6 SWAP1 SUB DUP3 AND MUL SWAP2 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE PUSH2 0x240F SWAP1 PUSH32 0x0 SWAP1 DUP8 SWAP1 DUP5 AND PUSH2 0x3A97 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP6 AND DUP3 MSTORE DUP4 AND PUSH1 0x20 DUP3 ADD MSTORE DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP3 CALLER SWAP3 PUSH32 0x596B573906218D3411850B26A6B437D6C4522FDB43D2D2386263F86D50B8B151 SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND PUSH1 0x1 PUSH1 0xF0 SHL OR SWAP1 SSTORE SWAP1 SWAP5 SWAP1 SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH2 0x2489 PUSH2 0x2B47 JUMP JUMPDEST PUSH2 0x2500 PUSH2 0x2494 PUSH2 0x2B7E JUMP JUMPDEST DUP6 DUP6 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD DUP3 SWAP1 MSTORE POP SLOAD PUSH1 0x4 SLOAD PUSH1 0x8 SWAP7 SWAP6 SWAP5 POP PUSH1 0x1 PUSH1 0xA0 SHL DUP3 DIV PUSH1 0x2 SIGNEXTEND SWAP4 POP PUSH2 0xFFFF PUSH1 0x1 PUSH1 0xB8 SHL DUP4 DIV DUP2 AND SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP2 AND SWAP2 PUSH1 0x1 PUSH1 0xC8 SHL SWAP1 DIV AND PUSH2 0x4158 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2552 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4C4F4B PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND DUP2 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE CALLER DUP2 MSTORE PUSH1 0x2 DUP9 DUP2 SIGNEXTEND PUSH1 0x20 DUP4 ADD MSTORE DUP8 SWAP1 SIGNEXTEND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 SWAP1 DUP2 SWAP1 PUSH2 0x25AB SWAP1 PUSH1 0x60 DUP2 ADD PUSH2 0x259E PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP11 AND PUSH2 0x3E69 JUMP JUMPDEST PUSH1 0x0 SUB PUSH1 0xF SIGNEXTEND SWAP1 MSTORE PUSH2 0x3E7A JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP DUP2 PUSH1 0x0 SUB SWAP5 POP DUP1 PUSH1 0x0 SUB SWAP4 POP PUSH1 0x0 DUP6 GT DUP1 PUSH2 0x25CC JUMPI POP PUSH1 0x0 DUP5 GT JUMPDEST ISZERO PUSH2 0x260B JUMPI PUSH1 0x3 DUP4 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP3 AND DUP1 DUP10 ADD DUP3 AND PUSH1 0x1 PUSH1 0x80 SHL SWAP4 DUP5 SWAP1 DIV DUP4 AND DUP10 ADD SWAP1 SWAP3 AND SWAP1 SWAP3 MUL SWAP1 SWAP2 OR PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND OR SWAP1 SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP9 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP8 SWAP1 MSTORE DUP1 DUP3 ADD DUP7 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x2 DUP10 DUP2 SIGNEXTEND SWAP3 SWAP1 DUP12 SWAP1 SIGNEXTEND SWAP2 CALLER SWAP2 PUSH32 0xC396CD989A39F4459B5FA1AED6A9A8DCDBC45908ACFD67E028CD568DA98982C SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG4 POP POP PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND PUSH1 0x1 PUSH1 0xF0 SHL OR SWAP1 SSTORE POP SWAP1 SWAP5 SWAP1 SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x268F PUSH2 0x2B47 JUMP JUMPDEST PUSH2 0x2699 DUP6 DUP6 PUSH2 0x42B2 JUMP JUMPDEST PUSH1 0x2 DUP6 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP8 DUP5 SIGNEXTEND SWAP1 SWAP4 SIGNEXTEND DUP3 MSTORE DUP2 KECCAK256 PUSH1 0x3 DUP4 ADD SLOAD PUSH1 0x6 DUP2 SWAP1 SIGNEXTEND SWAP4 PUSH1 0x1 PUSH1 0x38 SHL DUP3 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 DUP5 SWAP3 PUSH1 0x1 PUSH1 0xD8 SHL DUP2 DIV PUSH4 0xFFFFFFFF AND SWAP3 DUP5 SWAP3 SWAP1 SWAP2 PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 DIV PUSH1 0xFF AND DUP1 PUSH2 0x26FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 DUP3 ADD SLOAD PUSH1 0x6 DUP2 SWAP1 SIGNEXTEND SWAP9 POP PUSH1 0x1 PUSH1 0x38 SHL DUP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP7 POP PUSH1 0x1 PUSH1 0xD8 SHL DUP2 DIV PUSH4 0xFFFFFFFF AND SWAP5 POP PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 DIV PUSH1 0xFF AND DUP1 PUSH2 0x273E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0xE0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0xA0 SHL DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x20 DUP5 ADD DUP2 SWAP1 MSTORE PUSH2 0xFFFF PUSH1 0x1 PUSH1 0xB8 SHL DUP5 DIV DUP2 AND SWAP6 DUP6 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0x1 PUSH1 0xC8 SHL DUP4 DIV DUP6 AND PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0xD8 SHL DUP4 DIV SWAP1 SWAP5 AND PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xFF PUSH1 0x1 PUSH1 0xE8 SHL DUP4 DIV DUP2 AND PUSH1 0xA0 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 SWAP3 DIV SWAP1 SWAP2 AND ISZERO ISZERO PUSH1 0xC0 DUP4 ADD MSTORE SWAP1 SWAP4 POP DUP15 DUP2 SIGNEXTEND SWAP2 SWAP1 SIGNEXTEND SLT ISZERO SWAP1 POP PUSH2 0x27E7 JUMPI POP SWAP4 SWAP1 SWAP5 SUB SWAP7 POP SWAP1 SUB SWAP4 POP SWAP1 SUB SWAP1 POP PUSH2 0x286A JUMP JUMPDEST DUP11 PUSH1 0x2 SIGNEXTEND DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x2 SIGNEXTEND SLT ISZERO PUSH2 0x285B JUMPI PUSH1 0x0 PUSH2 0x2803 PUSH2 0x2B7E JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x4 SLOAD PUSH1 0x60 DUP7 ADD MLOAD SWAP4 SWAP5 POP PUSH1 0x0 SWAP4 DUP5 SWAP4 PUSH2 0x2839 SWAP4 PUSH1 0x8 SWAP4 DUP9 SWAP4 DUP8 SWAP4 SWAP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP1 PUSH2 0x32DF JUMP JUMPDEST SWAP11 SWAP1 SUB SWAP9 SWAP1 SWAP9 SUB SWAP12 POP POP SWAP5 SWAP1 SWAP7 SUB SWAP3 SWAP1 SWAP3 SUB SWAP7 POP SWAP1 SWAP2 SUB SUB SWAP3 POP PUSH2 0x286A SWAP2 POP POP JUMP JUMPDEST POP SWAP5 SWAP1 SWAP4 SUB SWAP7 POP SUB SWAP4 POP SWAP1 SUB SWAP1 POP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 SWAP1 SWAP4 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP4 AND SWAP4 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP4 DIV PUSH1 0xF SIGNEXTEND SWAP3 SWAP1 PUSH1 0x6 DUP2 SWAP1 SIGNEXTEND SWAP1 PUSH1 0x1 PUSH1 0x38 SHL DUP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH1 0x1 PUSH1 0xD8 SHL DUP2 DIV PUSH4 0xFFFFFFFF AND SWAP1 PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 DIV PUSH1 0xFF AND DUP9 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x29B4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4149 PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x29BF DUP3 PUSH2 0x35E1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x29D7 PUSH2 0x29CF PUSH2 0x2B7E JUMP JUMPDEST PUSH1 0x8 SWAP1 PUSH2 0x437B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xE0 DUP2 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP1 DUP3 MSTORE PUSH1 0x2 DUP9 DUP2 SIGNEXTEND PUSH1 0x20 DUP1 DUP6 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 DUP6 DUP8 ADD DUP2 SWAP1 MSTORE PUSH2 0xFFFF DUP10 DUP2 AND PUSH1 0x60 DUP9 ADD DUP2 SWAP1 MSTORE SWAP1 DUP10 AND PUSH1 0x80 DUP9 ADD DUP2 SWAP1 MSTORE PUSH1 0xA0 DUP9 ADD DUP4 SWAP1 MSTORE PUSH1 0x1 PUSH1 0xC0 SWAP1 SWAP9 ADD SWAP8 SWAP1 SWAP8 MSTORE DUP2 SLOAD PUSH1 0x1 PUSH1 0xF0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP2 AND DUP8 OR PUSH3 0xFFFFFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL PUSH3 0xFFFFFF SWAP8 DUP8 SWAP1 SIGNEXTEND SWAP8 SWAP1 SWAP8 AND SWAP7 SWAP1 SWAP7 MUL SWAP6 SWAP1 SWAP6 OR PUSH4 0xFFFFFFFF PUSH1 0xB8 SHL NOT AND PUSH1 0x1 PUSH1 0xC8 SHL SWAP1 SWAP2 MUL OR PUSH2 0xFFFF PUSH1 0xD8 SHL NOT AND PUSH1 0x1 PUSH1 0xD8 SHL SWAP1 SWAP7 MUL SWAP6 SWAP1 SWAP6 OR PUSH2 0xFFFF PUSH1 0xE8 SHL NOT AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP4 SSTORE DUP4 MLOAD SWAP2 DUP3 MSTORE DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 MLOAD SWAP4 SWAP6 POP SWAP2 SWAP4 POP PUSH32 0x98636036CB66A9C19A37435EFC1E90142190214E8ABEB821BDBA3F2990DD4C95 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x2 DUP2 SWAP1 SIGNEXTEND PUSH3 0xD89E7 NOT DUP2 PUSH2 0x2AF0 JUMPI INVALID JUMPDEST SDIV MUL SWAP1 POP PUSH1 0x0 DUP4 PUSH1 0x2 DUP2 SWAP1 SIGNEXTEND PUSH3 0xD89E8 DUP2 PUSH2 0x2B07 JUMPI INVALID JUMPDEST SDIV MUL SWAP1 POP PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND DUP4 DUP4 SUB PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x2B1E JUMPI INVALID JUMPDEST SDIV PUSH1 0x1 ADD SWAP1 POP DUP1 PUSH3 0xFFFFFF AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 AND DUP2 PUSH2 0x2B3B JUMPI INVALID JUMPDEST DIV SWAP4 POP POP POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x2B7C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST JUMP JUMPDEST TIMESTAMP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND DUP7 PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x2B96 JUMPI INVALID JUMPDEST SDIV SWAP1 POP PUSH1 0x0 DUP7 PUSH1 0x2 SIGNEXTEND SLT DUP1 ISZERO PUSH2 0x2BBD JUMPI POP DUP5 PUSH1 0x2 SIGNEXTEND DUP7 PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x2BB6 JUMPI INVALID JUMPDEST SMOD PUSH1 0x2 SIGNEXTEND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x2BC7 JUMPI PUSH1 0x0 NOT ADD JUMPDEST DUP4 ISZERO PUSH2 0x2C3C JUMPI PUSH1 0x0 DUP1 PUSH2 0x2BD9 DUP4 PUSH2 0x43C7 JUMP JUMPDEST PUSH1 0x1 DUP3 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP14 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF DUP4 AND SWAP2 SWAP1 SWAP2 SHL DUP1 ADD PUSH1 0x0 NOT ADD SWAP1 DUP2 AND DUP1 ISZERO ISZERO SWAP8 POP SWAP3 SWAP5 POP SWAP1 SWAP3 POP SWAP1 DUP6 PUSH2 0x2C1E JUMPI DUP9 DUP4 PUSH1 0xFF AND DUP7 SUB MUL PUSH2 0x2C31 JUMP JUMPDEST DUP9 PUSH2 0x2C28 DUP3 PUSH2 0x43D9 JUMP JUMPDEST DUP5 SUB PUSH1 0xFF AND DUP7 SUB MUL JUMPDEST SWAP7 POP POP POP POP POP PUSH2 0x2CBA JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2C4B DUP4 PUSH1 0x1 ADD PUSH2 0x43C7 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH1 0x1 DUP3 PUSH1 0xFF AND PUSH1 0x1 SWAP1 SHL SUB NOT SWAP1 POP PUSH1 0x0 DUP2 DUP12 PUSH1 0x0 DUP7 PUSH1 0x1 SIGNEXTEND PUSH1 0x1 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD AND SWAP1 POP DUP1 PUSH1 0x0 EQ ISZERO SWAP6 POP DUP6 PUSH2 0x2C9D JUMPI DUP9 DUP4 PUSH1 0xFF SUB PUSH1 0xFF AND DUP7 PUSH1 0x1 ADD ADD MUL PUSH2 0x2CB3 JUMP JUMPDEST DUP9 DUP4 PUSH2 0x2CA8 DUP4 PUSH2 0x4478 JUMP JUMPDEST SUB PUSH1 0xFF AND DUP7 PUSH1 0x1 ADD ADD MUL JUMPDEST SWAP7 POP POP POP POP POP JUMPDEST POP SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH1 0x2 SIGNEXTEND SLT PUSH2 0x2CDB JUMPI DUP3 PUSH1 0x2 SIGNEXTEND PUSH2 0x2CE3 JUMP JUMPDEST DUP3 PUSH1 0x2 SIGNEXTEND PUSH1 0x0 SUB JUMPDEST SWAP1 POP PUSH3 0xD89E8 DUP2 GT ISZERO PUSH2 0x2D21 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0xFA SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 AND PUSH2 0x2D35 JUMPI PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0x2D47 JUMP JUMPDEST PUSH16 0xFFFCB933BD6FAD37AA2D162D1A594001 JUMPDEST PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x2 DUP3 AND ISZERO PUSH2 0x2D7B JUMPI PUSH16 0xFFF97272373D413259A46990580E213A MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x4 DUP3 AND ISZERO PUSH2 0x2D9A JUMPI PUSH16 0xFFF2E50F5F656932EF12357CF3C7FDCC MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x8 DUP3 AND ISZERO PUSH2 0x2DB9 JUMPI PUSH16 0xFFE5CACA7E10E4E61C3624EAA0941CD0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x10 DUP3 AND ISZERO PUSH2 0x2DD8 JUMPI PUSH16 0xFFCB9843D60F6159C9DB58835C926644 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x20 DUP3 AND ISZERO PUSH2 0x2DF7 JUMPI PUSH16 0xFF973B41FA98C081472E6896DFB254C0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x40 DUP3 AND ISZERO PUSH2 0x2E16 JUMPI PUSH16 0xFF2EA16466C96A3843EC78B326B52861 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x80 DUP3 AND ISZERO PUSH2 0x2E35 JUMPI PUSH16 0xFE5DEE046A99A2A811C461F1969C3053 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x100 DUP3 AND ISZERO PUSH2 0x2E55 JUMPI PUSH16 0xFCBE86C7900A88AEDCFFC83B479AA3A4 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x200 DUP3 AND ISZERO PUSH2 0x2E75 JUMPI PUSH16 0xF987A7253AC413176F2B074CF7815E54 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x400 DUP3 AND ISZERO PUSH2 0x2E95 JUMPI PUSH16 0xF3392B0822B70005940C7A398E4B70F3 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x800 DUP3 AND ISZERO PUSH2 0x2EB5 JUMPI PUSH16 0xE7159475A2C29B7443B29C7FA6E889D9 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x1000 DUP3 AND ISZERO PUSH2 0x2ED5 JUMPI PUSH16 0xD097F3BDFD2022B8845AD8F792AA5825 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x2000 DUP3 AND ISZERO PUSH2 0x2EF5 JUMPI PUSH16 0xA9F746462D870FDF8A65DC1F90E061E5 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x4000 DUP3 AND ISZERO PUSH2 0x2F15 JUMPI PUSH16 0x70D869A156D2A1B890BB3DF62BAF32F7 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x8000 DUP3 AND ISZERO PUSH2 0x2F35 JUMPI PUSH16 0x31BE135F97D08FD981231505542FCFA6 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x10000 DUP3 AND ISZERO PUSH2 0x2F56 JUMPI PUSH16 0x9AA508B5B7A84E1C677DE54F3E99BC9 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x20000 DUP3 AND ISZERO PUSH2 0x2F76 JUMPI PUSH15 0x5D6AF8DEDB81196699C329225EE604 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x40000 DUP3 AND ISZERO PUSH2 0x2F95 JUMPI PUSH14 0x2216E584F5FA1EA926041BEDFE98 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x80000 DUP3 AND ISZERO PUSH2 0x2FB2 JUMPI PUSH12 0x48A170391F7DC42444E8FA2 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND SGT ISZERO PUSH2 0x2FCD JUMPI DUP1 PUSH1 0x0 NOT DUP2 PUSH2 0x2FC9 JUMPI INVALID JUMPDEST DIV SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0x20 SHL DUP2 MOD ISZERO PUSH2 0x2FE0 JUMPI PUSH1 0x1 PUSH2 0x2FE3 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0xFF AND PUSH1 0x20 DUP3 SWAP1 SHR ADD SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP10 AND SWAP1 DUP11 AND LT ISZERO DUP2 DUP8 SLT DUP1 ISZERO SWAP1 PUSH2 0x307A JUMPI PUSH1 0x0 PUSH2 0x302E DUP10 DUP10 PUSH3 0xF4240 SUB PUSH3 0xFFFFFF AND PUSH3 0xF4240 PUSH2 0x322F JUMP JUMPDEST SWAP1 POP DUP3 PUSH2 0x3047 JUMPI PUSH2 0x3042 DUP13 DUP13 DUP13 PUSH1 0x1 PUSH2 0x4562 JUMP JUMPDEST PUSH2 0x3054 JUMP JUMPDEST PUSH2 0x3054 DUP12 DUP14 DUP13 PUSH1 0x1 PUSH2 0x45DD JUMP JUMPDEST SWAP6 POP DUP6 DUP2 LT PUSH2 0x3065 JUMPI DUP11 SWAP7 POP PUSH2 0x3074 JUMP JUMPDEST PUSH2 0x3071 DUP13 DUP12 DUP4 DUP7 PUSH2 0x4688 JUMP JUMPDEST SWAP7 POP JUMPDEST POP PUSH2 0x30C4 JUMP JUMPDEST DUP2 PUSH2 0x3091 JUMPI PUSH2 0x308C DUP12 DUP12 DUP12 PUSH1 0x0 PUSH2 0x45DD JUMP JUMPDEST PUSH2 0x309E JUMP JUMPDEST PUSH2 0x309E DUP11 DUP13 DUP12 PUSH1 0x0 PUSH2 0x4562 JUMP JUMPDEST SWAP4 POP DUP4 DUP9 PUSH1 0x0 SUB LT PUSH2 0x30B2 JUMPI DUP10 SWAP6 POP PUSH2 0x30C4 JUMP JUMPDEST PUSH2 0x30C1 DUP12 DUP11 DUP11 PUSH1 0x0 SUB DUP6 PUSH2 0x46D4 JUMP JUMPDEST SWAP6 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 DUP2 AND SWAP1 DUP8 AND EQ DUP3 ISZERO PUSH2 0x3127 JUMPI DUP1 DUP1 ISZERO PUSH2 0x30E3 JUMPI POP DUP2 JUMPDEST PUSH2 0x30F9 JUMPI PUSH2 0x30F4 DUP8 DUP14 DUP13 PUSH1 0x1 PUSH2 0x45DD JUMP JUMPDEST PUSH2 0x30FB JUMP JUMPDEST DUP6 JUMPDEST SWAP6 POP DUP1 DUP1 ISZERO PUSH2 0x3108 JUMPI POP DUP2 ISZERO JUMPDEST PUSH2 0x311E JUMPI PUSH2 0x3119 DUP8 DUP14 DUP13 PUSH1 0x0 PUSH2 0x4562 JUMP JUMPDEST PUSH2 0x3120 JUMP JUMPDEST DUP5 JUMPDEST SWAP5 POP PUSH2 0x3171 JUMP JUMPDEST DUP1 DUP1 ISZERO PUSH2 0x3131 JUMPI POP DUP2 JUMPDEST PUSH2 0x3147 JUMPI PUSH2 0x3142 DUP13 DUP9 DUP13 PUSH1 0x1 PUSH2 0x4562 JUMP JUMPDEST PUSH2 0x3149 JUMP JUMPDEST DUP6 JUMPDEST SWAP6 POP DUP1 DUP1 ISZERO PUSH2 0x3156 JUMPI POP DUP2 ISZERO JUMPDEST PUSH2 0x316C JUMPI PUSH2 0x3167 DUP13 DUP9 DUP13 PUSH1 0x0 PUSH2 0x45DD JUMP JUMPDEST PUSH2 0x316E JUMP JUMPDEST DUP5 JUMPDEST SWAP5 POP JUMPDEST DUP2 ISZERO DUP1 ISZERO PUSH2 0x3181 JUMPI POP DUP9 PUSH1 0x0 SUB DUP6 GT JUMPDEST ISZERO PUSH2 0x318D JUMPI DUP9 PUSH1 0x0 SUB SWAP5 POP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x31AC JUMPI POP DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x31BB JUMPI DUP6 DUP10 SUB SWAP4 POP PUSH2 0x31D8 JUMP JUMPDEST PUSH2 0x31D5 DUP7 DUP10 PUSH3 0xFFFFFF AND DUP11 PUSH3 0xF4240 SUB PUSH3 0xFFFFFF AND PUSH2 0x40BA JUMP JUMPDEST SWAP4 POP JUMPDEST POP POP POP SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xFF SHL DUP3 LT PUSH2 0x31F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 SGT ISZERO PUSH1 0x0 DUP4 SLT ISZERO EQ PUSH2 0x3213 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 DUP2 ADD DUP3 DUP2 SLT ISZERO PUSH1 0x0 DUP4 SLT ISZERO EQ PUSH2 0x3213 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH1 0x0 NOT DUP6 DUP8 MULMOD DUP7 DUP7 MUL SWAP3 POP DUP3 DUP2 LT SWAP1 DUP4 SWAP1 SUB SUB SWAP1 POP DUP1 PUSH2 0x3265 JUMPI PUSH1 0x0 DUP5 GT PUSH2 0x325A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP3 SWAP1 DIV SWAP1 POP PUSH2 0x32D8 JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0x3271 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP7 DUP9 MULMOD PUSH1 0x0 DUP7 DUP2 SUB DUP8 AND SWAP7 DUP8 SWAP1 DIV SWAP7 PUSH1 0x2 PUSH1 0x3 DUP10 MUL DUP2 XOR DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL SWAP1 SWAP2 SUB MUL SWAP2 DUP2 SWAP1 SUB DUP2 SWAP1 DIV PUSH1 0x1 ADD DUP7 DUP5 GT SWAP1 SWAP6 SUB SWAP5 SWAP1 SWAP5 MUL SWAP2 SWAP1 SWAP5 SUB SWAP3 SWAP1 SWAP3 DIV SWAP2 SWAP1 SWAP2 OR SWAP2 SWAP1 SWAP2 MUL SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH4 0xFFFFFFFF DUP8 AND PUSH2 0x3385 JUMPI PUSH1 0x0 DUP10 DUP7 PUSH2 0xFFFF AND PUSH2 0xFFFF DUP2 LT PUSH2 0x3300 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE SWAP2 SWAP1 SWAP3 ADD SLOAD PUSH4 0xFFFFFFFF DUP1 DUP3 AND DUP1 DUP5 MSTORE PUSH1 0x1 PUSH1 0x20 SHL DUP4 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x58 SHL DUP4 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP5 DUP5 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP2 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP4 ADD MSTORE SWAP1 SWAP3 POP DUP11 AND EQ PUSH2 0x3371 JUMPI PUSH2 0x336E DUP2 DUP11 DUP10 DUP9 PUSH2 0x4720 JUMP JUMPDEST SWAP1 POP JUMPDEST DUP1 PUSH1 0x20 ADD MLOAD DUP2 PUSH1 0x40 ADD MLOAD SWAP3 POP SWAP3 POP POP PUSH2 0x3465 JUMP JUMPDEST DUP7 DUP9 SUB PUSH1 0x0 DUP1 PUSH2 0x339A DUP13 DUP13 DUP6 DUP13 DUP13 DUP13 DUP13 PUSH2 0x47C3 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH1 0x0 ADD MLOAD PUSH4 0xFFFFFFFF AND DUP4 PUSH4 0xFFFFFFFF AND EQ ISZERO PUSH2 0x33CC JUMPI DUP2 PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x40 ADD MLOAD SWAP5 POP SWAP5 POP POP POP POP PUSH2 0x3465 JUMP JUMPDEST DUP1 MLOAD PUSH4 0xFFFFFFFF DUP5 DUP2 AND SWAP2 AND EQ ISZERO PUSH2 0x33F4 JUMPI DUP1 PUSH1 0x20 ADD MLOAD DUP2 PUSH1 0x40 ADD MLOAD SWAP5 POP SWAP5 POP POP POP POP PUSH2 0x3465 JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD PUSH1 0x20 DUP1 DUP6 ADD MLOAD SWAP1 DUP5 ADD MLOAD SWAP2 DUP4 SWAP1 SUB SWAP3 DUP7 SUB SWAP2 PUSH4 0xFFFFFFFF DUP1 DUP5 AND SWAP3 SWAP1 DUP6 AND SWAP2 SUB PUSH1 0x6 SIGNEXTEND DUP2 PUSH2 0x3422 JUMPI INVALID JUMPDEST SDIV MUL DUP5 PUSH1 0x20 ADD MLOAD ADD DUP3 PUSH4 0xFFFFFFFF AND DUP3 PUSH4 0xFFFFFFFF AND DUP7 PUSH1 0x40 ADD MLOAD DUP7 PUSH1 0x40 ADD MLOAD SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL DUP2 PUSH2 0x3454 JUMPI INVALID JUMPDEST DIV DUP6 PUSH1 0x40 ADD MLOAD ADD SWAP7 POP SWAP7 POP POP POP POP POP POP JUMPDEST SWAP8 POP SWAP8 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SWAP6 DUP7 SIGNEXTEND DUP7 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP8 SWAP1 SWAP8 MSTORE PUSH1 0x40 SWAP1 SWAP7 KECCAK256 PUSH1 0x1 DUP2 ADD DUP1 SLOAD SWAP1 SWAP6 SUB SWAP1 SWAP5 SSTORE SWAP4 DUP4 ADD DUP1 SLOAD SWAP1 SWAP3 SUB SWAP1 SWAP2 SSTORE PUSH1 0x3 DUP3 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0xD8 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x1 PUSH1 0x38 SHL DUP1 DUP6 DIV DUP3 AND SWAP1 SWAP7 SUB AND SWAP1 SWAP5 MUL PUSH1 0x1 PUSH1 0x38 SHL PUSH1 0x1 PUSH1 0xD8 SHL SUB NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR PUSH1 0x6 DUP2 DUP2 SIGNEXTEND SWAP1 SWAP7 SUB SWAP1 SWAP6 SIGNEXTEND PUSH7 0xFFFFFFFFFFFFFF AND PUSH7 0xFFFFFFFFFFFFFF NOT SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR DUP3 DUP2 DIV DUP6 AND SWAP1 SWAP6 SUB SWAP1 SWAP4 AND MUL PUSH4 0xFFFFFFFF PUSH1 0xD8 SHL NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SSTORE SLOAD PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0xF SIGNEXTEND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0xF SIGNEXTEND SLT ISZERO PUSH2 0x3590 JUMPI DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP3 PUSH1 0x0 SUB DUP5 SUB SWAP2 POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND LT PUSH2 0x358B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4C53 PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x3213 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP3 DUP5 ADD SWAP2 POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND LT ISZERO PUSH2 0x3213 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4C41 PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH5 0x1000276A3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND LT DUP1 ISZERO SWAP1 PUSH2 0x361D JUMPI POP PUSH20 0xFFFD8963EFD1FC6A506488495D951D5263988D26 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND LT JUMPDEST PUSH2 0x3652 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0xF9 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH5 0x100000000 PUSH1 0x1 PUSH1 0xC0 SHL SUB PUSH1 0x20 DUP4 SWAP1 SHL AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 GT PUSH1 0x7 SHL DUP2 DUP2 SHR PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH1 0x6 SHL SWAP1 DUP2 SHR PUSH4 0xFFFFFFFF DUP2 GT PUSH1 0x5 SHL SWAP1 DUP2 SHR PUSH2 0xFFFF DUP2 GT PUSH1 0x4 SHL SWAP1 DUP2 SHR PUSH1 0xFF DUP2 GT PUSH1 0x3 SWAP1 DUP2 SHL SWAP2 DUP3 SHR PUSH1 0xF DUP2 GT PUSH1 0x2 SHL SWAP1 DUP2 SHR SWAP2 DUP3 GT PUSH1 0x1 SWAP1 DUP2 SHL SWAP3 DUP4 SHR SWAP8 SWAP1 DUP9 GT SWAP7 OR SWAP1 SWAP5 OR SWAP1 SWAP3 OR OR SWAP1 SWAP2 OR OR OR PUSH1 0x80 DUP2 LT PUSH2 0x36E6 JUMPI PUSH1 0x7F DUP2 SUB DUP4 SWAP1 SHR SWAP2 POP PUSH2 0x36F0 JUMP JUMPDEST DUP1 PUSH1 0x7F SUB DUP4 SWAP1 SHL SWAP2 POP JUMPDEST SWAP1 DUP1 MUL PUSH1 0x7F DUP2 DUP2 SHR PUSH1 0xFF DUP4 DUP2 SHR SWAP2 SWAP1 SWAP2 SHR DUP1 MUL DUP1 DUP4 SHR DUP2 DUP4 SHR SHR DUP1 MUL DUP1 DUP5 SHR DUP2 DUP5 SHR SHR DUP1 MUL DUP1 DUP6 SHR DUP2 DUP6 SHR SHR DUP1 MUL DUP1 DUP7 SHR DUP2 DUP7 SHR SHR DUP1 MUL DUP1 DUP8 SHR DUP2 DUP8 SHR SHR DUP1 MUL DUP1 DUP9 SHR DUP2 DUP9 SHR SHR DUP1 MUL DUP1 DUP10 SHR DUP2 DUP10 SHR SHR DUP1 MUL DUP1 DUP11 SHR DUP2 DUP11 SHR SHR DUP1 MUL DUP1 DUP12 SHR DUP2 DUP12 SHR SHR DUP1 MUL DUP1 DUP13 SHR DUP2 DUP13 SHR SHR DUP1 MUL DUP1 DUP14 SHR DUP2 DUP14 SHR SHR DUP1 MUL DUP1 DUP15 SHR SWAP13 DUP2 SWAP1 SHR SWAP13 SWAP1 SWAP13 SHR DUP1 MUL SWAP13 DUP14 SWAP1 SHR SWAP15 SWAP14 PUSH1 0x7F NOT DUP16 ADD PUSH1 0x40 SHL PUSH1 0xC0 SWAP2 SWAP1 SWAP2 SHR PUSH8 0x8000000000000000 AND OR PUSH1 0xC1 SWAP12 SWAP1 SWAP12 SHR PUSH8 0x4000000000000000 AND SWAP11 SWAP1 SWAP11 OR PUSH1 0xC2 SWAP10 SWAP1 SWAP10 SHR PUSH8 0x2000000000000000 AND SWAP9 SWAP1 SWAP9 OR PUSH1 0xC3 SWAP8 SWAP1 SWAP8 SHR PUSH8 0x1000000000000000 AND SWAP7 SWAP1 SWAP7 OR PUSH1 0xC4 SWAP6 SWAP1 SWAP6 SHR PUSH8 0x800000000000000 AND SWAP5 SWAP1 SWAP5 OR PUSH1 0xC5 SWAP4 SWAP1 SWAP4 SHR PUSH8 0x400000000000000 AND SWAP3 SWAP1 SWAP3 OR PUSH1 0xC6 SWAP2 SWAP1 SWAP2 SHR PUSH8 0x200000000000000 AND OR PUSH1 0xC7 SWAP2 SWAP1 SWAP2 SHR PUSH1 0x1 PUSH1 0x38 SHL AND OR PUSH1 0xC8 SWAP2 SWAP1 SWAP2 SHR PUSH7 0x80000000000000 AND OR PUSH1 0xC9 SWAP2 SWAP1 SWAP2 SHR PUSH7 0x40000000000000 AND OR PUSH1 0xCA SWAP2 SWAP1 SWAP2 SHR PUSH7 0x20000000000000 AND OR PUSH1 0xCB SWAP2 SWAP1 SWAP2 SHR PUSH7 0x10000000000000 AND OR PUSH1 0xCC SWAP2 SWAP1 SWAP2 SHR PUSH7 0x8000000000000 AND OR PUSH1 0xCD SWAP2 SWAP1 SWAP2 SHR PUSH7 0x4000000000000 AND OR PUSH10 0x3627A301D71055774C85 DUP2 MUL PUSH16 0x28F6481AB7F045A5AF012A19D003AA9 NOT DUP2 ADD PUSH1 0x80 SWAP1 DUP2 SAR SWAP1 PUSH16 0xDB2DF09E81959A81455E260799A0632F DUP4 ADD SWAP1 SAR PUSH1 0x2 DUP2 DUP2 SIGNEXTEND SWAP1 DUP4 SWAP1 SIGNEXTEND EQ PUSH2 0x38ED JUMPI DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x38D1 DUP3 PUSH2 0x2CC4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x38E6 JUMPI DUP2 PUSH2 0x38E8 JUMP JUMPDEST DUP1 JUMPDEST PUSH2 0x38EF JUMP JUMPDEST DUP2 JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP10 DUP10 PUSH2 0xFFFF AND PUSH2 0xFFFF DUP2 LT PUSH2 0x3912 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE SWAP2 SWAP1 SWAP3 ADD SLOAD PUSH4 0xFFFFFFFF DUP1 DUP3 AND DUP1 DUP5 MSTORE PUSH1 0x1 PUSH1 0x20 SHL DUP4 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x58 SHL DUP4 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP5 DUP5 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP2 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP4 ADD MSTORE SWAP1 SWAP3 POP DUP10 AND EQ ISZERO PUSH2 0x3981 JUMPI DUP9 DUP6 SWAP3 POP SWAP3 POP POP PUSH2 0x3465 JUMP JUMPDEST DUP5 PUSH2 0xFFFF AND DUP5 PUSH2 0xFFFF AND GT DUP1 ISZERO PUSH2 0x39A2 JUMPI POP PUSH1 0x1 DUP6 SUB PUSH2 0xFFFF AND DUP10 PUSH2 0xFFFF AND EQ JUMPDEST ISZERO PUSH2 0x39AF JUMPI DUP4 SWAP2 POP PUSH2 0x39B3 JUMP JUMPDEST DUP5 SWAP2 POP JUMPDEST DUP2 PUSH2 0xFFFF AND DUP10 PUSH1 0x1 ADD PUSH2 0xFFFF AND DUP2 PUSH2 0x39C7 JUMPI INVALID JUMPDEST MOD SWAP3 POP PUSH2 0x39D6 DUP2 DUP10 DUP10 DUP10 PUSH2 0x4720 JUMP JUMPDEST DUP11 DUP5 PUSH2 0xFFFF AND PUSH2 0xFFFF DUP2 LT PUSH2 0x39E7 JUMPI INVALID JUMPDEST DUP3 MLOAD SWAP2 ADD DUP1 SLOAD PUSH1 0x20 DUP5 ADD MLOAD PUSH1 0x40 DUP6 ADD MLOAD PUSH1 0x60 SWAP1 SWAP6 ADD MLOAD ISZERO ISZERO PUSH1 0x1 PUSH1 0xF8 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP7 AND PUSH1 0x1 PUSH1 0x58 SHL MUL PUSH32 0xFF0000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFF PUSH1 0x6 SWAP4 SWAP1 SWAP4 SIGNEXTEND PUSH7 0xFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0x20 SHL MUL PUSH11 0xFFFFFFFFFFFFFF00000000 NOT PUSH4 0xFFFFFFFF SWAP1 SWAP8 AND PUSH4 0xFFFFFFFF NOT SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR SWAP6 SWAP1 SWAP6 AND SWAP3 SWAP1 SWAP3 OR AND SWAP3 SWAP1 SWAP3 OR SWAP3 SWAP1 SWAP3 AND OR SWAP1 SSTORE POP SWAP8 POP SWAP8 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xA9059CBB PUSH1 0xE0 SHL OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 DUP6 SWAP5 SWAP4 DUP10 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x3B13 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x3AF4 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3B75 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3B7A JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x3BA8 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x3BA8 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3BA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x3BDE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x2A23 PUSH1 0xF1 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD ADDRESS PUSH1 0x24 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x70A08231 PUSH1 0xE0 SHL OR DUP2 MSTORE SWAP2 MLOAD DUP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 DUP5 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x3C7E JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x3C5F JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3CDE JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3CE3 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x3CF7 JUMPI POP PUSH1 0x20 DUP2 MLOAD LT ISZERO JUMPDEST PUSH2 0x3D00 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3D15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 POP POP POP SWAP1 JUMP JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0x3213 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD ADDRESS PUSH1 0x24 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x70A08231 PUSH1 0xE0 SHL OR DUP2 MSTORE SWAP2 MLOAD DUP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 DUP5 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 PUSH1 0x20 DUP4 LT PUSH2 0x3C7E JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x3C5F JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH2 0xFFFF AND GT PUSH2 0x3E04 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x49 PUSH1 0xF8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 PUSH2 0xFFFF AND DUP3 PUSH2 0xFFFF AND GT PUSH2 0x3E1A JUMPI POP DUP2 PUSH2 0x32D8 JUMP JUMPDEST DUP3 JUMPDEST DUP3 PUSH2 0xFFFF AND DUP2 PUSH2 0xFFFF AND LT ISZERO PUSH2 0x3E60 JUMPI PUSH1 0x1 DUP6 DUP3 PUSH2 0xFFFF AND PUSH2 0xFFFF DUP2 LT PUSH2 0x3E3F JUMPI INVALID JUMPDEST ADD DUP1 SLOAD PUSH4 0xFFFFFFFF NOT AND PUSH4 0xFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x1 ADD PUSH2 0x3E1C JUMP JUMPDEST POP SWAP1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 PUSH1 0xF DUP2 SWAP1 SIGNEXTEND DUP2 EQ PUSH2 0x2B42 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x3E87 PUSH2 0x2B47 JUMP JUMPDEST PUSH2 0x3E99 DUP5 PUSH1 0x20 ADD MLOAD DUP6 PUSH1 0x40 ADD MLOAD PUSH2 0x42B2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xE0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0xA0 SHL DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP1 DUP5 ADD DUP3 SWAP1 MSTORE PUSH2 0xFFFF PUSH1 0x1 PUSH1 0xB8 SHL DUP5 DIV DUP2 AND DUP6 DUP8 ADD MSTORE PUSH1 0x1 PUSH1 0xC8 SHL DUP5 DIV DUP2 AND PUSH1 0x60 DUP1 DUP8 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0xD8 SHL DUP6 DIV SWAP1 SWAP2 AND PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0xFF PUSH1 0x1 PUSH1 0xE8 SHL DUP6 DIV DUP2 AND PUSH1 0xA0 DUP8 ADD MSTORE PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 SWAP5 DIV SWAP1 SWAP4 AND ISZERO ISZERO PUSH1 0xC0 DUP6 ADD MSTORE DUP9 MLOAD SWAP1 DUP10 ADD MLOAD SWAP5 DUP10 ADD MLOAD SWAP3 DUP10 ADD MLOAD SWAP4 SWAP5 PUSH2 0x3F3D SWAP5 SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 SWAP1 PUSH2 0x49BD JUMP JUMPDEST SWAP4 POP DUP5 PUSH1 0x60 ADD MLOAD PUSH1 0xF SIGNEXTEND PUSH1 0x0 EQ PUSH2 0x40B2 JUMPI DUP5 PUSH1 0x20 ADD MLOAD PUSH1 0x2 SIGNEXTEND DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x2 SIGNEXTEND SLT ISZERO PUSH2 0x3F92 JUMPI PUSH2 0x3F8B PUSH2 0x3F74 DUP7 PUSH1 0x20 ADD MLOAD PUSH2 0x2CC4 JUMP JUMPDEST PUSH2 0x3F81 DUP8 PUSH1 0x40 ADD MLOAD PUSH2 0x2CC4 JUMP JUMPDEST DUP8 PUSH1 0x60 ADD MLOAD PUSH2 0x4B72 JUMP JUMPDEST SWAP3 POP PUSH2 0x40B2 JUMP JUMPDEST DUP5 PUSH1 0x40 ADD MLOAD PUSH1 0x2 SIGNEXTEND DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x2 SIGNEXTEND SLT ISZERO PUSH2 0x4088 JUMPI PUSH1 0x4 SLOAD PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH2 0x3FE4 SWAP1 PUSH2 0x3FC8 PUSH2 0x2B7E JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x60 DUP7 ADD MLOAD PUSH1 0x80 DUP8 ADD MLOAD PUSH1 0x8 SWAP5 SWAP4 SWAP3 SWAP2 DUP8 SWAP2 PUSH2 0x38FC JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFFFF PUSH1 0xC8 SHL NOT AND PUSH1 0x1 PUSH1 0xC8 SHL PUSH2 0xFFFF SWAP4 DUP5 AND MUL OR PUSH2 0xFFFF PUSH1 0xB8 SHL NOT AND PUSH1 0x1 PUSH1 0xB8 SHL SWAP4 SWAP1 SWAP3 AND SWAP3 SWAP1 SWAP3 MUL OR SWAP1 SSTORE DUP2 MLOAD PUSH1 0x40 DUP8 ADD MLOAD PUSH2 0x4034 SWAP2 SWAP1 PUSH2 0x402A SWAP1 PUSH2 0x2CC4 JUMP JUMPDEST DUP9 PUSH1 0x60 ADD MLOAD PUSH2 0x4B72 JUMP JUMPDEST SWAP4 POP PUSH2 0x4052 PUSH2 0x4046 DUP8 PUSH1 0x20 ADD MLOAD PUSH2 0x2CC4 JUMP JUMPDEST DUP4 MLOAD PUSH1 0x60 DUP10 ADD MLOAD PUSH2 0x4BB6 JUMP JUMPDEST SWAP3 POP PUSH2 0x4062 DUP2 DUP8 PUSH1 0x60 ADD MLOAD PUSH2 0x352B JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP PUSH2 0x40B2 JUMP JUMPDEST PUSH2 0x40AF PUSH2 0x4098 DUP7 PUSH1 0x20 ADD MLOAD PUSH2 0x2CC4 JUMP JUMPDEST PUSH2 0x40A5 DUP8 PUSH1 0x40 ADD MLOAD PUSH2 0x2CC4 JUMP JUMPDEST DUP8 PUSH1 0x60 ADD MLOAD PUSH2 0x4BB6 JUMP JUMPDEST SWAP2 POP JUMPDEST POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x40C7 DUP5 DUP5 DUP5 PUSH2 0x322F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 DUP1 PUSH2 0x40D3 JUMPI INVALID JUMPDEST DUP5 DUP7 MULMOD GT ISZERO PUSH2 0x32D8 JUMPI PUSH1 0x0 NOT DUP2 LT PUSH2 0x40EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 SWAP5 SWAP1 SWAP5 SHL PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP1 DUP7 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x2 SWAP4 DUP5 SIGNEXTEND PUSH1 0xE8 SWAP1 DUP2 SHL PUSH1 0x34 DUP8 ADD MSTORE SWAP3 SWAP1 SWAP4 SIGNEXTEND SWAP1 SWAP2 SHL PUSH1 0x37 DUP5 ADD MSTORE DUP1 MLOAD DUP1 DUP5 SUB PUSH1 0x1A ADD DUP2 MSTORE PUSH1 0x3A SWAP1 SWAP4 ADD DUP2 MSTORE DUP3 MLOAD SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 KECCAK256 PUSH1 0x0 SWAP1 DUP2 MSTORE SWAP3 SWAP1 MSTORE SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x0 DUP4 PUSH2 0xFFFF AND GT PUSH2 0x4198 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x49 PUSH1 0xF8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP7 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x41B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x41DA JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP2 POP DUP7 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x41F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x421F JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP8 MLOAD DUP2 LT ISZERO PUSH2 0x42A5 JUMPI PUSH2 0x4250 DUP11 DUP11 DUP11 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x423F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP11 DUP11 DUP11 DUP11 PUSH2 0x32DF JUMP JUMPDEST DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x425C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x426F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP DUP3 PUSH1 0x6 SIGNEXTEND PUSH1 0x6 SIGNEXTEND DUP2 MSTORE POP POP POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x4225 JUMP JUMPDEST POP SWAP8 POP SWAP8 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x2 SIGNEXTEND DUP3 PUSH1 0x2 SIGNEXTEND SLT PUSH2 0x42F2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x544C55 PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH3 0xD89E7 NOT PUSH1 0x2 DUP4 SWAP1 SIGNEXTEND SLT ISZERO PUSH2 0x4335 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x544C4D PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH3 0xD89E8 PUSH1 0x2 DUP3 SWAP1 SIGNEXTEND SGT ISZERO PUSH2 0x4377 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x54554D PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE PUSH4 0xFFFFFFFF SWAP3 DUP4 AND DUP1 DUP3 MSTORE PUSH1 0x0 PUSH1 0x20 DUP4 ADD DUP2 SWAP1 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0x60 SWAP1 SWAP2 ADD DUP2 SWAP1 MSTORE DUP4 SLOAD PUSH4 0xFFFFFFFF NOT AND SWAP1 SWAP2 OR SWAP1 SWAP2 AND PUSH1 0x1 PUSH1 0xF8 SHL OR SWAP1 SWAP2 SSTORE SWAP1 DUP2 SWAP1 JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND PUSH1 0x8 DUP2 SWAP1 SAR SWAP2 PUSH2 0x100 SWAP1 SWAP2 SMOD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0x43E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x80 SHL DUP3 LT PUSH2 0x43FA JUMPI PUSH1 0x80 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH9 0x10000000000000000 DUP3 LT PUSH2 0x4412 JUMPI PUSH1 0x40 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x1 PUSH1 0x20 SHL DUP3 LT PUSH2 0x4425 JUMPI PUSH1 0x20 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH3 0x10000 DUP3 LT PUSH2 0x4437 JUMPI PUSH1 0x10 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH2 0x100 DUP3 LT PUSH2 0x4448 JUMPI PUSH1 0x8 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x10 DUP3 LT PUSH2 0x4458 JUMPI PUSH1 0x4 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x4 DUP3 LT PUSH2 0x4468 JUMPI PUSH1 0x2 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x2 DUP3 LT PUSH2 0x2B42 JUMPI PUSH1 0x1 ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0x4486 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xFF PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 AND ISZERO PUSH2 0x44A1 JUMPI PUSH1 0x7F NOT ADD PUSH2 0x44A9 JUMP JUMPDEST PUSH1 0x80 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP3 AND ISZERO PUSH2 0x44C2 JUMPI PUSH1 0x3F NOT ADD PUSH2 0x44CA JUMP JUMPDEST PUSH1 0x40 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH4 0xFFFFFFFF DUP3 AND ISZERO PUSH2 0x44DF JUMPI PUSH1 0x1F NOT ADD PUSH2 0x44E7 JUMP JUMPDEST PUSH1 0x20 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH2 0xFFFF DUP3 AND ISZERO PUSH2 0x44FA JUMPI PUSH1 0xF NOT ADD PUSH2 0x4502 JUMP JUMPDEST PUSH1 0x10 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0xFF DUP3 AND ISZERO PUSH2 0x4514 JUMPI PUSH1 0x7 NOT ADD PUSH2 0x451C JUMP JUMPDEST PUSH1 0x8 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0xF DUP3 AND ISZERO PUSH2 0x452E JUMPI PUSH1 0x3 NOT ADD PUSH2 0x4536 JUMP JUMPDEST PUSH1 0x4 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0x3 DUP3 AND ISZERO PUSH2 0x4548 JUMPI PUSH1 0x1 NOT ADD PUSH2 0x4550 JUMP JUMPDEST PUSH1 0x2 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0x1 DUP3 AND ISZERO PUSH2 0x2B42 JUMPI PUSH1 0x0 NOT ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x4582 JUMPI SWAP3 SWAP4 SWAP3 JUMPDEST DUP2 PUSH2 0x45AF JUMPI PUSH2 0x45AA DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP7 DUP7 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x60 SHL PUSH2 0x322F JUMP JUMPDEST PUSH2 0x45D2 JUMP JUMPDEST PUSH2 0x45D2 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP7 DUP7 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x60 SHL PUSH2 0x40BA JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x45FD JUMPI SWAP3 SWAP4 SWAP3 JUMPDEST PUSH1 0x1 PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH1 0x60 DUP5 SWAP1 SHL AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP7 SUB DUP2 AND SWAP1 DUP8 AND PUSH2 0x4627 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 PUSH2 0x4657 JUMPI DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x464A DUP4 DUP4 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x322F JUMP JUMPDEST DUP2 PUSH2 0x4651 JUMPI INVALID JUMPDEST DIV PUSH2 0x467D JUMP JUMPDEST PUSH2 0x467D PUSH2 0x466E DUP4 DUP4 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x40BA JUMP JUMPDEST DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4BE5 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0x469F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT PUSH2 0x46B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH2 0x46C7 JUMPI PUSH2 0x45AA DUP6 DUP6 DUP6 PUSH1 0x1 PUSH2 0x4BF0 JUMP JUMPDEST PUSH2 0x45D2 DUP6 DUP6 DUP6 PUSH1 0x1 PUSH2 0x4CD1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0x46EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT PUSH2 0x4701 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH2 0x4713 JUMPI PUSH2 0x45AA DUP6 DUP6 DUP6 PUSH1 0x0 PUSH2 0x4CD1 JUMP JUMPDEST PUSH2 0x45D2 DUP6 DUP6 DUP6 PUSH1 0x0 PUSH2 0x4BF0 JUMP JUMPDEST PUSH2 0x4728 PUSH2 0x54F1 JUMP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x0 ADD MLOAD DUP6 SUB SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 DUP7 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH4 0xFFFFFFFF AND DUP7 PUSH1 0x2 SIGNEXTEND MUL DUP9 PUSH1 0x20 ADD MLOAD ADD PUSH1 0x6 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT PUSH2 0x477C JUMPI PUSH1 0x1 PUSH2 0x477E JUMP JUMPDEST DUP5 JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH4 0xFFFFFFFF PUSH1 0x80 SHL PUSH1 0x80 DUP6 SWAP1 SHL AND DUP2 PUSH2 0x479C JUMPI INVALID JUMPDEST DIV DUP9 PUSH1 0x40 ADD MLOAD ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 ISZERO ISZERO DUP2 MSTORE POP SWAP2 POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x47CB PUSH2 0x54F1 JUMP JUMPDEST PUSH2 0x47D3 PUSH2 0x54F1 JUMP JUMPDEST DUP9 DUP6 PUSH2 0xFFFF AND PUSH2 0xFFFF DUP2 LT PUSH2 0x47E4 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE SWAP2 SWAP1 SWAP3 ADD SLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP1 DUP4 MSTORE PUSH1 0x1 PUSH1 0x20 SHL DUP3 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x58 SHL DUP3 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP4 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP3 ADD MSTORE SWAP3 POP PUSH2 0x4848 SWAP1 DUP10 SWAP1 DUP10 PUSH2 0x4DB4 JUMP JUMPDEST ISZERO PUSH2 0x4880 JUMPI DUP7 PUSH4 0xFFFFFFFF AND DUP3 PUSH1 0x0 ADD MLOAD PUSH4 0xFFFFFFFF AND EQ ISZERO PUSH2 0x486A JUMPI PUSH2 0x3465 JUMP JUMPDEST DUP2 PUSH2 0x4877 DUP4 DUP10 DUP10 DUP9 PUSH2 0x4720 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x3465 JUMP JUMPDEST DUP9 DUP4 PUSH2 0xFFFF AND DUP7 PUSH1 0x1 ADD PUSH2 0xFFFF AND DUP2 PUSH2 0x4895 JUMPI INVALID JUMPDEST MOD PUSH2 0xFFFF AND PUSH2 0xFFFF DUP2 LT PUSH2 0x48A5 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE SWAP3 SWAP1 SWAP2 ADD SLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0x20 SHL DUP2 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x1 PUSH1 0x58 SHL DUP3 DIV AND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xFF PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP2 DIV AND ISZERO ISZERO PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE SWAP1 SWAP3 POP PUSH2 0x495A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE DUP11 SLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0x20 SHL DUP2 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x58 SHL DUP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP2 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP3 ADD MSTORE SWAP2 POP JUMPDEST PUSH2 0x4969 DUP9 DUP4 PUSH1 0x0 ADD MLOAD DUP10 PUSH2 0x4DB4 JUMP JUMPDEST PUSH2 0x49A0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x13D311 PUSH1 0xEA SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x49AD DUP10 DUP10 DUP10 DUP9 DUP8 PUSH2 0x4E75 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP8 POP SWAP8 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x49CC PUSH1 0x7 DUP8 DUP8 DUP8 PUSH2 0x40F4 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x2 SLOAD SWAP2 SWAP3 POP SWAP1 PUSH1 0x0 DUP1 PUSH1 0xF DUP8 SWAP1 SIGNEXTEND ISZERO PUSH2 0x4B12 JUMPI PUSH1 0x0 PUSH2 0x49ED PUSH2 0x2B7E JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x4 SLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 DUP3 SWAP2 PUSH2 0x4A37 SWAP2 PUSH1 0x8 SWAP2 DUP7 SWAP2 DUP6 SWAP2 PUSH1 0x1 PUSH1 0xA0 SHL DUP2 DIV PUSH1 0x2 SIGNEXTEND SWAP2 PUSH2 0xFFFF PUSH1 0x1 PUSH1 0xB8 SHL DUP4 DIV DUP2 AND SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH1 0x1 PUSH1 0xC8 SHL SWAP1 DIV AND PUSH2 0x32DF JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x4A71 PUSH1 0x5 DUP14 DUP12 DUP14 DUP12 DUP12 DUP8 DUP10 DUP12 PUSH1 0x0 PUSH32 0x0 PUSH2 0x5013 JUMP JUMPDEST SWAP5 POP PUSH2 0x4AA8 PUSH1 0x5 DUP13 DUP12 DUP14 DUP12 DUP12 DUP8 DUP10 DUP12 PUSH1 0x1 PUSH32 0x0 PUSH2 0x5013 JUMP JUMPDEST SWAP4 POP DUP5 ISZERO PUSH2 0x4ADC JUMPI PUSH2 0x4ADC PUSH1 0x6 DUP14 PUSH32 0x0 PUSH2 0x51CC JUMP JUMPDEST DUP4 ISZERO PUSH2 0x4B0E JUMPI PUSH2 0x4B0E PUSH1 0x6 DUP13 PUSH32 0x0 PUSH2 0x51CC JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x4B24 PUSH1 0x5 DUP13 DUP13 DUP12 DUP11 DUP11 PUSH2 0x5232 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x4B35 DUP8 DUP11 DUP5 DUP5 PUSH2 0x52DE JUMP JUMPDEST PUSH1 0x0 DUP10 PUSH1 0xF SIGNEXTEND SLT ISZERO PUSH2 0x4B63 JUMPI DUP4 ISZERO PUSH2 0x4B52 JUMPI PUSH2 0x4B52 PUSH1 0x5 DUP13 PUSH2 0x5473 JUMP JUMPDEST DUP3 ISZERO PUSH2 0x4B63 JUMPI PUSH2 0x4B63 PUSH1 0x5 DUP12 PUSH2 0x5473 JUMP JUMPDEST POP POP POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0xF SIGNEXTEND SLT PUSH2 0x4B98 JUMPI PUSH2 0x4B93 PUSH2 0x4B8E DUP6 DUP6 DUP6 PUSH1 0x1 PUSH2 0x45DD JUMP JUMPDEST PUSH2 0x31E7 JUMP JUMPDEST PUSH2 0x45D5 JUMP JUMPDEST PUSH2 0x4BAB PUSH2 0x4B8E DUP6 DUP6 DUP6 PUSH1 0x0 SUB PUSH1 0x0 PUSH2 0x45DD JUMP JUMPDEST PUSH1 0x0 SUB SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0xF SIGNEXTEND SLT PUSH2 0x4BD2 JUMPI PUSH2 0x4B93 PUSH2 0x4B8E DUP6 DUP6 DUP6 PUSH1 0x1 PUSH2 0x4562 JUMP JUMPDEST PUSH2 0x4BAB PUSH2 0x4B8E DUP6 DUP6 DUP6 PUSH1 0x0 SUB PUSH1 0x0 PUSH2 0x4562 JUMP JUMPDEST DUP1 DUP3 DIV SWAP2 MOD ISZERO ISZERO ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO PUSH2 0x4C63 JUMPI PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 GT ISZERO PUSH2 0x4C26 JUMPI PUSH2 0x4C21 DUP5 PUSH1 0x1 PUSH1 0x60 SHL DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x322F JUMP JUMPDEST PUSH2 0x4C3E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP6 AND PUSH1 0x60 DUP6 SWAP1 SHL DUP2 PUSH2 0x4C3C JUMPI INVALID JUMPDEST DIV JUMPDEST SWAP1 POP PUSH2 0x4C5B PUSH2 0x4C56 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP4 PUSH2 0x3D1E JUMP JUMPDEST PUSH2 0x549F JUMP JUMPDEST SWAP2 POP POP PUSH2 0x45D5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 GT ISZERO PUSH2 0x4C91 JUMPI PUSH2 0x4C8C DUP5 PUSH1 0x1 PUSH1 0x60 SHL DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x40BA JUMP JUMPDEST PUSH2 0x4CA8 JUMP JUMPDEST PUSH2 0x4CA8 PUSH1 0x60 DUP6 SWAP1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP8 AND PUSH2 0x4BE5 JUMP JUMPDEST SWAP1 POP DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0x4CBF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SUB SWAP1 POP PUSH2 0x45D5 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x4CDF JUMPI POP DUP4 PUSH2 0x45D5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH1 0x60 DUP6 SWAP1 SHL AND DUP3 ISZERO PUSH2 0x4D6D JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 DUP2 MUL SWAP1 DUP6 DUP3 DUP2 PUSH2 0x4D0D JUMPI INVALID JUMPDEST DIV EQ ISZERO PUSH2 0x4D3E JUMPI DUP2 DUP2 ADD DUP3 DUP2 LT PUSH2 0x4D3C JUMPI PUSH2 0x4D32 DUP4 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH2 0x40BA JUMP JUMPDEST SWAP4 POP POP POP POP PUSH2 0x45D5 JUMP JUMPDEST POP JUMPDEST PUSH2 0x4D64 DUP3 PUSH2 0x4D5F DUP8 DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 DUP2 PUSH2 0x4D58 JUMPI INVALID JUMPDEST DIV SWAP1 PUSH2 0x3D1E JUMP JUMPDEST PUSH2 0x4BE5 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x45D5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 DUP2 MUL SWAP1 DUP6 DUP3 DUP2 PUSH2 0x4D84 JUMPI INVALID JUMPDEST DIV EQ DUP1 ISZERO PUSH2 0x4D91 JUMPI POP DUP1 DUP3 GT JUMPDEST PUSH2 0x4D9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 DUP3 SUB PUSH2 0x4D32 PUSH2 0x4C56 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP5 PUSH2 0x40BA JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH4 0xFFFFFFFF AND DUP4 PUSH4 0xFFFFFFFF AND GT ISZERO DUP1 ISZERO PUSH2 0x4DDE JUMPI POP DUP4 PUSH4 0xFFFFFFFF AND DUP3 PUSH4 0xFFFFFFFF AND GT ISZERO JUMPDEST ISZERO PUSH2 0x4DFA JUMPI DUP2 PUSH4 0xFFFFFFFF AND DUP4 PUSH4 0xFFFFFFFF AND GT ISZERO SWAP1 POP PUSH2 0x32D8 JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH4 0xFFFFFFFF AND DUP5 PUSH4 0xFFFFFFFF AND GT PUSH2 0x4E21 JUMPI DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0x1 PUSH1 0x20 SHL ADD PUSH2 0x4E29 JUMP JUMPDEST DUP4 PUSH4 0xFFFFFFFF AND JUMPDEST PUSH5 0xFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 DUP6 PUSH4 0xFFFFFFFF AND DUP5 PUSH4 0xFFFFFFFF AND GT PUSH2 0x4E59 JUMPI DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0x1 PUSH1 0x20 SHL ADD PUSH2 0x4E61 JUMP JUMPDEST DUP4 PUSH4 0xFFFFFFFF AND JUMPDEST PUSH5 0xFFFFFFFFFF AND SWAP1 SWAP2 GT ISZERO SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x4E7D PUSH2 0x54F1 JUMP JUMPDEST PUSH2 0x4E85 PUSH2 0x54F1 JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH2 0xFFFF AND DUP6 PUSH1 0x1 ADD PUSH2 0xFFFF AND DUP2 PUSH2 0x4E9B JUMPI INVALID JUMPDEST MOD PUSH2 0xFFFF AND SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP6 PUSH2 0xFFFF AND DUP4 ADD SUB SWAP1 POP PUSH1 0x0 JUMPDEST POP PUSH1 0x2 DUP2 DUP4 ADD DIV DUP10 PUSH2 0xFFFF DUP8 AND DUP3 DUP2 PUSH2 0x4EC8 JUMPI INVALID JUMPDEST MOD PUSH2 0xFFFF DUP2 LT PUSH2 0x4ED4 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE SWAP3 SWAP1 SWAP2 ADD SLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0x20 SHL DUP2 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x1 PUSH1 0x58 SHL DUP3 DIV AND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xFF PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP2 DIV AND ISZERO ISZERO PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE SWAP1 SWAP6 POP PUSH2 0x4F3E JUMPI DUP1 PUSH1 0x1 ADD SWAP3 POP PUSH2 0x4EB3 JUMP JUMPDEST DUP10 DUP7 PUSH2 0xFFFF AND DUP3 PUSH1 0x1 ADD DUP2 PUSH2 0x4F4F JUMPI INVALID JUMPDEST MOD PUSH2 0xFFFF DUP2 LT PUSH2 0x4F5B JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE SWAP3 SWAP1 SWAP2 ADD SLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0x20 SHL DUP2 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x1 PUSH1 0x58 SHL DUP3 DIV AND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xFF PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP2 DIV AND ISZERO ISZERO PUSH1 0x60 DUP3 ADD MSTORE DUP6 MLOAD SWAP1 SWAP5 POP PUSH1 0x0 SWAP1 PUSH2 0x4FC5 SWAP1 DUP12 SWAP1 DUP12 PUSH2 0x4DB4 JUMP JUMPDEST SWAP1 POP DUP1 DUP1 ISZERO PUSH2 0x4FDE JUMPI POP PUSH2 0x4FDE DUP11 DUP11 DUP8 PUSH1 0x0 ADD MLOAD PUSH2 0x4DB4 JUMP JUMPDEST ISZERO PUSH2 0x4FE9 JUMPI POP PUSH2 0x5006 JUMP JUMPDEST DUP1 PUSH2 0x4FF9 JUMPI PUSH1 0x1 DUP3 SUB SWAP3 POP PUSH2 0x5000 JUMP JUMPDEST DUP2 PUSH1 0x1 ADD SWAP4 POP JUMPDEST POP PUSH2 0x4EB3 JUMP JUMPDEST POP POP POP SWAP6 POP SWAP6 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP11 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP13 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP3 PUSH2 0x503E DUP3 DUP14 PUSH2 0x352B JUMP JUMPDEST SWAP1 POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT ISZERO PUSH2 0x508C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4C4F PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 DUP2 AND ISZERO SWAP1 DUP3 AND ISZERO DUP2 EQ ISZERO SWAP5 POP ISZERO PUSH2 0x5131 JUMPI DUP13 PUSH1 0x2 SIGNEXTEND DUP15 PUSH1 0x2 SIGNEXTEND SGT PUSH2 0x5119 JUMPI PUSH1 0x1 DUP4 ADD DUP12 SWAP1 SSTORE PUSH1 0x2 DUP4 ADD DUP11 SWAP1 SSTORE PUSH1 0x3 DUP4 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x38 SHL PUSH1 0x1 PUSH1 0xD8 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x38 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND MUL OR PUSH7 0xFFFFFFFFFFFFFF NOT AND PUSH7 0xFFFFFFFFFFFFFF PUSH1 0x6 DUP12 SWAP1 SIGNEXTEND AND OR PUSH4 0xFFFFFFFF PUSH1 0xD8 SHL NOT AND PUSH1 0x1 PUSH1 0xD8 SHL PUSH4 0xFFFFFFFF DUP11 AND MUL OR SWAP1 SSTORE JUMPDEST PUSH1 0x3 DUP4 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB AND PUSH1 0x1 PUSH1 0xF8 SHL OR SWAP1 SSTORE JUMPDEST DUP3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 AND OR DUP4 SSTORE DUP6 PUSH2 0x517A JUMPI DUP3 SLOAD PUSH2 0x5175 SWAP1 PUSH2 0x5170 SWAP1 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0xF SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 DUP16 SWAP1 SIGNEXTEND PUSH2 0x3219 JUMP JUMPDEST PUSH2 0x3E69 JUMP JUMPDEST PUSH2 0x519B JUMP JUMPDEST DUP3 SLOAD PUSH2 0x519B SWAP1 PUSH2 0x5170 SWAP1 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0xF SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 DUP16 SWAP1 SIGNEXTEND PUSH2 0x31FD JUMP JUMPDEST DUP4 SLOAD PUSH1 0xF SWAP2 SWAP1 SWAP2 SIGNEXTEND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 DUP2 AND PUSH1 0x1 PUSH1 0x80 SHL MUL SWAP2 AND OR SWAP1 SWAP3 SSTORE POP SWAP1 SWAP13 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x2 SIGNEXTEND DUP3 PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x51DB JUMPI INVALID JUMPDEST SMOD PUSH1 0x2 SIGNEXTEND ISZERO PUSH2 0x51E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x5204 DUP4 PUSH1 0x2 SIGNEXTEND DUP6 PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x51FE JUMPI INVALID JUMPDEST SDIV PUSH2 0x43C7 JUMP JUMPDEST PUSH1 0x1 SWAP2 DUP3 SIGNEXTEND DUP3 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP8 SWAP1 SWAP8 MSTORE PUSH1 0x40 SWAP1 SWAP7 KECCAK256 DUP1 SLOAD PUSH1 0xFF SWAP1 SWAP8 AND SWAP2 SWAP1 SWAP2 SHL SWAP1 SWAP6 XOR SWAP1 SWAP5 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP6 DUP2 SIGNEXTEND DUP1 DUP3 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP10 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP9 DUP6 SIGNEXTEND DUP6 SIGNEXTEND DUP4 MSTORE SWAP1 DUP3 KECCAK256 SWAP2 SWAP4 DUP5 SWAP4 SWAP2 SWAP3 SWAP2 DUP5 SWAP2 DUP3 SWAP2 SWAP1 DUP11 SWAP1 SIGNEXTEND SLT PUSH2 0x5278 JUMPI POP POP PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH2 0x528B JUMP JUMPDEST DUP4 PUSH1 0x1 ADD SLOAD DUP9 SUB SWAP2 POP DUP4 PUSH1 0x2 ADD SLOAD DUP8 SUB SWAP1 POP JUMPDEST PUSH1 0x0 DUP1 DUP12 PUSH1 0x2 SIGNEXTEND DUP12 PUSH1 0x2 SIGNEXTEND SLT ISZERO PUSH2 0x52AD JUMPI POP POP PUSH1 0x1 DUP4 ADD SLOAD PUSH1 0x2 DUP5 ADD SLOAD PUSH2 0x52C0 JUMP JUMPDEST DUP5 PUSH1 0x1 ADD SLOAD DUP11 SUB SWAP2 POP DUP5 PUSH1 0x2 ADD SLOAD DUP10 SUB SWAP1 POP JUMPDEST SWAP3 SWAP1 SWAP9 SUB SWAP8 SWAP1 SWAP8 SUB SWAP12 SWAP7 SWAP1 SWAP6 SUB SWAP5 SWAP1 SWAP5 SUB SWAP9 POP SWAP4 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE DUP6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x1 DUP8 ADD SLOAD PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x2 DUP8 ADD SLOAD SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x3 DUP7 ADD SLOAD DUP1 DUP4 AND PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV SWAP1 SWAP2 AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0xF DUP6 SWAP1 SIGNEXTEND PUSH2 0x537D JUMPI DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x5375 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4E5 PUSH1 0xF4 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH2 0x538C JUMP JUMPDEST DUP2 MLOAD PUSH2 0x5389 SWAP1 DUP7 PUSH2 0x352B JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x0 PUSH2 0x53B0 DUP4 PUSH1 0x20 ADD MLOAD DUP7 SUB DUP5 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0x322F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x53D6 DUP5 PUSH1 0x40 ADD MLOAD DUP7 SUB DUP6 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0x322F JUMP JUMPDEST SWAP1 POP DUP7 PUSH1 0xF SIGNEXTEND PUSH1 0x0 EQ PUSH2 0x53FD JUMPI DUP8 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP5 AND OR DUP9 SSTORE JUMPDEST PUSH1 0x1 DUP9 ADD DUP7 SWAP1 SSTORE PUSH1 0x2 DUP9 ADD DUP6 SWAP1 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 AND ISZERO ISZERO DUP1 PUSH2 0x542B JUMPI POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT JUMPDEST ISZERO PUSH2 0x5469 JUMPI PUSH1 0x3 DUP9 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP2 DUP3 AND DUP6 ADD DUP3 AND OR DUP1 DUP3 AND PUSH1 0x1 PUSH1 0x80 SHL SWAP2 DUP3 SWAP1 DIV DUP4 AND DUP6 ADD SWAP1 SWAP3 AND MUL OR SWAP1 SSTORE JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 DUP3 KECCAK256 DUP3 DUP2 SSTORE PUSH1 0x1 DUP2 ADD DUP4 SWAP1 SSTORE SWAP1 DUP2 ADD DUP3 SWAP1 SSTORE PUSH1 0x3 ADD SSTORE JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x2B42 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xE0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xA0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xC0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC 0x1F SWAP4 DUP8 JUMPDEST 0xF6 SWAP12 0xD8 0x23 PUSH13 0xED6FA61DB810CF06B5C548147 EXP 0xC7 0xA6 BALANCE 0xEB 0x4E NUMBER 0xC8 SLT PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ", - "sourceMap": "932:34568:5:-:0;;;4335:273;;;;;;;;;-1:-1:-1;591:4:3;572:24;;;;4434:47:5;;;-1:-1:-1;;;4434:47:5;;;;4359:18;;4457:10;;4434:45;;:47;;;;;;;;;;;;;;;4457:10;4434:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4434:47:5;;;;;;;;;;;;;;;;;;;;;4387:94;;;;-1:-1:-1;;;;;;4387:94:5;;;;;;-1:-1:-1;;4387:94:5;;;;;;;;;;;;;;;;;4434:47;4387:94;4491:26;;;;;;;;;;;4434:47;-1:-1:-1;4550:51:5;;4434:47;;4550:37;;;;;:51;;:::i;:::-;4528:73;;-1:-1:-1;;4528:73:5;;;-1:-1:-1;932:34568:5;;2195:364:31;2279:7;;2350:11;2315:31;;;;-1:-1:-1;;2315:31:31;;;;;;2314:47;;-1:-1:-1;2371:13:31;2423:11;2388:31;;;;637:9:33;2388:31:31;;;;;;2387:47;2371:63;;2444:15;2491:11;2469:33;;2480:7;2470;:17;2469:33;;;;;;;;2506:1;2462:45;;-1:-1:-1;2524:28:31;;;-1:-1:-1;2524:28:31;;;;;;;2195:364;-1:-1:-1;;;;;2195:364:31:o;932:34568:5:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;" - }, - "deployedBytecode": { - "generatedSources": [], - "immutableReferences": { - "702": [ - { - "length": 32, - "start": 11090 - } - ], - "1077": [ - { - "length": 32, - "start": 8248 - }, - { - "length": 32, - "start": 8735 - }, - { - "length": 32, - "start": 10355 - } - ], - "1081": [ - { - "length": 32, - "start": 2218 - }, - { - "length": 32, - "start": 4787 - }, - { - "length": 32, - "start": 6673 - }, - { - "length": 32, - "start": 7755 - }, - { - "length": 32, - "start": 9056 - }, - { - "length": 32, - "start": 15411 - } - ], - "1085": [ - { - "length": 32, - "start": 4485 - }, - { - "length": 32, - "start": 6722 - }, - { - "length": 32, - "start": 7857 - }, - { - "length": 32, - "start": 9190 - }, - { - "length": 32, - "start": 10427 - }, - { - "length": 32, - "start": 15740 - } - ], - "1089": [ - { - "length": 32, - "start": 3271 - }, - { - "length": 32, - "start": 6536 - }, - { - "length": 32, - "start": 6591 - }, - { - "length": 32, - "start": 10463 - } - ], - "1093": [ - { - "length": 32, - "start": 3032 - }, - { - "length": 32, - "start": 10391 - }, - { - "length": 32, - "start": 19128 - }, - { - "length": 32, - "start": 19178 - } - ], - "1097": [ - { - "length": 32, - "start": 8107 - }, - { - "length": 32, - "start": 19021 - }, - { - "length": 32, - "start": 19076 - } - ] - }, - "linkReferences": {}, - "object": "608060405234801561001057600080fd5b506004361061018e5760003560e01c806370cf754a116100de578063c45a015511610097578063ddca3f4311610071578063ddca3f43146107d8578063f3058399146107f8578063f30dba9314610800578063f637731d146108825761018e565b8063c45a0155146107a9578063d0c93a7c146107b1578063d21220a7146107d05761018e565b806370cf754a146105a05780638206a4d1146105a857806385b66729146105d0578063883bdbfd1461060d578063a34123a714610714578063a38807f21461074e5761018e565b80633850c7bd1161014b578063490e6cbc11610125578063490e6cbc1461044c5780634f1eb3d8146104d6578063514ea4bf146105275780635339c296146105805761018e565b80633850c7bd146103395780633c8a7d8d1461039257806346141319146104325761018e565b80630dfe168114610193578063128acb08146101b75780631a686502146102645780631ad8b03b14610288578063252c09d7146102bf57806332148f6714610316575b600080fd5b61019b6108a8565b604080516001600160a01b039092168252519081900360200190f35b61024b600480360360a08110156101cd57600080fd5b6001600160a01b0382358116926020810135151592604082013592606083013516919081019060a081016080820135600160201b81111561020d57600080fd5b82018360208201111561021f57600080fd5b803590602001918460018302840111600160201b8311171561024057600080fd5b5090925090506108cc565b6040805192835260208301919091528051918290030190f35b61026c61146b565b604080516001600160801b039092168252519081900360200190f35b61029061147a565b60405180836001600160801b03168152602001826001600160801b031681526020019250505060405180910390f35b6102dc600480360360208110156102d557600080fd5b5035611494565b6040805163ffffffff909516855260069390930b60208501526001600160a01b039091168383015215156060830152519081900360800190f35b6103376004803603602081101561032c57600080fd5b503561ffff166114d9565b005b6103416115d3565b604080516001600160a01b03909816885260029690960b602088015261ffff9485168787015292841660608701529216608085015260ff90911660a0840152151560c0830152519081900360e00190f35b61024b600480360360a08110156103a857600080fd5b6001600160a01b03823516916020810135600290810b92604083013590910b916001600160801b036060820135169181019060a081016080820135600160201b8111156103f457600080fd5b82018360208201111561040657600080fd5b803590602001918460018302840111600160201b8311171561042757600080fd5b509092509050611623565b61043a6118df565b60408051918252519081900360200190f35b6103376004803603608081101561046257600080fd5b6001600160a01b038235169160208101359160408201359190810190608081016060820135600160201b81111561049857600080fd5b8201836020820111156104aa57600080fd5b803590602001918460018302840111600160201b831117156104cb57600080fd5b5090925090506118e5565b610290600480360360a08110156104ec57600080fd5b506001600160a01b03813516906020810135600290810b91604081013590910b906001600160801b0360608201358116916080013516611d40565b6105446004803603602081101561053d57600080fd5b5035611f5a565b604080516001600160801b0396871681526020810195909552848101939093529084166060840152909216608082015290519081900360a00190f35b61043a6004803603602081101561059657600080fd5b503560010b611f97565b61026c611fa9565b610337600480360360408110156105be57600080fd5b5060ff81358116916020013516611fcd565b610290600480360360608110156105e657600080fd5b506001600160a01b03813516906001600160801b03602082013581169160400135166121b1565b61067b6004803603602081101561062357600080fd5b810190602081018135600160201b81111561063d57600080fd5b82018360208201111561064f57600080fd5b803590602001918460208302840111600160201b8311171561067057600080fd5b50909250905061247e565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156106bf5781810151838201526020016106a7565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156106fe5781810151838201526020016106e6565b5050505090500194505050505060405180910390f35b61024b6004803603606081101561072a57600080fd5b508035600290810b91602081013590910b90604001356001600160801b031661250b565b6107786004803603604081101561076457600080fd5b508035600290810b9160200135900b612682565b6040805160069490940b84526001600160a01b03909216602084015263ffffffff1682820152519081900360600190f35b61019b612871565b6107b9612895565b6040805160029290920b8252519081900360200190f35b61019b6128b9565b6107e06128dd565b6040805162ffffff9092168252519081900360200190f35b61043a612901565b6108206004803603602081101561081657600080fd5b503560020b612907565b604080516001600160801b039099168952600f9790970b602089015287870195909552606087019390935260069190910b60808601526001600160a01b031660a085015263ffffffff1660c0840152151560e083015251908190036101000190f35b6103376004803603602081101561089857600080fd5b50356001600160a01b0316612971565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806108d7612b47565b8561090e576040805162461bcd60e51b8152602060048201526002602482015261415360f01b604482015290519081900360640190fd5b6040805160e0810182526000546001600160a01b0381168252600160a01b8104600290810b810b900b602083015261ffff600160b81b8204811693830193909352600160c81b810483166060830152600160d81b8104909216608082015260ff600160e81b8304811660a0830152600160f01b909204909116151560c082018190526109c7576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b87610a125780600001516001600160a01b0316866001600160a01b0316118015610a0d575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038716105b610a44565b80600001516001600160a01b0316866001600160a01b0316108015610a4457506401000276a36001600160a01b038716115b610a7b576040805162461bcd60e51b815260206004820152600360248201526214d41360ea1b604482015290519081900360640190fd5b6000805460ff60f01b191681556040805160c08101909152808a610aaa5760048460a0015160ff16901c610abd565b60108460a0015160ff1681610abb57fe5b065b60ff1681526004546001600160801b03166020820152604001610ade612b7e565b63ffffffff168152602001600060060b815260200160006001600160a01b031681526020016000151581525090506000808913905060006040518060e001604052808b81526020016000815260200185600001516001600160a01b03168152602001856020015160020b81526020018c610b5a57600254610b5e565b6001545b815260200160006001600160801b0316815260200184602001516001600160801b031681525090505b805115801590610bad5750886001600160a01b031681604001516001600160a01b031614155b15610f7757610bba6154b5565b60408201516001600160a01b031681526060820151610bfd906006907f00000000000000000000000000000000000000000000000000000000000000008f612b82565b15156040830152600290810b810b60208301819052620d89e719910b1215610c2e57620d89e7196020820152610c4d565b6020810151620d89e860029190910b1315610c4d57620d89e860208201525b610c5a8160200151612cc4565b6001600160a01b031660608201526040820151610ceb908d610c94578b6001600160a01b031683606001516001600160a01b031611610cae565b8b6001600160a01b031683606001516001600160a01b0316105b610cbc578260600151610cbe565b8b5b60c085015185517f0000000000000000000000000000000000000000000000000000000000000000612ff5565b60c085015260a084015260808301526001600160a01b031660408301528215610d4d57610d218160c001518260800151016131e7565b825103825260a0810151610d4390610d38906131e7565b6020840151906131fd565b6020830152610d88565b610d5a8160a001516131e7565b825101825260c08101516080820151610d8291610d7791016131e7565b602084015190613219565b60208301525b835160ff1615610dce576000846000015160ff168260c0015181610da857fe5b60c0840180519290910491829003905260a0840180519091016001600160801b03169052505b60c08201516001600160801b031615610e0d57610e018160c00151600160801b8460c001516001600160801b031661322f565b60808301805190910190525b80606001516001600160a01b031682604001516001600160a01b03161415610f3657806040015115610f0d578360a00151610e9757610e75846040015160008760200151886040015188602001518a6060015160086132df909695949392919063ffffffff16565b6001600160a01b03166080860152600690810b900b6060850152600160a08501525b6000610ee382602001518e610eae57600154610eb4565b84608001515b8f610ec3578560800151610ec7565b6002545b608089015160608a015160408b01516005959493929190613471565b90508c15610eef576000035b610efd8360c001518261352b565b6001600160801b031660c0840152505b8b610f1c578060200151610f25565b60018160200151035b600290810b900b6060830152610f71565b80600001516001600160a01b031682604001516001600160a01b031614610f7157610f6482604001516135e1565b600290810b900b60608301525b50610b87565b836020015160020b816060015160020b1461104557600080610fc586604001518660400151886020015188602001518a606001518b6080015160086138fc909695949392919063ffffffff16565b604085015160608601516000805461ffff60c81b1916600160c81b61ffff958616021761ffff60b81b1916600160b81b95909416949094029290921762ffffff60a01b1916600160a01b62ffffff60029490940b9390931692909202919091176001600160a01b0319166001600160a01b039091161790555061106a9050565b6040810151600080546001600160a01b0319166001600160a01b039092169190911790555b8060c001516001600160801b031683602001516001600160801b0316146110b05760c0810151600480546001600160801b0319166001600160801b039092169190911790555b8a1561110057608081015160015560a08101516001600160801b0316156110fb5760a0810151600380546001600160801b031981166001600160801b03918216909301169190911790555b611146565b608081015160025560a08101516001600160801b0316156111465760a0810151600380546001600160801b03808216600160801b92839004821690940116029190911790555b8115158b15151461115f57602081015181518b0361116c565b80600001518a0381602001515b90965094508a156112a55760008512156111ae576111ae7f00000000000000000000000000000000000000000000000000000000000000008d87600003613a97565b60006111b8613be5565b9050336001600160a01b031663fa461e3388888c8c6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561123c57600080fd5b505af1158015611250573d6000803e3d6000fd5b5050505061125c613be5565b6112668289613d1e565b111561129f576040805162461bcd60e51b815260206004820152600360248201526249494160e81b604482015290519081900360640190fd5b506113cf565b60008612156112dc576112dc7f00000000000000000000000000000000000000000000000000000000000000008d88600003613a97565b60006112e6613d2e565b9050336001600160a01b031663fa461e3388888c8c6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561136a57600080fd5b505af115801561137e573d6000803e3d6000fd5b5050505061138a613d2e565b6113948288613d1e565b11156113cd576040805162461bcd60e51b815260206004820152600360248201526249494160e81b604482015290519081900360640190fd5b505b60408082015160c083015160608085015184518b8152602081018b90526001600160a01b03948516818701526001600160801b039093169183019190915260020b60808201529151908e169133917fc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca679181900360a00190a350506000805460ff60f01b1916600160f01b17905550919890975095505050505050565b6004546001600160801b031681565b6003546001600160801b0380821691600160801b90041682565b60088161ffff81106114a557600080fd5b015463ffffffff81169150600160201b810460060b90600160581b81046001600160a01b031690600160f81b900460ff1684565b600054600160f01b900460ff1661151d576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b19169055611532612b47565b60008054600160d81b900461ffff169061154e60088385613dc6565b6000805461ffff808416600160d81b810261ffff60d81b19909316929092179092559192508316146115bb576040805161ffff80851682528316602082015281517fac49e518f90a358f652e4400164f05a5d8f7e35e7747279bc3a93dbf584e125a929181900390910190a15b50506000805460ff60f01b1916600160f01b17905550565b6000546001600160a01b03811690600160a01b810460020b9061ffff600160b81b8204811691600160c81b8104821691600160d81b8204169060ff600160e81b8204811691600160f01b90041687565b600080548190600160f01b900460ff1661166a576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b191690556001600160801b03851661168a57600080fd5b6000806116d860405180608001604052808c6001600160a01b031681526020018b60020b81526020018a60020b81526020016116ce8a6001600160801b0316613e69565b600f0b9052613e7a565b925092505081935080925060008060008611156116fa576116f7613be5565b91505b841561170b57611708613d2e565b90505b336001600160a01b031663d348799787878b8b6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561178d57600080fd5b505af11580156117a1573d6000803e3d6000fd5b5050505060008611156117f8576117b6613be5565b6117c08388613d1e565b11156117f8576040805162461bcd60e51b815260206004820152600260248201526104d360f41b604482015290519081900360640190fd5b841561184857611806613d2e565b6118108287613d1e565b1115611848576040805162461bcd60e51b81526020600482015260026024820152614d3160f01b604482015290519081900360640190fd5b8960020b8b60020b8d6001600160a01b03167f7a53080ba414158be7ec69b987b5fb7d07dee101fe85488f0853ae16239d0bde338d8b8b60405180856001600160a01b03168152602001846001600160801b0316815260200183815260200182815260200194505050505060405180910390a450506000805460ff60f01b1916600160f01b17905550919890975095505050505050565b60025481565b600054600160f01b900460ff16611929576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b1916905561193e612b47565b6004546001600160801b031680611980576040805162461bcd60e51b81526020600482015260016024820152601360fa1b604482015290519081900360640190fd5b60006119b5867f000000000000000000000000000000000000000000000000000000000000000062ffffff16620f42406140ba565b905060006119ec867f000000000000000000000000000000000000000000000000000000000000000062ffffff16620f42406140ba565b905060006119f8613be5565b90506000611a04613d2e565b90508815611a3757611a377f00000000000000000000000000000000000000000000000000000000000000008b8b613a97565b8715611a6857611a687f00000000000000000000000000000000000000000000000000000000000000008b8a613a97565b336001600160a01b031663e9cbafb085858a8a6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015611aea57600080fd5b505af1158015611afe573d6000803e3d6000fd5b505050506000611b0c613be5565b90506000611b18613d2e565b905081611b258588613d1e565b1115611b5d576040805162461bcd60e51b8152602060048201526002602482015261046360f41b604482015290519081900360640190fd5b80611b688487613d1e565b1115611ba0576040805162461bcd60e51b8152602060048201526002602482015261463160f01b604482015290519081900360640190fd5b8382038382038115611c2f5760008054600160e81b9004600f16908115611bd3578160ff168481611bcd57fe5b04611bd6565b60005b90506001600160801b03811615611c0957600380546001600160801b038082168401166001600160801b03199091161790555b611c23818503600160801b8d6001600160801b031661322f565b60018054909101905550505b8015611cba5760008054600160e81b900460041c600f16908115611c5f578160ff168381611c5957fe5b04611c62565b60005b90506001600160801b03811615611c9457600380546001600160801b03600160801b8083048216850182160291161790555b611cae818403600160801b8d6001600160801b031661322f565b60028054909101905550505b8d6001600160a01b0316336001600160a01b03167fbdbdb71d7860376ba52b25a5028beea23581364a40522f6bcfb86bb1f2dca6338f8f86866040518085815260200184815260200183815260200182815260200194505050505060405180910390a350506000805460ff60f01b1916600160f01b179055505050505050505050505050565b600080548190600160f01b900460ff16611d87576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b19168155611da160073389896140f4565b60038101549091506001600160801b0390811690861611611dc25784611dd1565b60038101546001600160801b03165b60038201549093506001600160801b03600160801b909104811690851611611df95783611e0f565b6003810154600160801b90046001600160801b03165b91506001600160801b03831615611e74576003810180546001600160801b031981166001600160801b03918216869003821617909155611e74907f0000000000000000000000000000000000000000000000000000000000000000908a908616613a97565b6001600160801b03821615611eda576003810180546001600160801b03600160801b808304821686900382160291811691909117909155611eda907f0000000000000000000000000000000000000000000000000000000000000000908a908516613a97565b604080516001600160a01b038a1681526001600160801b0380861660208301528416818301529051600288810b92908a900b9133917f70935338e69775456a85ddef226c395fb668b63fa0115f5f20610b388e6ca9c0919081900360600190a4506000805460ff60f01b1916600160f01b17905590969095509350505050565b60076020526000908152604090208054600182015460028301546003909301546001600160801b0392831693919281811691600160801b90041685565b60066020526000908152604090205481565b7f000000000000000000000000000000000000000000000000000000000000000081565b600054600160f01b900460ff16612011576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b1916905560408051638da5cb5b60e01b815290516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691638da5cb5b916004808301926020929190829003018186803b15801561207e57600080fd5b505afa158015612092573d6000803e3d6000fd5b505050506040513d60208110156120a857600080fd5b50516001600160a01b031633146120be57600080fd5b60ff821615806120e1575060048260ff16101580156120e15750600a8260ff1611155b801561210b575060ff8116158061210b575060048160ff161015801561210b5750600a8160ff1611155b61211457600080fd5b60008054610ff0600484901b16840160ff908116600160e81b90810260ff60e81b19841617909355919004167f973d8d92bb299f4af6ce49b52a8adb85ae46b9f214c4c4fc06ac77401237b1336010826040805160ff9390920683168252600f600486901c16602083015286831682820152918516606082015290519081900360800190a150506000805460ff60f01b1916600160f01b17905550565b600080548190600160f01b900460ff166121f8576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b1916905560408051638da5cb5b60e01b815290516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691638da5cb5b916004808301926020929190829003018186803b15801561226557600080fd5b505afa158015612279573d6000803e3d6000fd5b505050506040513d602081101561228f57600080fd5b50516001600160a01b031633146122a557600080fd5b6003546001600160801b03908116908516116122c157836122ce565b6003546001600160801b03165b6003549092506001600160801b03600160801b9091048116908416116122f45782612308565b600354600160801b90046001600160801b03165b90506001600160801b03821615612389576003546001600160801b038381169116141561233757600019909101905b600380546001600160801b031981166001600160801b03918216859003821617909155612389907f00000000000000000000000000000000000000000000000000000000000000009087908516613a97565b6001600160801b0381161561240f576003546001600160801b03828116600160801b9092041614156123ba57600019015b600380546001600160801b03600160801b80830482168590038216029181169190911790915561240f907f00000000000000000000000000000000000000000000000000000000000000009087908416613a97565b604080516001600160801b0380851682528316602082015281516001600160a01b0388169233927f596b573906218d3411850b26a6b437d6c4522fdb43d2d2386263f86d50b8b151929081900390910190a36000805460ff60f01b1916600160f01b1790559094909350915050565b606080612489612b47565b612500612494612b7e565b858580806020026020016040519081016040528093929190818152602001838360200280828437600092018290525054600454600896959450600160a01b820460020b935061ffff600160b81b8304811693506001600160801b0390911691600160c81b900416614158565b915091509250929050565b600080548190600160f01b900460ff16612552576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b1916815560408051608081018252338152600288810b602083015287900b91810191909152819081906125ab906060810161259e6001600160801b038a16613e69565b600003600f0b9052613e7a565b92509250925081600003945080600003935060008511806125cc5750600084115b1561260b576003830180546001600160801b038082168089018216600160801b93849004831689019092169092029091176001600160801b0319161790555b604080516001600160801b0388168152602081018790528082018690529051600289810b92908b900b9133917f0c396cd989a39f4459b5fa1aed6a9a8dcdbc45908acfd67e028cd568da98982c919081900360600190a450506000805460ff60f01b1916600160f01b179055509094909350915050565b600080600061268f612b47565b61269985856142b2565b600285810b810b60009081526005602052604080822087840b90930b825281206003830154600681900b93600160381b82046001600160a01b0316928492600160d81b810463ffffffff169284929091600160f81b900460ff16806126fd57600080fd5b6003820154600681900b9850600160381b81046001600160a01b03169650600160d81b810463ffffffff169450600160f81b900460ff168061273e57600080fd5b50506040805160e0810182526000546001600160a01b0381168252600160a01b8104600290810b810b810b6020840181905261ffff600160b81b8404811695850195909552600160c81b830485166060850152600160d81b8304909416608084015260ff600160e81b8304811660a0850152600160f01b909204909116151560c08301529093508e810b91900b121590506127e75750939094039650900393509003905061286a565b8a60020b816020015160020b121561285b576000612803612b7e565b6020830151604084015160045460608601519394506000938493612839936008938893879392916001600160801b0316906132df565b9a9003989098039b50509490960392909203965090910303925061286a915050565b50949093039650039350900390505b9250925092565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60015481565b60056020526000908152604090208054600182015460028301546003909301546001600160801b03831693600160801b909304600f0b9290600681900b90600160381b81046001600160a01b031690600160d81b810463ffffffff1690600160f81b900460ff1688565b6000546001600160a01b0316156129b4576040805162461bcd60e51b8152602060048201526002602482015261414960f01b604482015290519081900360640190fd5b60006129bf826135e1565b90506000806129d76129cf612b7e565b60089061437b565b6040805160e0810182526001600160a01b038816808252600288810b6020808501829052600085870181905261ffff898116606088018190529089166080880181905260a08801839052600160c0909801979097528154600160f01b6001600160a01b0319909116871762ffffff60a01b1916600160a01b62ffffff9787900b97909716969096029590951763ffffffff60b81b1916600160c81b9091021761ffff60d81b1916600160d81b9096029590951761ffff60e81b191692909217909355835191825281019190915281519395509193507f98636036cb66a9c19a37435efc1e90142190214e8abeb821bdba3f2990dd4c9592918290030190a150505050565b60008082600281900b620d89e71981612af057fe5b05029050600083600281900b620d89e881612b0757fe5b0502905060008460020b83830360020b81612b1e57fe5b0560010190508062ffffff166001600160801b03801681612b3b57fe5b0493505050505b919050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614612b7c57600080fd5b565b4290565b60008060008460020b8660020b81612b9657fe5b05905060008660020b128015612bbd57508460020b8660020b81612bb657fe5b0760020b15155b15612bc757600019015b8315612c3c57600080612bd9836143c7565b600182810b810b600090815260208d9052604090205460ff83169190911b80016000190190811680151597509294509092509085612c1e57888360ff16860302612c31565b88612c28826143d9565b840360ff168603025b965050505050612cba565b600080612c4b836001016143c7565b91509150600060018260ff166001901b031990506000818b60008660010b60010b8152602001908152602001600020541690508060001415955085612c9d57888360ff0360ff16866001010102612cb3565b8883612ca883614478565b0360ff168660010101025b9650505050505b5094509492505050565b60008060008360020b12612cdb578260020b612ce3565b8260020b6000035b9050620d89e8811115612d21576040805162461bcd60e51b81526020600482015260016024820152601560fa1b604482015290519081900360640190fd5b600060018216612d3557600160801b612d47565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615612d7b576ffff97272373d413259a46990580e213a0260801c5b6004821615612d9a576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615612db9576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615612dd8576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615612df7576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615612e16576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615612e35576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615612e55576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615612e75576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615612e95576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615612eb5576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615612ed5576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615612ef5576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615612f15576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615612f35576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615612f56576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615612f76576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615612f95576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615612fb2576b048a170391f7dc42444e8fa20260801c5b60008460020b1315612fcd578060001981612fc957fe5b0490505b600160201b810615612fe0576001612fe3565b60005b60ff16602082901c0192505050919050565b60008080806001600160a01b03808916908a16101581871280159061307a57600061302e8989620f42400362ffffff16620f424061322f565b905082613047576130428c8c8c6001614562565b613054565b6130548b8d8c60016145dd565b9550858110613065578a9650613074565b6130718c8b8386614688565b96505b506130c4565b816130915761308c8b8b8b60006145dd565b61309e565b61309e8a8c8b6000614562565b93508388600003106130b2578995506130c4565b6130c18b8a8a600003856146d4565b95505b6001600160a01b038a8116908716148215613127578080156130e35750815b6130f9576130f4878d8c60016145dd565b6130fb565b855b9550808015613108575081155b61311e57613119878d8c6000614562565b613120565b845b9450613171565b8080156131315750815b613147576131428c888c6001614562565b613149565b855b9550808015613156575081155b61316c576131678c888c60006145dd565b61316e565b845b94505b8115801561318157508860000385115b1561318d578860000394505b8180156131ac57508a6001600160a01b0316876001600160a01b031614155b156131bb5785890393506131d8565b6131d5868962ffffff168a620f42400362ffffff166140ba565b93505b50505095509550955095915050565b6000600160ff1b82106131f957600080fd5b5090565b8082038281131560008312151461321357600080fd5b92915050565b8181018281121560008312151461321357600080fd5b6000808060001985870986860292508281109083900303905080613265576000841161325a57600080fd5b5082900490506132d8565b80841161327157600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b60008063ffffffff8716613385576000898661ffff1661ffff811061330057fe5b60408051608081018252919092015463ffffffff808216808452600160201b8304600690810b810b900b6020850152600160581b83046001600160a01b031694840194909452600160f81b90910460ff16151560608301529092508a16146133715761336e818a8988614720565b90505b806020015181604001519250925050613465565b86880360008061339a8c8c858c8c8c8c6147c3565b91509150816000015163ffffffff168363ffffffff1614156133cc578160200151826040015194509450505050613465565b805163ffffffff848116911614156133f4578060200151816040015194509450505050613465565b8151815160208085015190840151918390039286039163ffffffff80841692908516910360060b8161342257fe5b05028460200151018263ffffffff168263ffffffff1686604001518660400151036001600160a01b0316028161345457fe5b048560400151019650965050505050505b97509795505050505050565b600295860b860b60009081526020979097526040909620600181018054909503909455938301805490920390915560038201805463ffffffff600160d81b6001600160a01b03600160381b808504821690960316909402600160381b600160d81b031990921691909117600681810b90960390950b66ffffffffffffff1666ffffffffffffff199095169490941782810485169095039093160263ffffffff60d81b1990931692909217905554600160801b9004600f0b90565b60008082600f0b121561359057826001600160801b03168260000384039150816001600160801b03161061358b576040805162461bcd60e51b81526020600482015260026024820152614c5360f01b604482015290519081900360640190fd5b613213565b826001600160801b03168284019150816001600160801b03161015613213576040805162461bcd60e51b81526020600482015260026024820152614c4160f01b604482015290519081900360640190fd5b60006401000276a36001600160a01b0383161080159061361d575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038316105b613652576040805162461bcd60e51b81526020600482015260016024820152602960f91b604482015290519081900360640190fd5b640100000000600160c01b03602083901b166001600160801b03811160071b81811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c979088119617909417909217179091171717608081106136e657607f810383901c91506136f0565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d607f198f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c600160381b161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581026f028f6481ab7f045a5af012a19d003aa9198101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b146138ed57886001600160a01b03166138d182612cc4565b6001600160a01b031611156138e657816138e8565b805b6138ef565b815b9998505050505050505050565b6000806000898961ffff1661ffff811061391257fe5b60408051608081018252919092015463ffffffff808216808452600160201b8304600690810b810b900b6020850152600160581b83046001600160a01b031694840194909452600160f81b90910460ff1615156060830152909250891614156139815788859250925050613465565b8461ffff168461ffff161180156139a257506001850361ffff168961ffff16145b156139af578391506139b3565b8491505b8161ffff168960010161ffff16816139c757fe5b0692506139d681898989614720565b8a8461ffff1661ffff81106139e757fe5b825191018054602084015160408501516060909501511515600160f81b026001600160f81b036001600160a01b03909616600160581b027fff0000000000000000000000000000000000000000ffffffffffffffffffffff60069390930b66ffffffffffffff16600160201b026affffffffffffff000000001963ffffffff90971663ffffffff199095169490941795909516929092171692909217929092161790555097509795505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1781529251825160009485949389169392918291908083835b60208310613b135780518252601f199092019160209182019101613af4565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613b75576040519150601f19603f3d011682016040523d82523d6000602084013e613b7a565b606091505b5091509150818015613ba8575080511580613ba85750808060200190516020811015613ba557600080fd5b50515b613bde576040805162461bcd60e51b81526020600482015260026024820152612a2360f11b604482015290519081900360640190fd5b5050505050565b604080513060248083019190915282518083039091018152604490910182526020810180516001600160e01b03166370a0823160e01b17815291518151600093849384936001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001693919290918291908083835b60208310613c7e5780518252601f199092019160209182019101613c5f565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114613cde576040519150601f19603f3d011682016040523d82523d6000602084013e613ce3565b606091505b5091509150818015613cf757506020815110155b613d0057600080fd5b808060200190516020811015613d1557600080fd5b50519250505090565b8082018281101561321357600080fd5b604080513060248083019190915282518083039091018152604490910182526020810180516001600160e01b03166370a0823160e01b17815291518151600093849384936001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016939192909182919080838360208310613c7e5780518252601f199092019160209182019101613c5f565b6000808361ffff1611613e04576040805162461bcd60e51b81526020600482015260016024820152604960f81b604482015290519081900360640190fd5b8261ffff168261ffff1611613e1a5750816132d8565b825b8261ffff168161ffff161015613e60576001858261ffff1661ffff8110613e3f57fe5b01805463ffffffff191663ffffffff92909216919091179055600101613e1c565b50909392505050565b80600f81900b8114612b4257600080fd5b6000806000613e87612b47565b613e99846020015185604001516142b2565b6040805160e0810182526000546001600160a01b0381168252600160a01b8104600290810b810b900b602080840182905261ffff600160b81b8404811685870152600160c81b84048116606080870191909152600160d81b8504909116608086015260ff600160e81b8504811660a0870152600160f01b909404909316151560c085015288519089015194890151928901519394613f3d94919390929091906149bd565b93508460600151600f0b6000146140b257846020015160020b816020015160020b1215613f9257613f8b613f748660200151612cc4565b613f818760400151612cc4565b8760600151614b72565b92506140b2565b846040015160020b816020015160020b12156140885760045460408201516001600160801b0390911690613fe490613fc8612b7e565b60208501516060860151608087015160089493929187916138fc565b6000805461ffff60c81b1916600160c81b61ffff938416021761ffff60b81b1916600160b81b939092169290920217905581516040870151614034919061402a90612cc4565b8860600151614b72565b93506140526140468760200151612cc4565b83516060890151614bb6565b925061406281876060015161352b565b600480546001600160801b0319166001600160801b0392909216919091179055506140b2565b6140af6140988660200151612cc4565b6140a58760400151612cc4565b8760600151614bb6565b91505b509193909250565b60006140c784848461322f565b9050600082806140d357fe5b84860911156132d85760001981106140ea57600080fd5b6001019392505050565b6040805160609490941b6bffffffffffffffffffffffff1916602080860191909152600293840b60e890811b60348701529290930b90911b60378401528051808403601a018152603a90930181528251928201929092206000908152929052902090565b60608060008361ffff1611614198576040805162461bcd60e51b81526020600482015260016024820152604960f81b604482015290519081900360640190fd5b865167ffffffffffffffff811180156141b057600080fd5b506040519080825280602002602001820160405280156141da578160200160208202803683370190505b509150865167ffffffffffffffff811180156141f557600080fd5b5060405190808252806020026020018201604052801561421f578160200160208202803683370190505b50905060005b87518110156142a5576142508a8a8a848151811061423f57fe5b60200260200101518a8a8a8a6132df565b84838151811061425c57fe5b6020026020010184848151811061426f57fe5b60200260200101826001600160a01b03166001600160a01b03168152508260060b60060b81525050508080600101915050614225565b5097509795505050505050565b8060020b8260020b126142f2576040805162461bcd60e51b8152602060048201526003602482015262544c5560e81b604482015290519081900360640190fd5b620d89e719600283900b1215614335576040805162461bcd60e51b8152602060048201526003602482015262544c4d60e81b604482015290519081900360640190fd5b620d89e8600282900b1315614377576040805162461bcd60e51b815260206004820152600360248201526254554d60e81b604482015290519081900360640190fd5b5050565b6040805160808101825263ffffffff9283168082526000602083018190529282019290925260016060909101819052835463ffffffff1916909117909116600160f81b17909155908190565b60020b600881901d9161010090910790565b60008082116143e757600080fd5b600160801b82106143fa57608091821c91015b68010000000000000000821061441257604091821c91015b600160201b821061442557602091821c91015b62010000821061443757601091821c91015b610100821061444857600891821c91015b6010821061445857600491821c91015b6004821061446857600291821c91015b60028210612b4257600101919050565b600080821161448657600080fd5b5060ff6001600160801b038216156144a157607f19016144a9565b608082901c91505b67ffffffffffffffff8216156144c257603f19016144ca565b604082901c91505b63ffffffff8216156144df57601f19016144e7565b602082901c91505b61ffff8216156144fa57600f1901614502565b601082901c91505b60ff821615614514576007190161451c565b600882901c91505b600f82161561452e5760031901614536565b600482901c91505b60038216156145485760011901614550565b600282901c91505b6001821615612b425760001901919050565b6000836001600160a01b0316856001600160a01b03161115614582579293925b816145af576145aa836001600160801b03168686036001600160a01b0316600160601b61322f565b6145d2565b6145d2836001600160801b03168686036001600160a01b0316600160601b6140ba565b90505b949350505050565b6000836001600160a01b0316856001600160a01b031611156145fd579293925b600160601b600160e01b03606084901b166001600160a01b03868603811690871661462757600080fd5b8361465757866001600160a01b031661464a8383896001600160a01b031661322f565b8161465157fe5b0461467d565b61467d61466e8383896001600160a01b03166140ba565b886001600160a01b0316614be5565b979650505050505050565b600080856001600160a01b03161161469f57600080fd5b6000846001600160801b0316116146b557600080fd5b816146c7576145aa8585856001614bf0565b6145d28585856001614cd1565b600080856001600160a01b0316116146eb57600080fd5b6000846001600160801b03161161470157600080fd5b81614713576145aa8585856000614cd1565b6145d28585856000614bf0565b6147286154f1565b600085600001518503905060405180608001604052808663ffffffff1681526020018263ffffffff168660020b0288602001510160060b81526020016000856001600160801b03161161477c57600161477e565b845b6001600160801b031663ffffffff60801b608085901b168161479c57fe5b048860400151016001600160a01b0316815260200160011515815250915050949350505050565b6147cb6154f1565b6147d36154f1565b888561ffff1661ffff81106147e457fe5b60408051608081018252919092015463ffffffff8116808352600160201b8204600690810b810b900b6020840152600160581b82046001600160a01b031693830193909352600160f81b900460ff1615156060820152925061484890899089614db4565b15614880578663ffffffff16826000015163ffffffff16141561486a57613465565b8161487783898988614720565b91509150613465565b888361ffff168660010161ffff168161489557fe5b0661ffff1661ffff81106148a557fe5b60408051608081018252929091015463ffffffff81168352600160201b8104600690810b810b900b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b9091041615156060820181905290925061495a57604080516080810182528a5463ffffffff81168252600160201b8104600690810b810b900b6020830152600160581b81046001600160a01b031692820192909252600160f81b90910460ff161515606082015291505b61496988836000015189614db4565b6149a0576040805162461bcd60e51b815260206004820152600360248201526213d31160ea1b604482015290519081900360640190fd5b6149ad8989898887614e75565b9150915097509795505050505050565b60006149cc60078787876140f4565b60015460025491925090600080600f87900b15614b125760006149ed612b7e565b6000805460045492935090918291614a379160089186918591600160a01b810460020b9161ffff600160b81b83048116926001600160801b0390921691600160c81b9004166132df565b9092509050614a7160058d8b8d8b8b87898b60007f0000000000000000000000000000000000000000000000000000000000000000615013565b9450614aa860058c8b8d8b8b87898b60017f0000000000000000000000000000000000000000000000000000000000000000615013565b93508415614adc57614adc60068d7f00000000000000000000000000000000000000000000000000000000000000006151cc565b8315614b0e57614b0e60068c7f00000000000000000000000000000000000000000000000000000000000000006151cc565b5050505b600080614b2460058c8c8b8a8a615232565b9092509050614b35878a84846152de565b600089600f0b1215614b63578315614b5257614b5260058c615473565b8215614b6357614b6360058b615473565b50505050505095945050505050565b60008082600f0b12614b9857614b93614b8e85858560016145dd565b6131e7565b6145d5565b614bab614b8e85858560000360006145dd565b600003949350505050565b60008082600f0b12614bd257614b93614b8e8585856001614562565b614bab614b8e8585856000036000614562565b808204910615150190565b60008115614c635760006001600160a01b03841115614c2657614c2184600160601b876001600160801b031661322f565b614c3e565b6001600160801b038516606085901b81614c3c57fe5b045b9050614c5b614c566001600160a01b03881683613d1e565b61549f565b9150506145d5565b60006001600160a01b03841115614c9157614c8c84600160601b876001600160801b03166140ba565b614ca8565b614ca8606085901b6001600160801b038716614be5565b905080866001600160a01b031611614cbf57600080fd5b6001600160a01b0386160390506145d5565b600082614cdf5750836145d5565b600160601b600160e01b03606085901b168215614d6d576001600160a01b03861684810290858281614d0d57fe5b041415614d3e57818101828110614d3c57614d3283896001600160a01b0316836140ba565b93505050506145d5565b505b614d6482614d5f878a6001600160a01b03168681614d5857fe5b0490613d1e565b614be5565b925050506145d5565b6001600160a01b03861684810290858281614d8457fe5b04148015614d9157508082115b614d9a57600080fd5b808203614d32614c56846001600160a01b038b16846140ba565b60008363ffffffff168363ffffffff1611158015614dde57508363ffffffff168263ffffffff1611155b15614dfa578163ffffffff168363ffffffff16111590506132d8565b60008463ffffffff168463ffffffff1611614e21578363ffffffff16600160201b01614e29565b8363ffffffff165b64ffffffffff16905060008563ffffffff168463ffffffff1611614e59578363ffffffff16600160201b01614e61565b8363ffffffff165b64ffffffffff169091111595945050505050565b614e7d6154f1565b614e856154f1565b60008361ffff168560010161ffff1681614e9b57fe5b0661ffff169050600060018561ffff16830103905060005b506002818301048961ffff87168281614ec857fe5b0661ffff8110614ed457fe5b60408051608081018252929091015463ffffffff81168352600160201b8104600690810b810b900b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b90910416151560608201819052909550614f3e57806001019250614eb3565b898661ffff168260010181614f4f57fe5b0661ffff8110614f5b57fe5b60408051608081018252929091015463ffffffff81168352600160201b8104600690810b810b900b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b90910416151560608201528551909450600090614fc5908b908b614db4565b9050808015614fde5750614fde8a8a8760000151614db4565b15614fe95750615006565b80614ff957600182039250615000565b8160010193505b50614eb3565b5050509550959350505050565b60028a810b900b600090815260208c90526040812080546001600160801b03168261503e828d61352b565b9050846001600160801b0316816001600160801b0316111561508c576040805162461bcd60e51b81526020600482015260026024820152614c4f60f01b604482015290519081900360640190fd5b6001600160801b038281161590821615811415945015615131578c60020b8e60020b1361511957600183018b9055600283018a9055600383018054600160381b600160d81b031916600160381b6001600160a01b038c16021766ffffffffffffff191666ffffffffffffff60068b900b161763ffffffff60d81b1916600160d81b63ffffffff8a16021790555b6003830180546001600160f81b0316600160f81b1790555b82546001600160801b0319166001600160801b0382161783558561517a5782546151759061517090600160801b9004600f90810b810b908f900b613219565b613e69565b61519b565b825461519b9061517090600160801b9004600f90810b810b908f900b6131fd565b8354600f9190910b6001600160801b03908116600160801b0291161790925550909c9b505050505050505050505050565b8060020b8260020b816151db57fe5b0760020b156151e957600080fd5b6000806152048360020b8560020b816151fe57fe5b056143c7565b600191820b820b60009081526020979097526040909620805460ff9097169190911b90951890945550505050565b600285810b80820b60009081526020899052604080822088850b850b83529082209193849391929184918291908a900b126152785750506001820154600283015461528b565b8360010154880391508360020154870390505b6000808b60020b8b60020b12156152ad575050600183015460028401546152c0565b84600101548a0391508460020154890390505b92909803979097039b96909503949094039850939650505050505050565b6040805160a08101825285546001600160801b0390811682526001870154602083015260028701549282019290925260038601548083166060830152600160801b900490911660808201526000600f85900b61537d5781516001600160801b0316615375576040805162461bcd60e51b815260206004820152600260248201526104e560f41b604482015290519081900360640190fd5b50805161538c565b8151615389908661352b565b90505b60006153b08360200151860384600001516001600160801b0316600160801b61322f565b905060006153d68460400151860385600001516001600160801b0316600160801b61322f565b905086600f0b6000146153fd5787546001600160801b0319166001600160801b0384161788555b60018801869055600288018590556001600160801b03821615158061542b57506000816001600160801b0316115b15615469576003880180546001600160801b031981166001600160801b039182168501821617808216600160801b9182900483168501909216021790555b5050505050505050565b600290810b810b6000908152602092909252604082208281556001810183905590810182905560030155565b806001600160a01b0381168114612b4257600080fd5b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915290565b6040805160808101825260008082526020820181905291810182905260608101919091529056fea26469706673582212200c1f93875bf69bd8236c0ed6fa61db810cf06b5c5481470ac7a631eb4e43c81264736f6c63430007060033", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x18E JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70CF754A GT PUSH2 0xDE JUMPI DUP1 PUSH4 0xC45A0155 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xDDCA3F43 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xDDCA3F43 EQ PUSH2 0x7D8 JUMPI DUP1 PUSH4 0xF3058399 EQ PUSH2 0x7F8 JUMPI DUP1 PUSH4 0xF30DBA93 EQ PUSH2 0x800 JUMPI DUP1 PUSH4 0xF637731D EQ PUSH2 0x882 JUMPI PUSH2 0x18E JUMP JUMPDEST DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x7A9 JUMPI DUP1 PUSH4 0xD0C93A7C EQ PUSH2 0x7B1 JUMPI DUP1 PUSH4 0xD21220A7 EQ PUSH2 0x7D0 JUMPI PUSH2 0x18E JUMP JUMPDEST DUP1 PUSH4 0x70CF754A EQ PUSH2 0x5A0 JUMPI DUP1 PUSH4 0x8206A4D1 EQ PUSH2 0x5A8 JUMPI DUP1 PUSH4 0x85B66729 EQ PUSH2 0x5D0 JUMPI DUP1 PUSH4 0x883BDBFD EQ PUSH2 0x60D JUMPI DUP1 PUSH4 0xA34123A7 EQ PUSH2 0x714 JUMPI DUP1 PUSH4 0xA38807F2 EQ PUSH2 0x74E JUMPI PUSH2 0x18E JUMP JUMPDEST DUP1 PUSH4 0x3850C7BD GT PUSH2 0x14B JUMPI DUP1 PUSH4 0x490E6CBC GT PUSH2 0x125 JUMPI DUP1 PUSH4 0x490E6CBC EQ PUSH2 0x44C JUMPI DUP1 PUSH4 0x4F1EB3D8 EQ PUSH2 0x4D6 JUMPI DUP1 PUSH4 0x514EA4BF EQ PUSH2 0x527 JUMPI DUP1 PUSH4 0x5339C296 EQ PUSH2 0x580 JUMPI PUSH2 0x18E JUMP JUMPDEST DUP1 PUSH4 0x3850C7BD EQ PUSH2 0x339 JUMPI DUP1 PUSH4 0x3C8A7D8D EQ PUSH2 0x392 JUMPI DUP1 PUSH4 0x46141319 EQ PUSH2 0x432 JUMPI PUSH2 0x18E JUMP JUMPDEST DUP1 PUSH4 0xDFE1681 EQ PUSH2 0x193 JUMPI DUP1 PUSH4 0x128ACB08 EQ PUSH2 0x1B7 JUMPI DUP1 PUSH4 0x1A686502 EQ PUSH2 0x264 JUMPI DUP1 PUSH4 0x1AD8B03B EQ PUSH2 0x288 JUMPI DUP1 PUSH4 0x252C09D7 EQ PUSH2 0x2BF JUMPI DUP1 PUSH4 0x32148F67 EQ PUSH2 0x316 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x19B PUSH2 0x8A8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x24B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x1CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD ISZERO ISZERO SWAP3 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP3 PUSH1 0x60 DUP4 ADD CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0xA0 DUP2 ADD PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x20D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x21F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x240 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x8CC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x26C PUSH2 0x146B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x290 PUSH2 0x147A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2DC PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1494 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0xFFFFFFFF SWAP1 SWAP6 AND DUP6 MSTORE PUSH1 0x6 SWAP4 SWAP1 SWAP4 SIGNEXTEND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP4 DUP4 ADD MSTORE ISZERO ISZERO PUSH1 0x60 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 RETURN JUMPDEST PUSH2 0x337 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x32C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xFFFF AND PUSH2 0x14D9 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x341 PUSH2 0x15D3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP9 AND DUP9 MSTORE PUSH1 0x2 SWAP7 SWAP1 SWAP7 SIGNEXTEND PUSH1 0x20 DUP9 ADD MSTORE PUSH2 0xFFFF SWAP5 DUP6 AND DUP8 DUP8 ADD MSTORE SWAP3 DUP5 AND PUSH1 0x60 DUP8 ADD MSTORE SWAP3 AND PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0xFF SWAP1 SWAP2 AND PUSH1 0xA0 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0xC0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xE0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x24B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x3A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP3 PUSH1 0x40 DUP4 ADD CALLDATALOAD SWAP1 SWAP2 SIGNEXTEND SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x60 DUP3 ADD CALLDATALOAD AND SWAP2 DUP2 ADD SWAP1 PUSH1 0xA0 DUP2 ADD PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x3F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x406 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x427 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1623 JUMP JUMPDEST PUSH2 0x43A PUSH2 0x18DF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x337 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x462 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x498 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x4CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x18E5 JUMP JUMPDEST PUSH2 0x290 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x4EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP2 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 SIGNEXTEND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x60 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x80 ADD CALLDATALOAD AND PUSH2 0x1D40 JUMP JUMPDEST PUSH2 0x544 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x53D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x1F5A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP7 DUP8 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP6 SWAP1 SWAP6 MSTORE DUP5 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE SWAP1 DUP5 AND PUSH1 0x60 DUP5 ADD MSTORE SWAP1 SWAP3 AND PUSH1 0x80 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x43A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x596 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 SIGNEXTEND PUSH2 0x1F97 JUMP JUMPDEST PUSH2 0x26C PUSH2 0x1FA9 JUMP JUMPDEST PUSH2 0x337 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1FCD JUMP JUMPDEST PUSH2 0x290 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x5E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x20 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x40 ADD CALLDATALOAD AND PUSH2 0x21B1 JUMP JUMPDEST PUSH2 0x67B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x623 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x63D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x64F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x670 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x247E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x6BF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x6A7 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x6FE JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x6E6 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x24B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x72A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 SIGNEXTEND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x250B JUMP JUMPDEST PUSH2 0x778 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x764 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP2 PUSH1 0x20 ADD CALLDATALOAD SWAP1 SIGNEXTEND PUSH2 0x2682 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x6 SWAP5 SWAP1 SWAP5 SIGNEXTEND DUP5 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH4 0xFFFFFFFF AND DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST PUSH2 0x19B PUSH2 0x2871 JUMP JUMPDEST PUSH2 0x7B9 PUSH2 0x2895 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 SWAP3 SWAP1 SWAP3 SIGNEXTEND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x19B PUSH2 0x28B9 JUMP JUMPDEST PUSH2 0x7E0 PUSH2 0x28DD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH3 0xFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x43A PUSH2 0x2901 JUMP JUMPDEST PUSH2 0x820 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x816 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x2 SIGNEXTEND PUSH2 0x2907 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP10 AND DUP10 MSTORE PUSH1 0xF SWAP8 SWAP1 SWAP8 SIGNEXTEND PUSH1 0x20 DUP10 ADD MSTORE DUP8 DUP8 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0x60 DUP8 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x6 SWAP2 SWAP1 SWAP2 SIGNEXTEND PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0xA0 DUP6 ADD MSTORE PUSH4 0xFFFFFFFF AND PUSH1 0xC0 DUP5 ADD MSTORE ISZERO ISZERO PUSH1 0xE0 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH2 0x100 ADD SWAP1 RETURN JUMPDEST PUSH2 0x337 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x898 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2971 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x8D7 PUSH2 0x2B47 JUMP JUMPDEST DUP6 PUSH2 0x90E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4153 PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xE0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0xA0 SHL DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0xFFFF PUSH1 0x1 PUSH1 0xB8 SHL DUP3 DIV DUP2 AND SWAP4 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0xC8 SHL DUP2 DIV DUP4 AND PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0xD8 SHL DUP2 DIV SWAP1 SWAP3 AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xFF PUSH1 0x1 PUSH1 0xE8 SHL DUP4 DIV DUP2 AND PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 SWAP3 DIV SWAP1 SWAP2 AND ISZERO ISZERO PUSH1 0xC0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x9C7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4C4F4B PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP8 PUSH2 0xA12 JUMPI DUP1 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT DUP1 ISZERO PUSH2 0xA0D JUMPI POP PUSH20 0xFFFD8963EFD1FC6A506488495D951D5263988D26 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND LT JUMPDEST PUSH2 0xA44 JUMP JUMPDEST DUP1 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT DUP1 ISZERO PUSH2 0xA44 JUMPI POP PUSH5 0x1000276A3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND GT JUMPDEST PUSH2 0xA7B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x14D413 PUSH1 0xEA SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND DUP2 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0xC0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 DUP11 PUSH2 0xAAA JUMPI PUSH1 0x4 DUP5 PUSH1 0xA0 ADD MLOAD PUSH1 0xFF AND SWAP1 SHR PUSH2 0xABD JUMP JUMPDEST PUSH1 0x10 DUP5 PUSH1 0xA0 ADD MLOAD PUSH1 0xFF AND DUP2 PUSH2 0xABB JUMPI INVALID JUMPDEST MOD JUMPDEST PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD PUSH2 0xADE PUSH2 0x2B7E JUMP JUMPDEST PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x6 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE POP SWAP1 POP PUSH1 0x0 DUP1 DUP10 SGT SWAP1 POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 PUSH1 0xE0 ADD PUSH1 0x40 MSTORE DUP1 DUP12 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x20 ADD MLOAD PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP13 PUSH2 0xB5A JUMPI PUSH1 0x2 SLOAD PUSH2 0xB5E JUMP JUMPDEST PUSH1 0x1 SLOAD JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE POP SWAP1 POP JUMPDEST DUP1 MLOAD ISZERO DUP1 ISZERO SWAP1 PUSH2 0xBAD JUMPI POP DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0xF77 JUMPI PUSH2 0xBBA PUSH2 0x54B5 JUMP JUMPDEST PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0xBFD SWAP1 PUSH1 0x6 SWAP1 PUSH32 0x0 DUP16 PUSH2 0x2B82 JUMP JUMPDEST ISZERO ISZERO PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x20 DUP4 ADD DUP2 SWAP1 MSTORE PUSH3 0xD89E7 NOT SWAP2 SIGNEXTEND SLT ISZERO PUSH2 0xC2E JUMPI PUSH3 0xD89E7 NOT PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0xC4D JUMP JUMPDEST PUSH1 0x20 DUP2 ADD MLOAD PUSH3 0xD89E8 PUSH1 0x2 SWAP2 SWAP1 SWAP2 SIGNEXTEND SGT ISZERO PUSH2 0xC4D JUMPI PUSH3 0xD89E8 PUSH1 0x20 DUP3 ADD MSTORE JUMPDEST PUSH2 0xC5A DUP2 PUSH1 0x20 ADD MLOAD PUSH2 0x2CC4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x40 DUP3 ADD MLOAD PUSH2 0xCEB SWAP1 DUP14 PUSH2 0xC94 JUMPI DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x60 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0xCAE JUMP JUMPDEST DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x60 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND LT JUMPDEST PUSH2 0xCBC JUMPI DUP3 PUSH1 0x60 ADD MLOAD PUSH2 0xCBE JUMP JUMPDEST DUP12 JUMPDEST PUSH1 0xC0 DUP6 ADD MLOAD DUP6 MLOAD PUSH32 0x0 PUSH2 0x2FF5 JUMP JUMPDEST PUSH1 0xC0 DUP6 ADD MSTORE PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x40 DUP4 ADD MSTORE DUP3 ISZERO PUSH2 0xD4D JUMPI PUSH2 0xD21 DUP2 PUSH1 0xC0 ADD MLOAD DUP3 PUSH1 0x80 ADD MLOAD ADD PUSH2 0x31E7 JUMP JUMPDEST DUP3 MLOAD SUB DUP3 MSTORE PUSH1 0xA0 DUP2 ADD MLOAD PUSH2 0xD43 SWAP1 PUSH2 0xD38 SWAP1 PUSH2 0x31E7 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 PUSH2 0x31FD JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0xD88 JUMP JUMPDEST PUSH2 0xD5A DUP2 PUSH1 0xA0 ADD MLOAD PUSH2 0x31E7 JUMP JUMPDEST DUP3 MLOAD ADD DUP3 MSTORE PUSH1 0xC0 DUP2 ADD MLOAD PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0xD82 SWAP2 PUSH2 0xD77 SWAP2 ADD PUSH2 0x31E7 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 PUSH2 0x3219 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE JUMPDEST DUP4 MLOAD PUSH1 0xFF AND ISZERO PUSH2 0xDCE JUMPI PUSH1 0x0 DUP5 PUSH1 0x0 ADD MLOAD PUSH1 0xFF AND DUP3 PUSH1 0xC0 ADD MLOAD DUP2 PUSH2 0xDA8 JUMPI INVALID JUMPDEST PUSH1 0xC0 DUP5 ADD DUP1 MLOAD SWAP3 SWAP1 SWAP2 DIV SWAP2 DUP3 SWAP1 SUB SWAP1 MSTORE PUSH1 0xA0 DUP5 ADD DUP1 MLOAD SWAP1 SWAP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP1 MSTORE POP JUMPDEST PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND ISZERO PUSH2 0xE0D JUMPI PUSH2 0xE01 DUP2 PUSH1 0xC0 ADD MLOAD PUSH1 0x1 PUSH1 0x80 SHL DUP5 PUSH1 0xC0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x322F JUMP JUMPDEST PUSH1 0x80 DUP4 ADD DUP1 MLOAD SWAP1 SWAP2 ADD SWAP1 MSTORE JUMPDEST DUP1 PUSH1 0x60 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0xF36 JUMPI DUP1 PUSH1 0x40 ADD MLOAD ISZERO PUSH2 0xF0D JUMPI DUP4 PUSH1 0xA0 ADD MLOAD PUSH2 0xE97 JUMPI PUSH2 0xE75 DUP5 PUSH1 0x40 ADD MLOAD PUSH1 0x0 DUP8 PUSH1 0x20 ADD MLOAD DUP9 PUSH1 0x40 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP11 PUSH1 0x60 ADD MLOAD PUSH1 0x8 PUSH2 0x32DF SWAP1 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0xA0 DUP6 ADD MSTORE JUMPDEST PUSH1 0x0 PUSH2 0xEE3 DUP3 PUSH1 0x20 ADD MLOAD DUP15 PUSH2 0xEAE JUMPI PUSH1 0x1 SLOAD PUSH2 0xEB4 JUMP JUMPDEST DUP5 PUSH1 0x80 ADD MLOAD JUMPDEST DUP16 PUSH2 0xEC3 JUMPI DUP6 PUSH1 0x80 ADD MLOAD PUSH2 0xEC7 JUMP JUMPDEST PUSH1 0x2 SLOAD JUMPDEST PUSH1 0x80 DUP10 ADD MLOAD PUSH1 0x60 DUP11 ADD MLOAD PUSH1 0x40 DUP12 ADD MLOAD PUSH1 0x5 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x3471 JUMP JUMPDEST SWAP1 POP DUP13 ISZERO PUSH2 0xEEF JUMPI PUSH1 0x0 SUB JUMPDEST PUSH2 0xEFD DUP4 PUSH1 0xC0 ADD MLOAD DUP3 PUSH2 0x352B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0xC0 DUP5 ADD MSTORE POP JUMPDEST DUP12 PUSH2 0xF1C JUMPI DUP1 PUSH1 0x20 ADD MLOAD PUSH2 0xF25 JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x20 ADD MLOAD SUB JUMPDEST PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0xF71 JUMP JUMPDEST DUP1 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xF71 JUMPI PUSH2 0xF64 DUP3 PUSH1 0x40 ADD MLOAD PUSH2 0x35E1 JUMP JUMPDEST PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x60 DUP4 ADD MSTORE JUMPDEST POP PUSH2 0xB87 JUMP JUMPDEST DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x2 SIGNEXTEND DUP2 PUSH1 0x60 ADD MLOAD PUSH1 0x2 SIGNEXTEND EQ PUSH2 0x1045 JUMPI PUSH1 0x0 DUP1 PUSH2 0xFC5 DUP7 PUSH1 0x40 ADD MLOAD DUP7 PUSH1 0x40 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP9 PUSH1 0x20 ADD MLOAD DUP11 PUSH1 0x60 ADD MLOAD DUP12 PUSH1 0x80 ADD MLOAD PUSH1 0x8 PUSH2 0x38FC SWAP1 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MLOAD PUSH1 0x60 DUP7 ADD MLOAD PUSH1 0x0 DUP1 SLOAD PUSH2 0xFFFF PUSH1 0xC8 SHL NOT AND PUSH1 0x1 PUSH1 0xC8 SHL PUSH2 0xFFFF SWAP6 DUP7 AND MUL OR PUSH2 0xFFFF PUSH1 0xB8 SHL NOT AND PUSH1 0x1 PUSH1 0xB8 SHL SWAP6 SWAP1 SWAP5 AND SWAP5 SWAP1 SWAP5 MUL SWAP3 SWAP1 SWAP3 OR PUSH3 0xFFFFFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL PUSH3 0xFFFFFF PUSH1 0x2 SWAP5 SWAP1 SWAP5 SIGNEXTEND SWAP4 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 MUL SWAP2 SWAP1 SWAP2 OR PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND OR SWAP1 SSTORE POP PUSH2 0x106A SWAP1 POP JUMP JUMPDEST PUSH1 0x40 DUP2 ADD MLOAD PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST DUP1 PUSH1 0xC0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP4 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND EQ PUSH2 0x10B0 JUMPI PUSH1 0xC0 DUP2 ADD MLOAD PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST DUP11 ISZERO PUSH2 0x1100 JUMPI PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x1 SSTORE PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND ISZERO PUSH2 0x10FB JUMPI PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP2 DUP3 AND SWAP1 SWAP4 ADD AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST PUSH2 0x1146 JUMP JUMPDEST PUSH1 0x80 DUP2 ADD MLOAD PUSH1 0x2 SSTORE PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND ISZERO PUSH2 0x1146 JUMPI PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP3 AND PUSH1 0x1 PUSH1 0x80 SHL SWAP3 DUP4 SWAP1 DIV DUP3 AND SWAP1 SWAP5 ADD AND MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMPDEST DUP2 ISZERO ISZERO DUP12 ISZERO ISZERO EQ PUSH2 0x115F JUMPI PUSH1 0x20 DUP2 ADD MLOAD DUP2 MLOAD DUP12 SUB PUSH2 0x116C JUMP JUMPDEST DUP1 PUSH1 0x0 ADD MLOAD DUP11 SUB DUP2 PUSH1 0x20 ADD MLOAD JUMPDEST SWAP1 SWAP7 POP SWAP5 POP DUP11 ISZERO PUSH2 0x12A5 JUMPI PUSH1 0x0 DUP6 SLT ISZERO PUSH2 0x11AE JUMPI PUSH2 0x11AE PUSH32 0x0 DUP14 DUP8 PUSH1 0x0 SUB PUSH2 0x3A97 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x11B8 PUSH2 0x3BE5 JUMP JUMPDEST SWAP1 POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFA461E33 DUP9 DUP9 DUP13 DUP13 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP6 POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x123C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1250 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x125C PUSH2 0x3BE5 JUMP JUMPDEST PUSH2 0x1266 DUP3 DUP10 PUSH2 0x3D1E JUMP JUMPDEST GT ISZERO PUSH2 0x129F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x494941 PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH2 0x13CF JUMP JUMPDEST PUSH1 0x0 DUP7 SLT ISZERO PUSH2 0x12DC JUMPI PUSH2 0x12DC PUSH32 0x0 DUP14 DUP9 PUSH1 0x0 SUB PUSH2 0x3A97 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12E6 PUSH2 0x3D2E JUMP JUMPDEST SWAP1 POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFA461E33 DUP9 DUP9 DUP13 DUP13 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP6 POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x136A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x137E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x138A PUSH2 0x3D2E JUMP JUMPDEST PUSH2 0x1394 DUP3 DUP9 PUSH2 0x3D1E JUMP JUMPDEST GT ISZERO PUSH2 0x13CD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x494941 PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP JUMPDEST PUSH1 0x40 DUP1 DUP3 ADD MLOAD PUSH1 0xC0 DUP4 ADD MLOAD PUSH1 0x60 DUP1 DUP6 ADD MLOAD DUP5 MLOAD DUP12 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP12 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND DUP2 DUP8 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP4 AND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x2 SIGNEXTEND PUSH1 0x80 DUP3 ADD MSTORE SWAP2 MLOAD SWAP1 DUP15 AND SWAP2 CALLER SWAP2 PUSH32 0xC42079F94A6350D7E6235F29174924F928CC2AC818EB64FED8004E115FBCCA67 SWAP2 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 LOG3 POP POP PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND PUSH1 0x1 PUSH1 0xF0 SHL OR SWAP1 SSTORE POP SWAP2 SWAP9 SWAP1 SWAP8 POP SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP3 AND SWAP2 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV AND DUP3 JUMP JUMPDEST PUSH1 0x8 DUP2 PUSH2 0xFFFF DUP2 LT PUSH2 0x14A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST ADD SLOAD PUSH4 0xFFFFFFFF DUP2 AND SWAP2 POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 DIV PUSH1 0x6 SIGNEXTEND SWAP1 PUSH1 0x1 PUSH1 0x58 SHL DUP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 DIV PUSH1 0xFF AND DUP5 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x151D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4C4F4B PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND SWAP1 SSTORE PUSH2 0x1532 PUSH2 0x2B47 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0xD8 SHL SWAP1 DIV PUSH2 0xFFFF AND SWAP1 PUSH2 0x154E PUSH1 0x8 DUP4 DUP6 PUSH2 0x3DC6 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFFFF DUP1 DUP5 AND PUSH1 0x1 PUSH1 0xD8 SHL DUP2 MUL PUSH2 0xFFFF PUSH1 0xD8 SHL NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP3 SSTORE SWAP2 SWAP3 POP DUP4 AND EQ PUSH2 0x15BB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH2 0xFFFF DUP1 DUP6 AND DUP3 MSTORE DUP4 AND PUSH1 0x20 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0xAC49E518F90A358F652E4400164F05A5D8F7E35E7747279BC3A93DBF584E125A SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 JUMPDEST POP POP PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND PUSH1 0x1 PUSH1 0xF0 SHL OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND SWAP1 PUSH1 0x1 PUSH1 0xA0 SHL DUP2 DIV PUSH1 0x2 SIGNEXTEND SWAP1 PUSH2 0xFFFF PUSH1 0x1 PUSH1 0xB8 SHL DUP3 DIV DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0xC8 SHL DUP2 DIV DUP3 AND SWAP2 PUSH1 0x1 PUSH1 0xD8 SHL DUP3 DIV AND SWAP1 PUSH1 0xFF PUSH1 0x1 PUSH1 0xE8 SHL DUP3 DIV DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 DIV AND DUP8 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x166A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4C4F4B PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND SWAP1 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP6 AND PUSH2 0x168A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x16D8 PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP12 PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD DUP11 PUSH1 0x2 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x16CE DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x3E69 JUMP JUMPDEST PUSH1 0xF SIGNEXTEND SWAP1 MSTORE PUSH2 0x3E7A JUMP JUMPDEST SWAP3 POP SWAP3 POP POP DUP2 SWAP4 POP DUP1 SWAP3 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP7 GT ISZERO PUSH2 0x16FA JUMPI PUSH2 0x16F7 PUSH2 0x3BE5 JUMP JUMPDEST SWAP2 POP JUMPDEST DUP5 ISZERO PUSH2 0x170B JUMPI PUSH2 0x1708 PUSH2 0x3D2E JUMP JUMPDEST SWAP1 POP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xD3487997 DUP8 DUP8 DUP12 DUP12 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP6 POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x178D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x17A1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 DUP7 GT ISZERO PUSH2 0x17F8 JUMPI PUSH2 0x17B6 PUSH2 0x3BE5 JUMP JUMPDEST PUSH2 0x17C0 DUP4 DUP9 PUSH2 0x3D1E JUMP JUMPDEST GT ISZERO PUSH2 0x17F8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4D3 PUSH1 0xF4 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP5 ISZERO PUSH2 0x1848 JUMPI PUSH2 0x1806 PUSH2 0x3D2E JUMP JUMPDEST PUSH2 0x1810 DUP3 DUP8 PUSH2 0x3D1E JUMP JUMPDEST GT ISZERO PUSH2 0x1848 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4D31 PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP10 PUSH1 0x2 SIGNEXTEND DUP12 PUSH1 0x2 SIGNEXTEND DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x7A53080BA414158BE7EC69B987B5FB7D07DEE101FE85488F0853AE16239D0BDE CALLER DUP14 DUP12 DUP12 PUSH1 0x40 MLOAD DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND PUSH1 0x1 PUSH1 0xF0 SHL OR SWAP1 SSTORE POP SWAP2 SWAP9 SWAP1 SWAP8 POP SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1929 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4C4F4B PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND SWAP1 SSTORE PUSH2 0x193E PUSH2 0x2B47 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP1 PUSH2 0x1980 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0xFA SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x19B5 DUP7 PUSH32 0x0 PUSH3 0xFFFFFF AND PUSH3 0xF4240 PUSH2 0x40BA JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x19EC DUP7 PUSH32 0x0 PUSH3 0xFFFFFF AND PUSH3 0xF4240 PUSH2 0x40BA JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x19F8 PUSH2 0x3BE5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1A04 PUSH2 0x3D2E JUMP JUMPDEST SWAP1 POP DUP9 ISZERO PUSH2 0x1A37 JUMPI PUSH2 0x1A37 PUSH32 0x0 DUP12 DUP12 PUSH2 0x3A97 JUMP JUMPDEST DUP8 ISZERO PUSH2 0x1A68 JUMPI PUSH2 0x1A68 PUSH32 0x0 DUP12 DUP11 PUSH2 0x3A97 JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xE9CBAFB0 DUP6 DUP6 DUP11 DUP11 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP6 POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1AEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1AFE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x0 PUSH2 0x1B0C PUSH2 0x3BE5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1B18 PUSH2 0x3D2E JUMP JUMPDEST SWAP1 POP DUP2 PUSH2 0x1B25 DUP6 DUP9 PUSH2 0x3D1E JUMP JUMPDEST GT ISZERO PUSH2 0x1B5D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x463 PUSH1 0xF4 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH2 0x1B68 DUP5 DUP8 PUSH2 0x3D1E JUMP JUMPDEST GT ISZERO PUSH2 0x1BA0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4631 PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP4 DUP3 SUB DUP4 DUP3 SUB DUP2 ISZERO PUSH2 0x1C2F JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0xE8 SHL SWAP1 DIV PUSH1 0xF AND SWAP1 DUP2 ISZERO PUSH2 0x1BD3 JUMPI DUP2 PUSH1 0xFF AND DUP5 DUP2 PUSH2 0x1BCD JUMPI INVALID JUMPDEST DIV PUSH2 0x1BD6 JUMP JUMPDEST PUSH1 0x0 JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND ISZERO PUSH2 0x1C09 JUMPI PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP3 AND DUP5 ADD AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT SWAP1 SWAP2 AND OR SWAP1 SSTORE JUMPDEST PUSH2 0x1C23 DUP2 DUP6 SUB PUSH1 0x1 PUSH1 0x80 SHL DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x322F JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE POP POP JUMPDEST DUP1 ISZERO PUSH2 0x1CBA JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0xE8 SHL SWAP1 DIV PUSH1 0x4 SHR PUSH1 0xF AND SWAP1 DUP2 ISZERO PUSH2 0x1C5F JUMPI DUP2 PUSH1 0xFF AND DUP4 DUP2 PUSH2 0x1C59 JUMPI INVALID JUMPDEST DIV PUSH2 0x1C62 JUMP JUMPDEST PUSH1 0x0 JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND ISZERO PUSH2 0x1C94 JUMPI PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP1 DUP4 DIV DUP3 AND DUP6 ADD DUP3 AND MUL SWAP2 AND OR SWAP1 SSTORE JUMPDEST PUSH2 0x1CAE DUP2 DUP5 SUB PUSH1 0x1 PUSH1 0x80 SHL DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x322F JUMP JUMPDEST PUSH1 0x2 DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE POP POP JUMPDEST DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xBDBDB71D7860376BA52B25A5028BEEA23581364A40522F6BCFB86BB1F2DCA633 DUP16 DUP16 DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND PUSH1 0x1 PUSH1 0xF0 SHL OR SWAP1 SSTORE POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1D87 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4C4F4B PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND DUP2 SSTORE PUSH2 0x1DA1 PUSH1 0x7 CALLER DUP10 DUP10 PUSH2 0x40F4 JUMP JUMPDEST PUSH1 0x3 DUP2 ADD SLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 DUP2 AND SWAP1 DUP7 AND GT PUSH2 0x1DC2 JUMPI DUP5 PUSH2 0x1DD1 JUMP JUMPDEST PUSH1 0x3 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND JUMPDEST PUSH1 0x3 DUP3 ADD SLOAD SWAP1 SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP2 DIV DUP2 AND SWAP1 DUP6 AND GT PUSH2 0x1DF9 JUMPI DUP4 PUSH2 0x1E0F JUMP JUMPDEST PUSH1 0x3 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND JUMPDEST SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP4 AND ISZERO PUSH2 0x1E74 JUMPI PUSH1 0x3 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP2 DUP3 AND DUP7 SWAP1 SUB DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH2 0x1E74 SWAP1 PUSH32 0x0 SWAP1 DUP11 SWAP1 DUP7 AND PUSH2 0x3A97 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 AND ISZERO PUSH2 0x1EDA JUMPI PUSH1 0x3 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP1 DUP4 DIV DUP3 AND DUP7 SWAP1 SUB DUP3 AND MUL SWAP2 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE PUSH2 0x1EDA SWAP1 PUSH32 0x0 SWAP1 DUP11 SWAP1 DUP6 AND PUSH2 0x3A97 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP7 AND PUSH1 0x20 DUP4 ADD MSTORE DUP5 AND DUP2 DUP4 ADD MSTORE SWAP1 MLOAD PUSH1 0x2 DUP9 DUP2 SIGNEXTEND SWAP3 SWAP1 DUP11 SWAP1 SIGNEXTEND SWAP2 CALLER SWAP2 PUSH32 0x70935338E69775456A85DDEF226C395FB668B63FA0115F5F20610B388E6CA9C0 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG4 POP PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND PUSH1 0x1 PUSH1 0xF0 SHL OR SWAP1 SSTORE SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 SWAP1 SWAP4 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP3 DUP4 AND SWAP4 SWAP2 SWAP3 DUP2 DUP2 AND SWAP2 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV AND DUP6 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2011 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4C4F4B PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x8DA5CB5B PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP2 PUSH4 0x8DA5CB5B SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x207E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2092 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x20A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x20BE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0xFF DUP3 AND ISZERO DUP1 PUSH2 0x20E1 JUMPI POP PUSH1 0x4 DUP3 PUSH1 0xFF AND LT ISZERO DUP1 ISZERO PUSH2 0x20E1 JUMPI POP PUSH1 0xA DUP3 PUSH1 0xFF AND GT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x210B JUMPI POP PUSH1 0xFF DUP2 AND ISZERO DUP1 PUSH2 0x210B JUMPI POP PUSH1 0x4 DUP2 PUSH1 0xFF AND LT ISZERO DUP1 ISZERO PUSH2 0x210B JUMPI POP PUSH1 0xA DUP2 PUSH1 0xFF AND GT ISZERO JUMPDEST PUSH2 0x2114 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFF0 PUSH1 0x4 DUP5 SWAP1 SHL AND DUP5 ADD PUSH1 0xFF SWAP1 DUP2 AND PUSH1 0x1 PUSH1 0xE8 SHL SWAP1 DUP2 MUL PUSH1 0xFF PUSH1 0xE8 SHL NOT DUP5 AND OR SWAP1 SWAP4 SSTORE SWAP2 SWAP1 DIV AND PUSH32 0x973D8D92BB299F4AF6CE49B52A8ADB85AE46B9F214C4C4FC06AC77401237B133 PUSH1 0x10 DUP3 PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP4 SWAP1 SWAP3 MOD DUP4 AND DUP3 MSTORE PUSH1 0xF PUSH1 0x4 DUP7 SWAP1 SHR AND PUSH1 0x20 DUP4 ADD MSTORE DUP7 DUP4 AND DUP3 DUP3 ADD MSTORE SWAP2 DUP6 AND PUSH1 0x60 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG1 POP POP PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND PUSH1 0x1 PUSH1 0xF0 SHL OR SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x21F8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4C4F4B PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0x8DA5CB5B PUSH1 0xE0 SHL DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP2 PUSH4 0x8DA5CB5B SWAP2 PUSH1 0x4 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2265 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2279 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x228F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x22A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 DUP2 AND SWAP1 DUP6 AND GT PUSH2 0x22C1 JUMPI DUP4 PUSH2 0x22CE JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND JUMPDEST PUSH1 0x3 SLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP2 DIV DUP2 AND SWAP1 DUP5 AND GT PUSH2 0x22F4 JUMPI DUP3 PUSH2 0x2308 JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 AND ISZERO PUSH2 0x2389 JUMPI PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP4 DUP2 AND SWAP2 AND EQ ISZERO PUSH2 0x2337 JUMPI PUSH1 0x0 NOT SWAP1 SWAP2 ADD SWAP1 JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP2 DUP3 AND DUP6 SWAP1 SUB DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH2 0x2389 SWAP1 PUSH32 0x0 SWAP1 DUP8 SWAP1 DUP6 AND PUSH2 0x3A97 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 AND ISZERO PUSH2 0x240F JUMPI PUSH1 0x3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 DUP2 AND PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP3 DIV AND EQ ISZERO PUSH2 0x23BA JUMPI PUSH1 0x0 NOT ADD JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB PUSH1 0x1 PUSH1 0x80 SHL DUP1 DUP4 DIV DUP3 AND DUP6 SWAP1 SUB DUP3 AND MUL SWAP2 DUP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE PUSH2 0x240F SWAP1 PUSH32 0x0 SWAP1 DUP8 SWAP1 DUP5 AND PUSH2 0x3A97 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP6 AND DUP3 MSTORE DUP4 AND PUSH1 0x20 DUP3 ADD MSTORE DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP3 CALLER SWAP3 PUSH32 0x596B573906218D3411850B26A6B437D6C4522FDB43D2D2386263F86D50B8B151 SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND PUSH1 0x1 PUSH1 0xF0 SHL OR SWAP1 SSTORE SWAP1 SWAP5 SWAP1 SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH2 0x2489 PUSH2 0x2B47 JUMP JUMPDEST PUSH2 0x2500 PUSH2 0x2494 PUSH2 0x2B7E JUMP JUMPDEST DUP6 DUP6 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD DUP3 SWAP1 MSTORE POP SLOAD PUSH1 0x4 SLOAD PUSH1 0x8 SWAP7 SWAP6 SWAP5 POP PUSH1 0x1 PUSH1 0xA0 SHL DUP3 DIV PUSH1 0x2 SIGNEXTEND SWAP4 POP PUSH2 0xFFFF PUSH1 0x1 PUSH1 0xB8 SHL DUP4 DIV DUP2 AND SWAP4 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP2 AND SWAP2 PUSH1 0x1 PUSH1 0xC8 SHL SWAP1 DIV AND PUSH2 0x4158 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD DUP2 SWAP1 PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x2552 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x4C4F4B PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND DUP2 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE CALLER DUP2 MSTORE PUSH1 0x2 DUP9 DUP2 SIGNEXTEND PUSH1 0x20 DUP4 ADD MSTORE DUP8 SWAP1 SIGNEXTEND SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 SWAP1 DUP2 SWAP1 PUSH2 0x25AB SWAP1 PUSH1 0x60 DUP2 ADD PUSH2 0x259E PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP11 AND PUSH2 0x3E69 JUMP JUMPDEST PUSH1 0x0 SUB PUSH1 0xF SIGNEXTEND SWAP1 MSTORE PUSH2 0x3E7A JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP DUP2 PUSH1 0x0 SUB SWAP5 POP DUP1 PUSH1 0x0 SUB SWAP4 POP PUSH1 0x0 DUP6 GT DUP1 PUSH2 0x25CC JUMPI POP PUSH1 0x0 DUP5 GT JUMPDEST ISZERO PUSH2 0x260B JUMPI PUSH1 0x3 DUP4 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 DUP3 AND DUP1 DUP10 ADD DUP3 AND PUSH1 0x1 PUSH1 0x80 SHL SWAP4 DUP5 SWAP1 DIV DUP4 AND DUP10 ADD SWAP1 SWAP3 AND SWAP1 SWAP3 MUL SWAP1 SWAP2 OR PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND OR SWAP1 SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP9 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP8 SWAP1 MSTORE DUP1 DUP3 ADD DUP7 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x2 DUP10 DUP2 SIGNEXTEND SWAP3 SWAP1 DUP12 SWAP1 SIGNEXTEND SWAP2 CALLER SWAP2 PUSH32 0xC396CD989A39F4459B5FA1AED6A9A8DCDBC45908ACFD67E028CD568DA98982C SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG4 POP POP PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF PUSH1 0xF0 SHL NOT AND PUSH1 0x1 PUSH1 0xF0 SHL OR SWAP1 SSTORE POP SWAP1 SWAP5 SWAP1 SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x268F PUSH2 0x2B47 JUMP JUMPDEST PUSH2 0x2699 DUP6 DUP6 PUSH2 0x42B2 JUMP JUMPDEST PUSH1 0x2 DUP6 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP8 DUP5 SIGNEXTEND SWAP1 SWAP4 SIGNEXTEND DUP3 MSTORE DUP2 KECCAK256 PUSH1 0x3 DUP4 ADD SLOAD PUSH1 0x6 DUP2 SWAP1 SIGNEXTEND SWAP4 PUSH1 0x1 PUSH1 0x38 SHL DUP3 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 DUP5 SWAP3 PUSH1 0x1 PUSH1 0xD8 SHL DUP2 DIV PUSH4 0xFFFFFFFF AND SWAP3 DUP5 SWAP3 SWAP1 SWAP2 PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 DIV PUSH1 0xFF AND DUP1 PUSH2 0x26FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 DUP3 ADD SLOAD PUSH1 0x6 DUP2 SWAP1 SIGNEXTEND SWAP9 POP PUSH1 0x1 PUSH1 0x38 SHL DUP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP7 POP PUSH1 0x1 PUSH1 0xD8 SHL DUP2 DIV PUSH4 0xFFFFFFFF AND SWAP5 POP PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 DIV PUSH1 0xFF AND DUP1 PUSH2 0x273E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0xE0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0xA0 SHL DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x20 DUP5 ADD DUP2 SWAP1 MSTORE PUSH2 0xFFFF PUSH1 0x1 PUSH1 0xB8 SHL DUP5 DIV DUP2 AND SWAP6 DUP6 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0x1 PUSH1 0xC8 SHL DUP4 DIV DUP6 AND PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0xD8 SHL DUP4 DIV SWAP1 SWAP5 AND PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xFF PUSH1 0x1 PUSH1 0xE8 SHL DUP4 DIV DUP2 AND PUSH1 0xA0 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 SWAP3 DIV SWAP1 SWAP2 AND ISZERO ISZERO PUSH1 0xC0 DUP4 ADD MSTORE SWAP1 SWAP4 POP DUP15 DUP2 SIGNEXTEND SWAP2 SWAP1 SIGNEXTEND SLT ISZERO SWAP1 POP PUSH2 0x27E7 JUMPI POP SWAP4 SWAP1 SWAP5 SUB SWAP7 POP SWAP1 SUB SWAP4 POP SWAP1 SUB SWAP1 POP PUSH2 0x286A JUMP JUMPDEST DUP11 PUSH1 0x2 SIGNEXTEND DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x2 SIGNEXTEND SLT ISZERO PUSH2 0x285B JUMPI PUSH1 0x0 PUSH2 0x2803 PUSH2 0x2B7E JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x4 SLOAD PUSH1 0x60 DUP7 ADD MLOAD SWAP4 SWAP5 POP PUSH1 0x0 SWAP4 DUP5 SWAP4 PUSH2 0x2839 SWAP4 PUSH1 0x8 SWAP4 DUP9 SWAP4 DUP8 SWAP4 SWAP3 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND SWAP1 PUSH2 0x32DF JUMP JUMPDEST SWAP11 SWAP1 SUB SWAP9 SWAP1 SWAP9 SUB SWAP12 POP POP SWAP5 SWAP1 SWAP7 SUB SWAP3 SWAP1 SWAP3 SUB SWAP7 POP SWAP1 SWAP2 SUB SUB SWAP3 POP PUSH2 0x286A SWAP2 POP POP JUMP JUMPDEST POP SWAP5 SWAP1 SWAP4 SUB SWAP7 POP SUB SWAP4 POP SWAP1 SUB SWAP1 POP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 SWAP1 SWAP4 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP4 AND SWAP4 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 SWAP4 DIV PUSH1 0xF SIGNEXTEND SWAP3 SWAP1 PUSH1 0x6 DUP2 SWAP1 SIGNEXTEND SWAP1 PUSH1 0x1 PUSH1 0x38 SHL DUP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH1 0x1 PUSH1 0xD8 SHL DUP2 DIV PUSH4 0xFFFFFFFF AND SWAP1 PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 DIV PUSH1 0xFF AND DUP9 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO PUSH2 0x29B4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4149 PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x29BF DUP3 PUSH2 0x35E1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x29D7 PUSH2 0x29CF PUSH2 0x2B7E JUMP JUMPDEST PUSH1 0x8 SWAP1 PUSH2 0x437B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xE0 DUP2 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP1 DUP3 MSTORE PUSH1 0x2 DUP9 DUP2 SIGNEXTEND PUSH1 0x20 DUP1 DUP6 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 DUP6 DUP8 ADD DUP2 SWAP1 MSTORE PUSH2 0xFFFF DUP10 DUP2 AND PUSH1 0x60 DUP9 ADD DUP2 SWAP1 MSTORE SWAP1 DUP10 AND PUSH1 0x80 DUP9 ADD DUP2 SWAP1 MSTORE PUSH1 0xA0 DUP9 ADD DUP4 SWAP1 MSTORE PUSH1 0x1 PUSH1 0xC0 SWAP1 SWAP9 ADD SWAP8 SWAP1 SWAP8 MSTORE DUP2 SLOAD PUSH1 0x1 PUSH1 0xF0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP2 AND DUP8 OR PUSH3 0xFFFFFF PUSH1 0xA0 SHL NOT AND PUSH1 0x1 PUSH1 0xA0 SHL PUSH3 0xFFFFFF SWAP8 DUP8 SWAP1 SIGNEXTEND SWAP8 SWAP1 SWAP8 AND SWAP7 SWAP1 SWAP7 MUL SWAP6 SWAP1 SWAP6 OR PUSH4 0xFFFFFFFF PUSH1 0xB8 SHL NOT AND PUSH1 0x1 PUSH1 0xC8 SHL SWAP1 SWAP2 MUL OR PUSH2 0xFFFF PUSH1 0xD8 SHL NOT AND PUSH1 0x1 PUSH1 0xD8 SHL SWAP1 SWAP7 MUL SWAP6 SWAP1 SWAP6 OR PUSH2 0xFFFF PUSH1 0xE8 SHL NOT AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP4 SSTORE DUP4 MLOAD SWAP2 DUP3 MSTORE DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP2 MLOAD SWAP4 SWAP6 POP SWAP2 SWAP4 POP PUSH32 0x98636036CB66A9C19A37435EFC1E90142190214E8ABEB821BDBA3F2990DD4C95 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x2 DUP2 SWAP1 SIGNEXTEND PUSH3 0xD89E7 NOT DUP2 PUSH2 0x2AF0 JUMPI INVALID JUMPDEST SDIV MUL SWAP1 POP PUSH1 0x0 DUP4 PUSH1 0x2 DUP2 SWAP1 SIGNEXTEND PUSH3 0xD89E8 DUP2 PUSH2 0x2B07 JUMPI INVALID JUMPDEST SDIV MUL SWAP1 POP PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND DUP4 DUP4 SUB PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x2B1E JUMPI INVALID JUMPDEST SDIV PUSH1 0x1 ADD SWAP1 POP DUP1 PUSH3 0xFFFFFF AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP1 AND DUP2 PUSH2 0x2B3B JUMPI INVALID JUMPDEST DIV SWAP4 POP POP POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x2B7C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST JUMP JUMPDEST TIMESTAMP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND DUP7 PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x2B96 JUMPI INVALID JUMPDEST SDIV SWAP1 POP PUSH1 0x0 DUP7 PUSH1 0x2 SIGNEXTEND SLT DUP1 ISZERO PUSH2 0x2BBD JUMPI POP DUP5 PUSH1 0x2 SIGNEXTEND DUP7 PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x2BB6 JUMPI INVALID JUMPDEST SMOD PUSH1 0x2 SIGNEXTEND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x2BC7 JUMPI PUSH1 0x0 NOT ADD JUMPDEST DUP4 ISZERO PUSH2 0x2C3C JUMPI PUSH1 0x0 DUP1 PUSH2 0x2BD9 DUP4 PUSH2 0x43C7 JUMP JUMPDEST PUSH1 0x1 DUP3 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP14 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF DUP4 AND SWAP2 SWAP1 SWAP2 SHL DUP1 ADD PUSH1 0x0 NOT ADD SWAP1 DUP2 AND DUP1 ISZERO ISZERO SWAP8 POP SWAP3 SWAP5 POP SWAP1 SWAP3 POP SWAP1 DUP6 PUSH2 0x2C1E JUMPI DUP9 DUP4 PUSH1 0xFF AND DUP7 SUB MUL PUSH2 0x2C31 JUMP JUMPDEST DUP9 PUSH2 0x2C28 DUP3 PUSH2 0x43D9 JUMP JUMPDEST DUP5 SUB PUSH1 0xFF AND DUP7 SUB MUL JUMPDEST SWAP7 POP POP POP POP POP PUSH2 0x2CBA JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2C4B DUP4 PUSH1 0x1 ADD PUSH2 0x43C7 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH1 0x1 DUP3 PUSH1 0xFF AND PUSH1 0x1 SWAP1 SHL SUB NOT SWAP1 POP PUSH1 0x0 DUP2 DUP12 PUSH1 0x0 DUP7 PUSH1 0x1 SIGNEXTEND PUSH1 0x1 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD AND SWAP1 POP DUP1 PUSH1 0x0 EQ ISZERO SWAP6 POP DUP6 PUSH2 0x2C9D JUMPI DUP9 DUP4 PUSH1 0xFF SUB PUSH1 0xFF AND DUP7 PUSH1 0x1 ADD ADD MUL PUSH2 0x2CB3 JUMP JUMPDEST DUP9 DUP4 PUSH2 0x2CA8 DUP4 PUSH2 0x4478 JUMP JUMPDEST SUB PUSH1 0xFF AND DUP7 PUSH1 0x1 ADD ADD MUL JUMPDEST SWAP7 POP POP POP POP POP JUMPDEST POP SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH1 0x2 SIGNEXTEND SLT PUSH2 0x2CDB JUMPI DUP3 PUSH1 0x2 SIGNEXTEND PUSH2 0x2CE3 JUMP JUMPDEST DUP3 PUSH1 0x2 SIGNEXTEND PUSH1 0x0 SUB JUMPDEST SWAP1 POP PUSH3 0xD89E8 DUP2 GT ISZERO PUSH2 0x2D21 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0xFA SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 AND PUSH2 0x2D35 JUMPI PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0x2D47 JUMP JUMPDEST PUSH16 0xFFFCB933BD6FAD37AA2D162D1A594001 JUMPDEST PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x2 DUP3 AND ISZERO PUSH2 0x2D7B JUMPI PUSH16 0xFFF97272373D413259A46990580E213A MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x4 DUP3 AND ISZERO PUSH2 0x2D9A JUMPI PUSH16 0xFFF2E50F5F656932EF12357CF3C7FDCC MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x8 DUP3 AND ISZERO PUSH2 0x2DB9 JUMPI PUSH16 0xFFE5CACA7E10E4E61C3624EAA0941CD0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x10 DUP3 AND ISZERO PUSH2 0x2DD8 JUMPI PUSH16 0xFFCB9843D60F6159C9DB58835C926644 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x20 DUP3 AND ISZERO PUSH2 0x2DF7 JUMPI PUSH16 0xFF973B41FA98C081472E6896DFB254C0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x40 DUP3 AND ISZERO PUSH2 0x2E16 JUMPI PUSH16 0xFF2EA16466C96A3843EC78B326B52861 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x80 DUP3 AND ISZERO PUSH2 0x2E35 JUMPI PUSH16 0xFE5DEE046A99A2A811C461F1969C3053 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x100 DUP3 AND ISZERO PUSH2 0x2E55 JUMPI PUSH16 0xFCBE86C7900A88AEDCFFC83B479AA3A4 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x200 DUP3 AND ISZERO PUSH2 0x2E75 JUMPI PUSH16 0xF987A7253AC413176F2B074CF7815E54 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x400 DUP3 AND ISZERO PUSH2 0x2E95 JUMPI PUSH16 0xF3392B0822B70005940C7A398E4B70F3 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x800 DUP3 AND ISZERO PUSH2 0x2EB5 JUMPI PUSH16 0xE7159475A2C29B7443B29C7FA6E889D9 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x1000 DUP3 AND ISZERO PUSH2 0x2ED5 JUMPI PUSH16 0xD097F3BDFD2022B8845AD8F792AA5825 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x2000 DUP3 AND ISZERO PUSH2 0x2EF5 JUMPI PUSH16 0xA9F746462D870FDF8A65DC1F90E061E5 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x4000 DUP3 AND ISZERO PUSH2 0x2F15 JUMPI PUSH16 0x70D869A156D2A1B890BB3DF62BAF32F7 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x8000 DUP3 AND ISZERO PUSH2 0x2F35 JUMPI PUSH16 0x31BE135F97D08FD981231505542FCFA6 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x10000 DUP3 AND ISZERO PUSH2 0x2F56 JUMPI PUSH16 0x9AA508B5B7A84E1C677DE54F3E99BC9 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x20000 DUP3 AND ISZERO PUSH2 0x2F76 JUMPI PUSH15 0x5D6AF8DEDB81196699C329225EE604 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x40000 DUP3 AND ISZERO PUSH2 0x2F95 JUMPI PUSH14 0x2216E584F5FA1EA926041BEDFE98 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x80000 DUP3 AND ISZERO PUSH2 0x2FB2 JUMPI PUSH12 0x48A170391F7DC42444E8FA2 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND SGT ISZERO PUSH2 0x2FCD JUMPI DUP1 PUSH1 0x0 NOT DUP2 PUSH2 0x2FC9 JUMPI INVALID JUMPDEST DIV SWAP1 POP JUMPDEST PUSH1 0x1 PUSH1 0x20 SHL DUP2 MOD ISZERO PUSH2 0x2FE0 JUMPI PUSH1 0x1 PUSH2 0x2FE3 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0xFF AND PUSH1 0x20 DUP3 SWAP1 SHR ADD SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP10 AND SWAP1 DUP11 AND LT ISZERO DUP2 DUP8 SLT DUP1 ISZERO SWAP1 PUSH2 0x307A JUMPI PUSH1 0x0 PUSH2 0x302E DUP10 DUP10 PUSH3 0xF4240 SUB PUSH3 0xFFFFFF AND PUSH3 0xF4240 PUSH2 0x322F JUMP JUMPDEST SWAP1 POP DUP3 PUSH2 0x3047 JUMPI PUSH2 0x3042 DUP13 DUP13 DUP13 PUSH1 0x1 PUSH2 0x4562 JUMP JUMPDEST PUSH2 0x3054 JUMP JUMPDEST PUSH2 0x3054 DUP12 DUP14 DUP13 PUSH1 0x1 PUSH2 0x45DD JUMP JUMPDEST SWAP6 POP DUP6 DUP2 LT PUSH2 0x3065 JUMPI DUP11 SWAP7 POP PUSH2 0x3074 JUMP JUMPDEST PUSH2 0x3071 DUP13 DUP12 DUP4 DUP7 PUSH2 0x4688 JUMP JUMPDEST SWAP7 POP JUMPDEST POP PUSH2 0x30C4 JUMP JUMPDEST DUP2 PUSH2 0x3091 JUMPI PUSH2 0x308C DUP12 DUP12 DUP12 PUSH1 0x0 PUSH2 0x45DD JUMP JUMPDEST PUSH2 0x309E JUMP JUMPDEST PUSH2 0x309E DUP11 DUP13 DUP12 PUSH1 0x0 PUSH2 0x4562 JUMP JUMPDEST SWAP4 POP DUP4 DUP9 PUSH1 0x0 SUB LT PUSH2 0x30B2 JUMPI DUP10 SWAP6 POP PUSH2 0x30C4 JUMP JUMPDEST PUSH2 0x30C1 DUP12 DUP11 DUP11 PUSH1 0x0 SUB DUP6 PUSH2 0x46D4 JUMP JUMPDEST SWAP6 POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 DUP2 AND SWAP1 DUP8 AND EQ DUP3 ISZERO PUSH2 0x3127 JUMPI DUP1 DUP1 ISZERO PUSH2 0x30E3 JUMPI POP DUP2 JUMPDEST PUSH2 0x30F9 JUMPI PUSH2 0x30F4 DUP8 DUP14 DUP13 PUSH1 0x1 PUSH2 0x45DD JUMP JUMPDEST PUSH2 0x30FB JUMP JUMPDEST DUP6 JUMPDEST SWAP6 POP DUP1 DUP1 ISZERO PUSH2 0x3108 JUMPI POP DUP2 ISZERO JUMPDEST PUSH2 0x311E JUMPI PUSH2 0x3119 DUP8 DUP14 DUP13 PUSH1 0x0 PUSH2 0x4562 JUMP JUMPDEST PUSH2 0x3120 JUMP JUMPDEST DUP5 JUMPDEST SWAP5 POP PUSH2 0x3171 JUMP JUMPDEST DUP1 DUP1 ISZERO PUSH2 0x3131 JUMPI POP DUP2 JUMPDEST PUSH2 0x3147 JUMPI PUSH2 0x3142 DUP13 DUP9 DUP13 PUSH1 0x1 PUSH2 0x4562 JUMP JUMPDEST PUSH2 0x3149 JUMP JUMPDEST DUP6 JUMPDEST SWAP6 POP DUP1 DUP1 ISZERO PUSH2 0x3156 JUMPI POP DUP2 ISZERO JUMPDEST PUSH2 0x316C JUMPI PUSH2 0x3167 DUP13 DUP9 DUP13 PUSH1 0x0 PUSH2 0x45DD JUMP JUMPDEST PUSH2 0x316E JUMP JUMPDEST DUP5 JUMPDEST SWAP5 POP JUMPDEST DUP2 ISZERO DUP1 ISZERO PUSH2 0x3181 JUMPI POP DUP9 PUSH1 0x0 SUB DUP6 GT JUMPDEST ISZERO PUSH2 0x318D JUMPI DUP9 PUSH1 0x0 SUB SWAP5 POP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x31AC JUMPI POP DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x31BB JUMPI DUP6 DUP10 SUB SWAP4 POP PUSH2 0x31D8 JUMP JUMPDEST PUSH2 0x31D5 DUP7 DUP10 PUSH3 0xFFFFFF AND DUP11 PUSH3 0xF4240 SUB PUSH3 0xFFFFFF AND PUSH2 0x40BA JUMP JUMPDEST SWAP4 POP JUMPDEST POP POP POP SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0xFF SHL DUP3 LT PUSH2 0x31F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 SGT ISZERO PUSH1 0x0 DUP4 SLT ISZERO EQ PUSH2 0x3213 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 DUP2 ADD DUP3 DUP2 SLT ISZERO PUSH1 0x0 DUP4 SLT ISZERO EQ PUSH2 0x3213 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH1 0x0 NOT DUP6 DUP8 MULMOD DUP7 DUP7 MUL SWAP3 POP DUP3 DUP2 LT SWAP1 DUP4 SWAP1 SUB SUB SWAP1 POP DUP1 PUSH2 0x3265 JUMPI PUSH1 0x0 DUP5 GT PUSH2 0x325A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP3 SWAP1 DIV SWAP1 POP PUSH2 0x32D8 JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0x3271 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP7 DUP9 MULMOD PUSH1 0x0 DUP7 DUP2 SUB DUP8 AND SWAP7 DUP8 SWAP1 DIV SWAP7 PUSH1 0x2 PUSH1 0x3 DUP10 MUL DUP2 XOR DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL SWAP1 SWAP2 SUB MUL SWAP2 DUP2 SWAP1 SUB DUP2 SWAP1 DIV PUSH1 0x1 ADD DUP7 DUP5 GT SWAP1 SWAP6 SUB SWAP5 SWAP1 SWAP5 MUL SWAP2 SWAP1 SWAP5 SUB SWAP3 SWAP1 SWAP3 DIV SWAP2 SWAP1 SWAP2 OR SWAP2 SWAP1 SWAP2 MUL SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH4 0xFFFFFFFF DUP8 AND PUSH2 0x3385 JUMPI PUSH1 0x0 DUP10 DUP7 PUSH2 0xFFFF AND PUSH2 0xFFFF DUP2 LT PUSH2 0x3300 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE SWAP2 SWAP1 SWAP3 ADD SLOAD PUSH4 0xFFFFFFFF DUP1 DUP3 AND DUP1 DUP5 MSTORE PUSH1 0x1 PUSH1 0x20 SHL DUP4 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x58 SHL DUP4 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP5 DUP5 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP2 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP4 ADD MSTORE SWAP1 SWAP3 POP DUP11 AND EQ PUSH2 0x3371 JUMPI PUSH2 0x336E DUP2 DUP11 DUP10 DUP9 PUSH2 0x4720 JUMP JUMPDEST SWAP1 POP JUMPDEST DUP1 PUSH1 0x20 ADD MLOAD DUP2 PUSH1 0x40 ADD MLOAD SWAP3 POP SWAP3 POP POP PUSH2 0x3465 JUMP JUMPDEST DUP7 DUP9 SUB PUSH1 0x0 DUP1 PUSH2 0x339A DUP13 DUP13 DUP6 DUP13 DUP13 DUP13 DUP13 PUSH2 0x47C3 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 PUSH1 0x0 ADD MLOAD PUSH4 0xFFFFFFFF AND DUP4 PUSH4 0xFFFFFFFF AND EQ ISZERO PUSH2 0x33CC JUMPI DUP2 PUSH1 0x20 ADD MLOAD DUP3 PUSH1 0x40 ADD MLOAD SWAP5 POP SWAP5 POP POP POP POP PUSH2 0x3465 JUMP JUMPDEST DUP1 MLOAD PUSH4 0xFFFFFFFF DUP5 DUP2 AND SWAP2 AND EQ ISZERO PUSH2 0x33F4 JUMPI DUP1 PUSH1 0x20 ADD MLOAD DUP2 PUSH1 0x40 ADD MLOAD SWAP5 POP SWAP5 POP POP POP POP PUSH2 0x3465 JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD PUSH1 0x20 DUP1 DUP6 ADD MLOAD SWAP1 DUP5 ADD MLOAD SWAP2 DUP4 SWAP1 SUB SWAP3 DUP7 SUB SWAP2 PUSH4 0xFFFFFFFF DUP1 DUP5 AND SWAP3 SWAP1 DUP6 AND SWAP2 SUB PUSH1 0x6 SIGNEXTEND DUP2 PUSH2 0x3422 JUMPI INVALID JUMPDEST SDIV MUL DUP5 PUSH1 0x20 ADD MLOAD ADD DUP3 PUSH4 0xFFFFFFFF AND DUP3 PUSH4 0xFFFFFFFF AND DUP7 PUSH1 0x40 ADD MLOAD DUP7 PUSH1 0x40 ADD MLOAD SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL DUP2 PUSH2 0x3454 JUMPI INVALID JUMPDEST DIV DUP6 PUSH1 0x40 ADD MLOAD ADD SWAP7 POP SWAP7 POP POP POP POP POP POP JUMPDEST SWAP8 POP SWAP8 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SWAP6 DUP7 SIGNEXTEND DUP7 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP8 SWAP1 SWAP8 MSTORE PUSH1 0x40 SWAP1 SWAP7 KECCAK256 PUSH1 0x1 DUP2 ADD DUP1 SLOAD SWAP1 SWAP6 SUB SWAP1 SWAP5 SSTORE SWAP4 DUP4 ADD DUP1 SLOAD SWAP1 SWAP3 SUB SWAP1 SWAP2 SSTORE PUSH1 0x3 DUP3 ADD DUP1 SLOAD PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0xD8 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x1 PUSH1 0x38 SHL DUP1 DUP6 DIV DUP3 AND SWAP1 SWAP7 SUB AND SWAP1 SWAP5 MUL PUSH1 0x1 PUSH1 0x38 SHL PUSH1 0x1 PUSH1 0xD8 SHL SUB NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR PUSH1 0x6 DUP2 DUP2 SIGNEXTEND SWAP1 SWAP7 SUB SWAP1 SWAP6 SIGNEXTEND PUSH7 0xFFFFFFFFFFFFFF AND PUSH7 0xFFFFFFFFFFFFFF NOT SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR DUP3 DUP2 DIV DUP6 AND SWAP1 SWAP6 SUB SWAP1 SWAP4 AND MUL PUSH4 0xFFFFFFFF PUSH1 0xD8 SHL NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SSTORE SLOAD PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0xF SIGNEXTEND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0xF SIGNEXTEND SLT ISZERO PUSH2 0x3590 JUMPI DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP3 PUSH1 0x0 SUB DUP5 SUB SWAP2 POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND LT PUSH2 0x358B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4C53 PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x3213 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP3 DUP5 ADD SWAP2 POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND LT ISZERO PUSH2 0x3213 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4C41 PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH5 0x1000276A3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND LT DUP1 ISZERO SWAP1 PUSH2 0x361D JUMPI POP PUSH20 0xFFFD8963EFD1FC6A506488495D951D5263988D26 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND LT JUMPDEST PUSH2 0x3652 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0xF9 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH5 0x100000000 PUSH1 0x1 PUSH1 0xC0 SHL SUB PUSH1 0x20 DUP4 SWAP1 SHL AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP2 GT PUSH1 0x7 SHL DUP2 DUP2 SHR PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT PUSH1 0x6 SHL SWAP1 DUP2 SHR PUSH4 0xFFFFFFFF DUP2 GT PUSH1 0x5 SHL SWAP1 DUP2 SHR PUSH2 0xFFFF DUP2 GT PUSH1 0x4 SHL SWAP1 DUP2 SHR PUSH1 0xFF DUP2 GT PUSH1 0x3 SWAP1 DUP2 SHL SWAP2 DUP3 SHR PUSH1 0xF DUP2 GT PUSH1 0x2 SHL SWAP1 DUP2 SHR SWAP2 DUP3 GT PUSH1 0x1 SWAP1 DUP2 SHL SWAP3 DUP4 SHR SWAP8 SWAP1 DUP9 GT SWAP7 OR SWAP1 SWAP5 OR SWAP1 SWAP3 OR OR SWAP1 SWAP2 OR OR OR PUSH1 0x80 DUP2 LT PUSH2 0x36E6 JUMPI PUSH1 0x7F DUP2 SUB DUP4 SWAP1 SHR SWAP2 POP PUSH2 0x36F0 JUMP JUMPDEST DUP1 PUSH1 0x7F SUB DUP4 SWAP1 SHL SWAP2 POP JUMPDEST SWAP1 DUP1 MUL PUSH1 0x7F DUP2 DUP2 SHR PUSH1 0xFF DUP4 DUP2 SHR SWAP2 SWAP1 SWAP2 SHR DUP1 MUL DUP1 DUP4 SHR DUP2 DUP4 SHR SHR DUP1 MUL DUP1 DUP5 SHR DUP2 DUP5 SHR SHR DUP1 MUL DUP1 DUP6 SHR DUP2 DUP6 SHR SHR DUP1 MUL DUP1 DUP7 SHR DUP2 DUP7 SHR SHR DUP1 MUL DUP1 DUP8 SHR DUP2 DUP8 SHR SHR DUP1 MUL DUP1 DUP9 SHR DUP2 DUP9 SHR SHR DUP1 MUL DUP1 DUP10 SHR DUP2 DUP10 SHR SHR DUP1 MUL DUP1 DUP11 SHR DUP2 DUP11 SHR SHR DUP1 MUL DUP1 DUP12 SHR DUP2 DUP12 SHR SHR DUP1 MUL DUP1 DUP13 SHR DUP2 DUP13 SHR SHR DUP1 MUL DUP1 DUP14 SHR DUP2 DUP14 SHR SHR DUP1 MUL DUP1 DUP15 SHR SWAP13 DUP2 SWAP1 SHR SWAP13 SWAP1 SWAP13 SHR DUP1 MUL SWAP13 DUP14 SWAP1 SHR SWAP15 SWAP14 PUSH1 0x7F NOT DUP16 ADD PUSH1 0x40 SHL PUSH1 0xC0 SWAP2 SWAP1 SWAP2 SHR PUSH8 0x8000000000000000 AND OR PUSH1 0xC1 SWAP12 SWAP1 SWAP12 SHR PUSH8 0x4000000000000000 AND SWAP11 SWAP1 SWAP11 OR PUSH1 0xC2 SWAP10 SWAP1 SWAP10 SHR PUSH8 0x2000000000000000 AND SWAP9 SWAP1 SWAP9 OR PUSH1 0xC3 SWAP8 SWAP1 SWAP8 SHR PUSH8 0x1000000000000000 AND SWAP7 SWAP1 SWAP7 OR PUSH1 0xC4 SWAP6 SWAP1 SWAP6 SHR PUSH8 0x800000000000000 AND SWAP5 SWAP1 SWAP5 OR PUSH1 0xC5 SWAP4 SWAP1 SWAP4 SHR PUSH8 0x400000000000000 AND SWAP3 SWAP1 SWAP3 OR PUSH1 0xC6 SWAP2 SWAP1 SWAP2 SHR PUSH8 0x200000000000000 AND OR PUSH1 0xC7 SWAP2 SWAP1 SWAP2 SHR PUSH1 0x1 PUSH1 0x38 SHL AND OR PUSH1 0xC8 SWAP2 SWAP1 SWAP2 SHR PUSH7 0x80000000000000 AND OR PUSH1 0xC9 SWAP2 SWAP1 SWAP2 SHR PUSH7 0x40000000000000 AND OR PUSH1 0xCA SWAP2 SWAP1 SWAP2 SHR PUSH7 0x20000000000000 AND OR PUSH1 0xCB SWAP2 SWAP1 SWAP2 SHR PUSH7 0x10000000000000 AND OR PUSH1 0xCC SWAP2 SWAP1 SWAP2 SHR PUSH7 0x8000000000000 AND OR PUSH1 0xCD SWAP2 SWAP1 SWAP2 SHR PUSH7 0x4000000000000 AND OR PUSH10 0x3627A301D71055774C85 DUP2 MUL PUSH16 0x28F6481AB7F045A5AF012A19D003AA9 NOT DUP2 ADD PUSH1 0x80 SWAP1 DUP2 SAR SWAP1 PUSH16 0xDB2DF09E81959A81455E260799A0632F DUP4 ADD SWAP1 SAR PUSH1 0x2 DUP2 DUP2 SIGNEXTEND SWAP1 DUP4 SWAP1 SIGNEXTEND EQ PUSH2 0x38ED JUMPI DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x38D1 DUP3 PUSH2 0x2CC4 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x38E6 JUMPI DUP2 PUSH2 0x38E8 JUMP JUMPDEST DUP1 JUMPDEST PUSH2 0x38EF JUMP JUMPDEST DUP2 JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP10 DUP10 PUSH2 0xFFFF AND PUSH2 0xFFFF DUP2 LT PUSH2 0x3912 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE SWAP2 SWAP1 SWAP3 ADD SLOAD PUSH4 0xFFFFFFFF DUP1 DUP3 AND DUP1 DUP5 MSTORE PUSH1 0x1 PUSH1 0x20 SHL DUP4 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x1 PUSH1 0x58 SHL DUP4 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP5 DUP5 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP2 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP4 ADD MSTORE SWAP1 SWAP3 POP DUP10 AND EQ ISZERO PUSH2 0x3981 JUMPI DUP9 DUP6 SWAP3 POP SWAP3 POP POP PUSH2 0x3465 JUMP JUMPDEST DUP5 PUSH2 0xFFFF AND DUP5 PUSH2 0xFFFF AND GT DUP1 ISZERO PUSH2 0x39A2 JUMPI POP PUSH1 0x1 DUP6 SUB PUSH2 0xFFFF AND DUP10 PUSH2 0xFFFF AND EQ JUMPDEST ISZERO PUSH2 0x39AF JUMPI DUP4 SWAP2 POP PUSH2 0x39B3 JUMP JUMPDEST DUP5 SWAP2 POP JUMPDEST DUP2 PUSH2 0xFFFF AND DUP10 PUSH1 0x1 ADD PUSH2 0xFFFF AND DUP2 PUSH2 0x39C7 JUMPI INVALID JUMPDEST MOD SWAP3 POP PUSH2 0x39D6 DUP2 DUP10 DUP10 DUP10 PUSH2 0x4720 JUMP JUMPDEST DUP11 DUP5 PUSH2 0xFFFF AND PUSH2 0xFFFF DUP2 LT PUSH2 0x39E7 JUMPI INVALID JUMPDEST DUP3 MLOAD SWAP2 ADD DUP1 SLOAD PUSH1 0x20 DUP5 ADD MLOAD PUSH1 0x40 DUP6 ADD MLOAD PUSH1 0x60 SWAP1 SWAP6 ADD MLOAD ISZERO ISZERO PUSH1 0x1 PUSH1 0xF8 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP7 AND PUSH1 0x1 PUSH1 0x58 SHL MUL PUSH32 0xFF0000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFF PUSH1 0x6 SWAP4 SWAP1 SWAP4 SIGNEXTEND PUSH7 0xFFFFFFFFFFFFFF AND PUSH1 0x1 PUSH1 0x20 SHL MUL PUSH11 0xFFFFFFFFFFFFFF00000000 NOT PUSH4 0xFFFFFFFF SWAP1 SWAP8 AND PUSH4 0xFFFFFFFF NOT SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 OR SWAP6 SWAP1 SWAP6 AND SWAP3 SWAP1 SWAP3 OR AND SWAP3 SWAP1 SWAP3 OR SWAP3 SWAP1 SWAP3 AND OR SWAP1 SSTORE POP SWAP8 POP SWAP8 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP4 MSTORE PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0xA9059CBB PUSH1 0xE0 SHL OR DUP2 MSTORE SWAP3 MLOAD DUP3 MLOAD PUSH1 0x0 SWAP5 DUP6 SWAP5 SWAP4 DUP10 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x3B13 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x3AF4 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3B75 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3B7A JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x3BA8 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x3BA8 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3BA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x3BDE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x2A23 PUSH1 0xF1 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD ADDRESS PUSH1 0x24 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x70A08231 PUSH1 0xE0 SHL OR DUP2 MSTORE SWAP2 MLOAD DUP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 DUP5 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x3C7E JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x3C5F JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3CDE JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3CE3 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x3CF7 JUMPI POP PUSH1 0x20 DUP2 MLOAD LT ISZERO JUMPDEST PUSH2 0x3D00 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3D15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 POP POP POP SWAP1 JUMP JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0x3213 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD ADDRESS PUSH1 0x24 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x70A08231 PUSH1 0xE0 SHL OR DUP2 MSTORE SWAP2 MLOAD DUP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 DUP5 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 PUSH1 0x20 DUP4 LT PUSH2 0x3C7E JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x3C5F JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH2 0xFFFF AND GT PUSH2 0x3E04 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x49 PUSH1 0xF8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP3 PUSH2 0xFFFF AND DUP3 PUSH2 0xFFFF AND GT PUSH2 0x3E1A JUMPI POP DUP2 PUSH2 0x32D8 JUMP JUMPDEST DUP3 JUMPDEST DUP3 PUSH2 0xFFFF AND DUP2 PUSH2 0xFFFF AND LT ISZERO PUSH2 0x3E60 JUMPI PUSH1 0x1 DUP6 DUP3 PUSH2 0xFFFF AND PUSH2 0xFFFF DUP2 LT PUSH2 0x3E3F JUMPI INVALID JUMPDEST ADD DUP1 SLOAD PUSH4 0xFFFFFFFF NOT AND PUSH4 0xFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x1 ADD PUSH2 0x3E1C JUMP JUMPDEST POP SWAP1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 PUSH1 0xF DUP2 SWAP1 SIGNEXTEND DUP2 EQ PUSH2 0x2B42 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x3E87 PUSH2 0x2B47 JUMP JUMPDEST PUSH2 0x3E99 DUP5 PUSH1 0x20 ADD MLOAD DUP6 PUSH1 0x40 ADD MLOAD PUSH2 0x42B2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xE0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0xA0 SHL DUP2 DIV PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP1 DUP5 ADD DUP3 SWAP1 MSTORE PUSH2 0xFFFF PUSH1 0x1 PUSH1 0xB8 SHL DUP5 DIV DUP2 AND DUP6 DUP8 ADD MSTORE PUSH1 0x1 PUSH1 0xC8 SHL DUP5 DIV DUP2 AND PUSH1 0x60 DUP1 DUP8 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0xD8 SHL DUP6 DIV SWAP1 SWAP2 AND PUSH1 0x80 DUP7 ADD MSTORE PUSH1 0xFF PUSH1 0x1 PUSH1 0xE8 SHL DUP6 DIV DUP2 AND PUSH1 0xA0 DUP8 ADD MSTORE PUSH1 0x1 PUSH1 0xF0 SHL SWAP1 SWAP5 DIV SWAP1 SWAP4 AND ISZERO ISZERO PUSH1 0xC0 DUP6 ADD MSTORE DUP9 MLOAD SWAP1 DUP10 ADD MLOAD SWAP5 DUP10 ADD MLOAD SWAP3 DUP10 ADD MLOAD SWAP4 SWAP5 PUSH2 0x3F3D SWAP5 SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 SWAP1 PUSH2 0x49BD JUMP JUMPDEST SWAP4 POP DUP5 PUSH1 0x60 ADD MLOAD PUSH1 0xF SIGNEXTEND PUSH1 0x0 EQ PUSH2 0x40B2 JUMPI DUP5 PUSH1 0x20 ADD MLOAD PUSH1 0x2 SIGNEXTEND DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x2 SIGNEXTEND SLT ISZERO PUSH2 0x3F92 JUMPI PUSH2 0x3F8B PUSH2 0x3F74 DUP7 PUSH1 0x20 ADD MLOAD PUSH2 0x2CC4 JUMP JUMPDEST PUSH2 0x3F81 DUP8 PUSH1 0x40 ADD MLOAD PUSH2 0x2CC4 JUMP JUMPDEST DUP8 PUSH1 0x60 ADD MLOAD PUSH2 0x4B72 JUMP JUMPDEST SWAP3 POP PUSH2 0x40B2 JUMP JUMPDEST DUP5 PUSH1 0x40 ADD MLOAD PUSH1 0x2 SIGNEXTEND DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x2 SIGNEXTEND SLT ISZERO PUSH2 0x4088 JUMPI PUSH1 0x4 SLOAD PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH2 0x3FE4 SWAP1 PUSH2 0x3FC8 PUSH2 0x2B7E JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x60 DUP7 ADD MLOAD PUSH1 0x80 DUP8 ADD MLOAD PUSH1 0x8 SWAP5 SWAP4 SWAP3 SWAP2 DUP8 SWAP2 PUSH2 0x38FC JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0xFFFF PUSH1 0xC8 SHL NOT AND PUSH1 0x1 PUSH1 0xC8 SHL PUSH2 0xFFFF SWAP4 DUP5 AND MUL OR PUSH2 0xFFFF PUSH1 0xB8 SHL NOT AND PUSH1 0x1 PUSH1 0xB8 SHL SWAP4 SWAP1 SWAP3 AND SWAP3 SWAP1 SWAP3 MUL OR SWAP1 SSTORE DUP2 MLOAD PUSH1 0x40 DUP8 ADD MLOAD PUSH2 0x4034 SWAP2 SWAP1 PUSH2 0x402A SWAP1 PUSH2 0x2CC4 JUMP JUMPDEST DUP9 PUSH1 0x60 ADD MLOAD PUSH2 0x4B72 JUMP JUMPDEST SWAP4 POP PUSH2 0x4052 PUSH2 0x4046 DUP8 PUSH1 0x20 ADD MLOAD PUSH2 0x2CC4 JUMP JUMPDEST DUP4 MLOAD PUSH1 0x60 DUP10 ADD MLOAD PUSH2 0x4BB6 JUMP JUMPDEST SWAP3 POP PUSH2 0x4062 DUP2 DUP8 PUSH1 0x60 ADD MLOAD PUSH2 0x352B JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP PUSH2 0x40B2 JUMP JUMPDEST PUSH2 0x40AF PUSH2 0x4098 DUP7 PUSH1 0x20 ADD MLOAD PUSH2 0x2CC4 JUMP JUMPDEST PUSH2 0x40A5 DUP8 PUSH1 0x40 ADD MLOAD PUSH2 0x2CC4 JUMP JUMPDEST DUP8 PUSH1 0x60 ADD MLOAD PUSH2 0x4BB6 JUMP JUMPDEST SWAP2 POP JUMPDEST POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x40C7 DUP5 DUP5 DUP5 PUSH2 0x322F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 DUP1 PUSH2 0x40D3 JUMPI INVALID JUMPDEST DUP5 DUP7 MULMOD GT ISZERO PUSH2 0x32D8 JUMPI PUSH1 0x0 NOT DUP2 LT PUSH2 0x40EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 SWAP5 SWAP1 SWAP5 SHL PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP1 DUP7 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x2 SWAP4 DUP5 SIGNEXTEND PUSH1 0xE8 SWAP1 DUP2 SHL PUSH1 0x34 DUP8 ADD MSTORE SWAP3 SWAP1 SWAP4 SIGNEXTEND SWAP1 SWAP2 SHL PUSH1 0x37 DUP5 ADD MSTORE DUP1 MLOAD DUP1 DUP5 SUB PUSH1 0x1A ADD DUP2 MSTORE PUSH1 0x3A SWAP1 SWAP4 ADD DUP2 MSTORE DUP3 MLOAD SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 KECCAK256 PUSH1 0x0 SWAP1 DUP2 MSTORE SWAP3 SWAP1 MSTORE SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x0 DUP4 PUSH2 0xFFFF AND GT PUSH2 0x4198 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x49 PUSH1 0xF8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP7 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x41B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x41DA JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP2 POP DUP7 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x41F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x421F JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP8 MLOAD DUP2 LT ISZERO PUSH2 0x42A5 JUMPI PUSH2 0x4250 DUP11 DUP11 DUP11 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x423F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP11 DUP11 DUP11 DUP11 PUSH2 0x32DF JUMP JUMPDEST DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x425C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x426F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE POP DUP3 PUSH1 0x6 SIGNEXTEND PUSH1 0x6 SIGNEXTEND DUP2 MSTORE POP POP POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x4225 JUMP JUMPDEST POP SWAP8 POP SWAP8 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x2 SIGNEXTEND DUP3 PUSH1 0x2 SIGNEXTEND SLT PUSH2 0x42F2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x544C55 PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH3 0xD89E7 NOT PUSH1 0x2 DUP4 SWAP1 SIGNEXTEND SLT ISZERO PUSH2 0x4335 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x544C4D PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH3 0xD89E8 PUSH1 0x2 DUP3 SWAP1 SIGNEXTEND SGT ISZERO PUSH2 0x4377 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x54554D PUSH1 0xE8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE PUSH4 0xFFFFFFFF SWAP3 DUP4 AND DUP1 DUP3 MSTORE PUSH1 0x0 PUSH1 0x20 DUP4 ADD DUP2 SWAP1 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0x60 SWAP1 SWAP2 ADD DUP2 SWAP1 MSTORE DUP4 SLOAD PUSH4 0xFFFFFFFF NOT AND SWAP1 SWAP2 OR SWAP1 SWAP2 AND PUSH1 0x1 PUSH1 0xF8 SHL OR SWAP1 SWAP2 SSTORE SWAP1 DUP2 SWAP1 JUMP JUMPDEST PUSH1 0x2 SIGNEXTEND PUSH1 0x8 DUP2 SWAP1 SAR SWAP2 PUSH2 0x100 SWAP1 SWAP2 SMOD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0x43E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x80 SHL DUP3 LT PUSH2 0x43FA JUMPI PUSH1 0x80 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH9 0x10000000000000000 DUP3 LT PUSH2 0x4412 JUMPI PUSH1 0x40 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x1 PUSH1 0x20 SHL DUP3 LT PUSH2 0x4425 JUMPI PUSH1 0x20 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH3 0x10000 DUP3 LT PUSH2 0x4437 JUMPI PUSH1 0x10 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH2 0x100 DUP3 LT PUSH2 0x4448 JUMPI PUSH1 0x8 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x10 DUP3 LT PUSH2 0x4458 JUMPI PUSH1 0x4 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x4 DUP3 LT PUSH2 0x4468 JUMPI PUSH1 0x2 SWAP2 DUP3 SHR SWAP2 ADD JUMPDEST PUSH1 0x2 DUP3 LT PUSH2 0x2B42 JUMPI PUSH1 0x1 ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0x4486 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xFF PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 AND ISZERO PUSH2 0x44A1 JUMPI PUSH1 0x7F NOT ADD PUSH2 0x44A9 JUMP JUMPDEST PUSH1 0x80 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP3 AND ISZERO PUSH2 0x44C2 JUMPI PUSH1 0x3F NOT ADD PUSH2 0x44CA JUMP JUMPDEST PUSH1 0x40 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH4 0xFFFFFFFF DUP3 AND ISZERO PUSH2 0x44DF JUMPI PUSH1 0x1F NOT ADD PUSH2 0x44E7 JUMP JUMPDEST PUSH1 0x20 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH2 0xFFFF DUP3 AND ISZERO PUSH2 0x44FA JUMPI PUSH1 0xF NOT ADD PUSH2 0x4502 JUMP JUMPDEST PUSH1 0x10 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0xFF DUP3 AND ISZERO PUSH2 0x4514 JUMPI PUSH1 0x7 NOT ADD PUSH2 0x451C JUMP JUMPDEST PUSH1 0x8 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0xF DUP3 AND ISZERO PUSH2 0x452E JUMPI PUSH1 0x3 NOT ADD PUSH2 0x4536 JUMP JUMPDEST PUSH1 0x4 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0x3 DUP3 AND ISZERO PUSH2 0x4548 JUMPI PUSH1 0x1 NOT ADD PUSH2 0x4550 JUMP JUMPDEST PUSH1 0x2 DUP3 SWAP1 SHR SWAP2 POP JUMPDEST PUSH1 0x1 DUP3 AND ISZERO PUSH2 0x2B42 JUMPI PUSH1 0x0 NOT ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x4582 JUMPI SWAP3 SWAP4 SWAP3 JUMPDEST DUP2 PUSH2 0x45AF JUMPI PUSH2 0x45AA DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP7 DUP7 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x60 SHL PUSH2 0x322F JUMP JUMPDEST PUSH2 0x45D2 JUMP JUMPDEST PUSH2 0x45D2 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP7 DUP7 SUB PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x60 SHL PUSH2 0x40BA JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT ISZERO PUSH2 0x45FD JUMPI SWAP3 SWAP4 SWAP3 JUMPDEST PUSH1 0x1 PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH1 0x60 DUP5 SWAP1 SHL AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP7 SUB DUP2 AND SWAP1 DUP8 AND PUSH2 0x4627 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 PUSH2 0x4657 JUMPI DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x464A DUP4 DUP4 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x322F JUMP JUMPDEST DUP2 PUSH2 0x4651 JUMPI INVALID JUMPDEST DIV PUSH2 0x467D JUMP JUMPDEST PUSH2 0x467D PUSH2 0x466E DUP4 DUP4 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x40BA JUMP JUMPDEST DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x4BE5 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0x469F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT PUSH2 0x46B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH2 0x46C7 JUMPI PUSH2 0x45AA DUP6 DUP6 DUP6 PUSH1 0x1 PUSH2 0x4BF0 JUMP JUMPDEST PUSH2 0x45D2 DUP6 DUP6 DUP6 PUSH1 0x1 PUSH2 0x4CD1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0x46EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT PUSH2 0x4701 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH2 0x4713 JUMPI PUSH2 0x45AA DUP6 DUP6 DUP6 PUSH1 0x0 PUSH2 0x4CD1 JUMP JUMPDEST PUSH2 0x45D2 DUP6 DUP6 DUP6 PUSH1 0x0 PUSH2 0x4BF0 JUMP JUMPDEST PUSH2 0x4728 PUSH2 0x54F1 JUMP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0x0 ADD MLOAD DUP6 SUB SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 DUP7 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH4 0xFFFFFFFF AND DUP7 PUSH1 0x2 SIGNEXTEND MUL DUP9 PUSH1 0x20 ADD MLOAD ADD PUSH1 0x6 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT PUSH2 0x477C JUMPI PUSH1 0x1 PUSH2 0x477E JUMP JUMPDEST DUP5 JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH4 0xFFFFFFFF PUSH1 0x80 SHL PUSH1 0x80 DUP6 SWAP1 SHL AND DUP2 PUSH2 0x479C JUMPI INVALID JUMPDEST DIV DUP9 PUSH1 0x40 ADD MLOAD ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 ISZERO ISZERO DUP2 MSTORE POP SWAP2 POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x47CB PUSH2 0x54F1 JUMP JUMPDEST PUSH2 0x47D3 PUSH2 0x54F1 JUMP JUMPDEST DUP9 DUP6 PUSH2 0xFFFF AND PUSH2 0xFFFF DUP2 LT PUSH2 0x47E4 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE SWAP2 SWAP1 SWAP3 ADD SLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP1 DUP4 MSTORE PUSH1 0x1 PUSH1 0x20 SHL DUP3 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x58 SHL DUP3 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP4 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP3 ADD MSTORE SWAP3 POP PUSH2 0x4848 SWAP1 DUP10 SWAP1 DUP10 PUSH2 0x4DB4 JUMP JUMPDEST ISZERO PUSH2 0x4880 JUMPI DUP7 PUSH4 0xFFFFFFFF AND DUP3 PUSH1 0x0 ADD MLOAD PUSH4 0xFFFFFFFF AND EQ ISZERO PUSH2 0x486A JUMPI PUSH2 0x3465 JUMP JUMPDEST DUP2 PUSH2 0x4877 DUP4 DUP10 DUP10 DUP9 PUSH2 0x4720 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x3465 JUMP JUMPDEST DUP9 DUP4 PUSH2 0xFFFF AND DUP7 PUSH1 0x1 ADD PUSH2 0xFFFF AND DUP2 PUSH2 0x4895 JUMPI INVALID JUMPDEST MOD PUSH2 0xFFFF AND PUSH2 0xFFFF DUP2 LT PUSH2 0x48A5 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE SWAP3 SWAP1 SWAP2 ADD SLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0x20 SHL DUP2 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x1 PUSH1 0x58 SHL DUP3 DIV AND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xFF PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP2 DIV AND ISZERO ISZERO PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE SWAP1 SWAP3 POP PUSH2 0x495A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE DUP11 SLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP3 MSTORE PUSH1 0x1 PUSH1 0x20 SHL DUP2 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x58 SHL DUP2 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP2 DIV PUSH1 0xFF AND ISZERO ISZERO PUSH1 0x60 DUP3 ADD MSTORE SWAP2 POP JUMPDEST PUSH2 0x4969 DUP9 DUP4 PUSH1 0x0 ADD MLOAD DUP10 PUSH2 0x4DB4 JUMP JUMPDEST PUSH2 0x49A0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3 PUSH1 0x24 DUP3 ADD MSTORE PUSH3 0x13D311 PUSH1 0xEA SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x49AD DUP10 DUP10 DUP10 DUP9 DUP8 PUSH2 0x4E75 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP8 POP SWAP8 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x49CC PUSH1 0x7 DUP8 DUP8 DUP8 PUSH2 0x40F4 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x2 SLOAD SWAP2 SWAP3 POP SWAP1 PUSH1 0x0 DUP1 PUSH1 0xF DUP8 SWAP1 SIGNEXTEND ISZERO PUSH2 0x4B12 JUMPI PUSH1 0x0 PUSH2 0x49ED PUSH2 0x2B7E JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x4 SLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 DUP3 SWAP2 PUSH2 0x4A37 SWAP2 PUSH1 0x8 SWAP2 DUP7 SWAP2 DUP6 SWAP2 PUSH1 0x1 PUSH1 0xA0 SHL DUP2 DIV PUSH1 0x2 SIGNEXTEND SWAP2 PUSH2 0xFFFF PUSH1 0x1 PUSH1 0xB8 SHL DUP4 DIV DUP2 AND SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH1 0x1 PUSH1 0xC8 SHL SWAP1 DIV AND PUSH2 0x32DF JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x4A71 PUSH1 0x5 DUP14 DUP12 DUP14 DUP12 DUP12 DUP8 DUP10 DUP12 PUSH1 0x0 PUSH32 0x0 PUSH2 0x5013 JUMP JUMPDEST SWAP5 POP PUSH2 0x4AA8 PUSH1 0x5 DUP13 DUP12 DUP14 DUP12 DUP12 DUP8 DUP10 DUP12 PUSH1 0x1 PUSH32 0x0 PUSH2 0x5013 JUMP JUMPDEST SWAP4 POP DUP5 ISZERO PUSH2 0x4ADC JUMPI PUSH2 0x4ADC PUSH1 0x6 DUP14 PUSH32 0x0 PUSH2 0x51CC JUMP JUMPDEST DUP4 ISZERO PUSH2 0x4B0E JUMPI PUSH2 0x4B0E PUSH1 0x6 DUP13 PUSH32 0x0 PUSH2 0x51CC JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x4B24 PUSH1 0x5 DUP13 DUP13 DUP12 DUP11 DUP11 PUSH2 0x5232 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x4B35 DUP8 DUP11 DUP5 DUP5 PUSH2 0x52DE JUMP JUMPDEST PUSH1 0x0 DUP10 PUSH1 0xF SIGNEXTEND SLT ISZERO PUSH2 0x4B63 JUMPI DUP4 ISZERO PUSH2 0x4B52 JUMPI PUSH2 0x4B52 PUSH1 0x5 DUP13 PUSH2 0x5473 JUMP JUMPDEST DUP3 ISZERO PUSH2 0x4B63 JUMPI PUSH2 0x4B63 PUSH1 0x5 DUP12 PUSH2 0x5473 JUMP JUMPDEST POP POP POP POP POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0xF SIGNEXTEND SLT PUSH2 0x4B98 JUMPI PUSH2 0x4B93 PUSH2 0x4B8E DUP6 DUP6 DUP6 PUSH1 0x1 PUSH2 0x45DD JUMP JUMPDEST PUSH2 0x31E7 JUMP JUMPDEST PUSH2 0x45D5 JUMP JUMPDEST PUSH2 0x4BAB PUSH2 0x4B8E DUP6 DUP6 DUP6 PUSH1 0x0 SUB PUSH1 0x0 PUSH2 0x45DD JUMP JUMPDEST PUSH1 0x0 SUB SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0xF SIGNEXTEND SLT PUSH2 0x4BD2 JUMPI PUSH2 0x4B93 PUSH2 0x4B8E DUP6 DUP6 DUP6 PUSH1 0x1 PUSH2 0x4562 JUMP JUMPDEST PUSH2 0x4BAB PUSH2 0x4B8E DUP6 DUP6 DUP6 PUSH1 0x0 SUB PUSH1 0x0 PUSH2 0x4562 JUMP JUMPDEST DUP1 DUP3 DIV SWAP2 MOD ISZERO ISZERO ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO PUSH2 0x4C63 JUMPI PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 GT ISZERO PUSH2 0x4C26 JUMPI PUSH2 0x4C21 DUP5 PUSH1 0x1 PUSH1 0x60 SHL DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x322F JUMP JUMPDEST PUSH2 0x4C3E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP6 AND PUSH1 0x60 DUP6 SWAP1 SHL DUP2 PUSH2 0x4C3C JUMPI INVALID JUMPDEST DIV JUMPDEST SWAP1 POP PUSH2 0x4C5B PUSH2 0x4C56 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND DUP4 PUSH2 0x3D1E JUMP JUMPDEST PUSH2 0x549F JUMP JUMPDEST SWAP2 POP POP PUSH2 0x45D5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 GT ISZERO PUSH2 0x4C91 JUMPI PUSH2 0x4C8C DUP5 PUSH1 0x1 PUSH1 0x60 SHL DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x40BA JUMP JUMPDEST PUSH2 0x4CA8 JUMP JUMPDEST PUSH2 0x4CA8 PUSH1 0x60 DUP6 SWAP1 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP8 AND PUSH2 0x4BE5 JUMP JUMPDEST SWAP1 POP DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND GT PUSH2 0x4CBF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SUB SWAP1 POP PUSH2 0x45D5 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x4CDF JUMPI POP DUP4 PUSH2 0x45D5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0xE0 SHL SUB PUSH1 0x60 DUP6 SWAP1 SHL AND DUP3 ISZERO PUSH2 0x4D6D JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 DUP2 MUL SWAP1 DUP6 DUP3 DUP2 PUSH2 0x4D0D JUMPI INVALID JUMPDEST DIV EQ ISZERO PUSH2 0x4D3E JUMPI DUP2 DUP2 ADD DUP3 DUP2 LT PUSH2 0x4D3C JUMPI PUSH2 0x4D32 DUP4 DUP10 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH2 0x40BA JUMP JUMPDEST SWAP4 POP POP POP POP PUSH2 0x45D5 JUMP JUMPDEST POP JUMPDEST PUSH2 0x4D64 DUP3 PUSH2 0x4D5F DUP8 DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 DUP2 PUSH2 0x4D58 JUMPI INVALID JUMPDEST DIV SWAP1 PUSH2 0x3D1E JUMP JUMPDEST PUSH2 0x4BE5 JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x45D5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP5 DUP2 MUL SWAP1 DUP6 DUP3 DUP2 PUSH2 0x4D84 JUMPI INVALID JUMPDEST DIV EQ DUP1 ISZERO PUSH2 0x4D91 JUMPI POP DUP1 DUP3 GT JUMPDEST PUSH2 0x4D9A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 DUP3 SUB PUSH2 0x4D32 PUSH2 0x4C56 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP5 PUSH2 0x40BA JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH4 0xFFFFFFFF AND DUP4 PUSH4 0xFFFFFFFF AND GT ISZERO DUP1 ISZERO PUSH2 0x4DDE JUMPI POP DUP4 PUSH4 0xFFFFFFFF AND DUP3 PUSH4 0xFFFFFFFF AND GT ISZERO JUMPDEST ISZERO PUSH2 0x4DFA JUMPI DUP2 PUSH4 0xFFFFFFFF AND DUP4 PUSH4 0xFFFFFFFF AND GT ISZERO SWAP1 POP PUSH2 0x32D8 JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH4 0xFFFFFFFF AND DUP5 PUSH4 0xFFFFFFFF AND GT PUSH2 0x4E21 JUMPI DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0x1 PUSH1 0x20 SHL ADD PUSH2 0x4E29 JUMP JUMPDEST DUP4 PUSH4 0xFFFFFFFF AND JUMPDEST PUSH5 0xFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 DUP6 PUSH4 0xFFFFFFFF AND DUP5 PUSH4 0xFFFFFFFF AND GT PUSH2 0x4E59 JUMPI DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0x1 PUSH1 0x20 SHL ADD PUSH2 0x4E61 JUMP JUMPDEST DUP4 PUSH4 0xFFFFFFFF AND JUMPDEST PUSH5 0xFFFFFFFFFF AND SWAP1 SWAP2 GT ISZERO SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x4E7D PUSH2 0x54F1 JUMP JUMPDEST PUSH2 0x4E85 PUSH2 0x54F1 JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH2 0xFFFF AND DUP6 PUSH1 0x1 ADD PUSH2 0xFFFF AND DUP2 PUSH2 0x4E9B JUMPI INVALID JUMPDEST MOD PUSH2 0xFFFF AND SWAP1 POP PUSH1 0x0 PUSH1 0x1 DUP6 PUSH2 0xFFFF AND DUP4 ADD SUB SWAP1 POP PUSH1 0x0 JUMPDEST POP PUSH1 0x2 DUP2 DUP4 ADD DIV DUP10 PUSH2 0xFFFF DUP8 AND DUP3 DUP2 PUSH2 0x4EC8 JUMPI INVALID JUMPDEST MOD PUSH2 0xFFFF DUP2 LT PUSH2 0x4ED4 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE SWAP3 SWAP1 SWAP2 ADD SLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0x20 SHL DUP2 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x1 PUSH1 0x58 SHL DUP3 DIV AND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xFF PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP2 DIV AND ISZERO ISZERO PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE SWAP1 SWAP6 POP PUSH2 0x4F3E JUMPI DUP1 PUSH1 0x1 ADD SWAP3 POP PUSH2 0x4EB3 JUMP JUMPDEST DUP10 DUP7 PUSH2 0xFFFF AND DUP3 PUSH1 0x1 ADD DUP2 PUSH2 0x4F4F JUMPI INVALID JUMPDEST MOD PUSH2 0xFFFF DUP2 LT PUSH2 0x4F5B JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE SWAP3 SWAP1 SWAP2 ADD SLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP4 MSTORE PUSH1 0x1 PUSH1 0x20 SHL DUP2 DIV PUSH1 0x6 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH1 0x1 PUSH1 0x58 SHL DUP3 DIV AND SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xFF PUSH1 0x1 PUSH1 0xF8 SHL SWAP1 SWAP2 DIV AND ISZERO ISZERO PUSH1 0x60 DUP3 ADD MSTORE DUP6 MLOAD SWAP1 SWAP5 POP PUSH1 0x0 SWAP1 PUSH2 0x4FC5 SWAP1 DUP12 SWAP1 DUP12 PUSH2 0x4DB4 JUMP JUMPDEST SWAP1 POP DUP1 DUP1 ISZERO PUSH2 0x4FDE JUMPI POP PUSH2 0x4FDE DUP11 DUP11 DUP8 PUSH1 0x0 ADD MLOAD PUSH2 0x4DB4 JUMP JUMPDEST ISZERO PUSH2 0x4FE9 JUMPI POP PUSH2 0x5006 JUMP JUMPDEST DUP1 PUSH2 0x4FF9 JUMPI PUSH1 0x1 DUP3 SUB SWAP3 POP PUSH2 0x5000 JUMP JUMPDEST DUP2 PUSH1 0x1 ADD SWAP4 POP JUMPDEST POP PUSH2 0x4EB3 JUMP JUMPDEST POP POP POP SWAP6 POP SWAP6 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP11 DUP2 SIGNEXTEND SWAP1 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP13 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP3 PUSH2 0x503E DUP3 DUP14 PUSH2 0x352B JUMP JUMPDEST SWAP1 POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT ISZERO PUSH2 0x508C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4C4F PUSH1 0xF0 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 DUP2 AND ISZERO SWAP1 DUP3 AND ISZERO DUP2 EQ ISZERO SWAP5 POP ISZERO PUSH2 0x5131 JUMPI DUP13 PUSH1 0x2 SIGNEXTEND DUP15 PUSH1 0x2 SIGNEXTEND SGT PUSH2 0x5119 JUMPI PUSH1 0x1 DUP4 ADD DUP12 SWAP1 SSTORE PUSH1 0x2 DUP4 ADD DUP11 SWAP1 SSTORE PUSH1 0x3 DUP4 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x38 SHL PUSH1 0x1 PUSH1 0xD8 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x38 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND MUL OR PUSH7 0xFFFFFFFFFFFFFF NOT AND PUSH7 0xFFFFFFFFFFFFFF PUSH1 0x6 DUP12 SWAP1 SIGNEXTEND AND OR PUSH4 0xFFFFFFFF PUSH1 0xD8 SHL NOT AND PUSH1 0x1 PUSH1 0xD8 SHL PUSH4 0xFFFFFFFF DUP11 AND MUL OR SWAP1 SSTORE JUMPDEST PUSH1 0x3 DUP4 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB AND PUSH1 0x1 PUSH1 0xF8 SHL OR SWAP1 SSTORE JUMPDEST DUP3 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 AND OR DUP4 SSTORE DUP6 PUSH2 0x517A JUMPI DUP3 SLOAD PUSH2 0x5175 SWAP1 PUSH2 0x5170 SWAP1 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0xF SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 DUP16 SWAP1 SIGNEXTEND PUSH2 0x3219 JUMP JUMPDEST PUSH2 0x3E69 JUMP JUMPDEST PUSH2 0x519B JUMP JUMPDEST DUP3 SLOAD PUSH2 0x519B SWAP1 PUSH2 0x5170 SWAP1 PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV PUSH1 0xF SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND SWAP1 DUP16 SWAP1 SIGNEXTEND PUSH2 0x31FD JUMP JUMPDEST DUP4 SLOAD PUSH1 0xF SWAP2 SWAP1 SWAP2 SIGNEXTEND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 DUP2 AND PUSH1 0x1 PUSH1 0x80 SHL MUL SWAP2 AND OR SWAP1 SWAP3 SSTORE POP SWAP1 SWAP13 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP1 PUSH1 0x2 SIGNEXTEND DUP3 PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x51DB JUMPI INVALID JUMPDEST SMOD PUSH1 0x2 SIGNEXTEND ISZERO PUSH2 0x51E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x5204 DUP4 PUSH1 0x2 SIGNEXTEND DUP6 PUSH1 0x2 SIGNEXTEND DUP2 PUSH2 0x51FE JUMPI INVALID JUMPDEST SDIV PUSH2 0x43C7 JUMP JUMPDEST PUSH1 0x1 SWAP2 DUP3 SIGNEXTEND DUP3 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP8 SWAP1 SWAP8 MSTORE PUSH1 0x40 SWAP1 SWAP7 KECCAK256 DUP1 SLOAD PUSH1 0xFF SWAP1 SWAP8 AND SWAP2 SWAP1 SWAP2 SHL SWAP1 SWAP6 XOR SWAP1 SWAP5 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP6 DUP2 SIGNEXTEND DUP1 DUP3 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP10 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP9 DUP6 SIGNEXTEND DUP6 SIGNEXTEND DUP4 MSTORE SWAP1 DUP3 KECCAK256 SWAP2 SWAP4 DUP5 SWAP4 SWAP2 SWAP3 SWAP2 DUP5 SWAP2 DUP3 SWAP2 SWAP1 DUP11 SWAP1 SIGNEXTEND SLT PUSH2 0x5278 JUMPI POP POP PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH2 0x528B JUMP JUMPDEST DUP4 PUSH1 0x1 ADD SLOAD DUP9 SUB SWAP2 POP DUP4 PUSH1 0x2 ADD SLOAD DUP8 SUB SWAP1 POP JUMPDEST PUSH1 0x0 DUP1 DUP12 PUSH1 0x2 SIGNEXTEND DUP12 PUSH1 0x2 SIGNEXTEND SLT ISZERO PUSH2 0x52AD JUMPI POP POP PUSH1 0x1 DUP4 ADD SLOAD PUSH1 0x2 DUP5 ADD SLOAD PUSH2 0x52C0 JUMP JUMPDEST DUP5 PUSH1 0x1 ADD SLOAD DUP11 SUB SWAP2 POP DUP5 PUSH1 0x2 ADD SLOAD DUP10 SUB SWAP1 POP JUMPDEST SWAP3 SWAP1 SWAP9 SUB SWAP8 SWAP1 SWAP8 SUB SWAP12 SWAP7 SWAP1 SWAP6 SUB SWAP5 SWAP1 SWAP5 SUB SWAP9 POP SWAP4 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD DUP3 MSTORE DUP6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x1 DUP8 ADD SLOAD PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x2 DUP8 ADD SLOAD SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x3 DUP7 ADD SLOAD DUP1 DUP4 AND PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x1 PUSH1 0x80 SHL SWAP1 DIV SWAP1 SWAP2 AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0xF DUP6 SWAP1 SIGNEXTEND PUSH2 0x537D JUMPI DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH2 0x5375 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2 PUSH1 0x24 DUP3 ADD MSTORE PUSH2 0x4E5 PUSH1 0xF4 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH2 0x538C JUMP JUMPDEST DUP2 MLOAD PUSH2 0x5389 SWAP1 DUP7 PUSH2 0x352B JUMP JUMPDEST SWAP1 POP JUMPDEST PUSH1 0x0 PUSH2 0x53B0 DUP4 PUSH1 0x20 ADD MLOAD DUP7 SUB DUP5 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0x322F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x53D6 DUP5 PUSH1 0x40 ADD MLOAD DUP7 SUB DUP6 PUSH1 0x0 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0x322F JUMP JUMPDEST SWAP1 POP DUP7 PUSH1 0xF SIGNEXTEND PUSH1 0x0 EQ PUSH2 0x53FD JUMPI DUP8 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP5 AND OR DUP9 SSTORE JUMPDEST PUSH1 0x1 DUP9 ADD DUP7 SWAP1 SSTORE PUSH1 0x2 DUP9 ADD DUP6 SWAP1 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB DUP3 AND ISZERO ISZERO DUP1 PUSH2 0x542B JUMPI POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB AND GT JUMPDEST ISZERO PUSH2 0x5469 JUMPI PUSH1 0x3 DUP9 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB NOT DUP2 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x80 SHL SUB SWAP2 DUP3 AND DUP6 ADD DUP3 AND OR DUP1 DUP3 AND PUSH1 0x1 PUSH1 0x80 SHL SWAP2 DUP3 SWAP1 DIV DUP4 AND DUP6 ADD SWAP1 SWAP3 AND MUL OR SWAP1 SSTORE JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SWAP1 DUP2 SIGNEXTEND DUP2 SIGNEXTEND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 DUP3 KECCAK256 DUP3 DUP2 SSTORE PUSH1 0x1 DUP2 ADD DUP4 SWAP1 SSTORE SWAP1 DUP2 ADD DUP3 SWAP1 SSTORE PUSH1 0x3 ADD SSTORE JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x2B42 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xE0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xA0 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0xC0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC 0x1F SWAP4 DUP8 JUMPDEST 0xF6 SWAP12 0xD8 0x23 PUSH13 0xED6FA61DB810CF06B5C548147 EXP 0xC7 0xA6 BALANCE 0xEB 0x4E NUMBER 0xC8 SLT PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ", - "sourceMap": "932:34568:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1515:40;;;:::i;:::-;;;;-1:-1:-1;;;;;1515:40:5;;;;;;;;;;;;;;22899:9002;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22899:9002:5;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22899:9002:5;;;;;;-1:-1:-1;;;22899:9002:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;22899:9002:5;;;;;;;;;;-1:-1:-1;22899:9002:5;;-1:-1:-1;22899:9002:5;-1:-1:-1;22899:9002:5;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3176:33;;;:::i;:::-;;;;-1:-1:-1;;;;;3176:33:5;;;;;;;;;;;;;;3088:41;;;:::i;:::-;;;;-1:-1:-1;;;;;3088:41:5;;;;;;;;;;;;;;;;;;;;;;;;3554:54;;;;;;;;;;;;;;;;-1:-1:-1;3554:54:5;;:::i;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3554:54:5;;;;;;;;;;;;;;;;;;;;;;9623:660;;;;;;;;;;;;;;;;-1:-1:-1;9623:660:5;;;;:::i;:::-;;2697:27;;;:::i;:::-;;;;-1:-1:-1;;;;;2697:27:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17529:1188;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17529:1188:5;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17529:1188:5;;;;;-1:-1:-1;17529:1188:5;;-1:-1:-1;17529:1188:5;;;-1:-1:-1;;;17529:1188:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;17529:1188:5;;;;;;;;;;-1:-1:-1;17529:1188:5;;-1:-1:-1;17529:1188:5;-1:-1:-1;17529:1188:5;:::i;2861:44::-;;;:::i;:::-;;;;;;;;;;;;;;;;31949:1913;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;31949:1913:5;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;31949:1913:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;31949:1913:5;;;;;;;;;;-1:-1:-1;31949:1913:5;;-1:-1:-1;31949:1913:5;-1:-1:-1;31949:1913:5;:::i;18765:1035::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18765:1035:5;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18765:1035:5;;;;;;;-1:-1:-1;18765:1035:5;;;;:::i;3449:59::-;;;;;;;;;;;;;;;;-1:-1:-1;3449:59:5;;:::i;:::-;;;;-1:-1:-1;;;;;3449:59:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3449:59:5;;;;;;;;;;;;;3351:52;;;;;;;;;;;;;;;;-1:-1:-1;3351:52:5;;;;:::i;1880:53::-;;;:::i;33915:513::-;;;;;;;;;;;;;;;;-1:-1:-1;33915:513:5;;;;;;;;;;;:::i;34481:1017::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;34481:1017:5;;;;-1:-1:-1;;;;;34481:1017:5;;;;;;;;;;;;:::i;9076:499::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;9076:499:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;9076:499:5;;;;;;;;;;-1:-1:-1;9076:499:5;;-1:-1:-1;9076:499:5;-1:-1:-1;9076:499:5;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19918:939;;;;;;;;;;;;;;;;-1:-1:-1;19918:939:5;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19918:939:5;;:::i;6169:2854::-;;;;;;;;;;;;;;;;-1:-1:-1;6169:2854:5;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;6169:2854:5;;;;;;;;;;;;;;;;;;;;;;1423:41;;;:::i;1785:43::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;1606:40;;;:::i;1697:36::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2771:44;;;:::i;3256:49::-;;;;;;;;;;;;;;;;-1:-1:-1;3256:49:5;;;;:::i;:::-;;;;-1:-1:-1;;;;;3256:49:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3256:49:5;;;-1:-1:-1;;;;;3256:49:5;-1:-1:-1;3256:49:5;;;;;;;;;;;;;;;;;;;;;;;;10387:621;;;;;;;;;;;;;;;;-1:-1:-1;10387:621:5;-1:-1:-1;;;;;10387:621:5;;:::i;1515:40::-;;;:::o;22899:9002::-;23109:14;23125;1036:22:3;:20;:22::i;:::-;23159:20:5;23151:35:::1;;;::::0;;-1:-1:-1;;;23151:35:5;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;23151:35:5;;;;;;;;;;;;;::::1;;23197:31;::::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;23197:31:5;-1:-1:-1;;;;;23197:31:5;::::1;::::0;;-1:-1:-1;;;23197:31:5;::::1;;::::0;;::::1;::::0;::::1;::::0;::::1;;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;23197:31:5;::::1;::::0;::::1;::::0;;;;;;;-1:-1:-1;;;23197:31:5;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;23197:31:5;::::1;::::0;;::::1;::::0;;;;::::1;-1:-1:-1::0;;;23197:31:5;::::1;::::0;::::1;-1:-1:-1::0;23197:31:5;;;-1:-1:-1;;;23197:31:5;;::::1;::::0;;::::1;;;::::0;;;;;;23239:35:::1;;;::::0;;-1:-1:-1;;;23239:35:5;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;23239:35:5;;;;;;;;;;;;;::::1;;23305:10;:228;;23463:23:::0;;-1:-1:-1;;;;;23443:43:5;;::::1;::::0;;::::1;;:90:::0;::::1;;;-1:-1:-1::0;997:49:33::1;-1:-1:-1::0;;;;;23490:43:5;::::1;;23443:90;23305:228;;;23354:23:::0;;-1:-1:-1;;;;;23334:43:5;;::::1;::::0;;::::1;;:90:::0;::::1;;;-1:-1:-1::0;817:10:33::1;-1:-1:-1::0;;;;;23381:43:5;::::1;;23334:90;23284:278;;;::::0;;-1:-1:-1;;;23284:278:5;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;23284:278:5;;;;;;;;;;;;;::::1;;23590:5;23573:22:::0;;-1:-1:-1;;;;23573:22:5::1;::::0;;23643:363:::1;::::0;;::::1;::::0;::::1;::::0;;;;23778:10;:74:::1;;23850:1;23824:10;:22;;;:27;;;;23778:74;;;23817:2;23792:10;:22;;;:27;;;;;;;;23778:74;23643:363;;::::0;;23687:9:::1;::::0;-1:-1:-1;;;;;23687:9:5::1;23643:363;::::0;::::1;::::0;;;23730:17:::1;:15;:17::i;:::-;23643:363;;::::0;;23940:1:::1;23643:363;::::0;;::::1;::::0;;;;;;;;;;;;;;;;;24102:391;;::::1;::::0;::::1;::::0;;;;;;;::::1;::::0;;;24240:23;;-1:-1:-1;;;;;24102:391:5::1;::::0;;;;;;;24287:15;;::::1;::::0;24102:391:::1;;::::0;;;;;;;23606:400;;-1:-1:-1;24035:19:5;;::::1;::::0;23940:1;24102:391;;;24341:10;:56:::1;;24377:20;;24341:56;;;24354:20;;24341:56;24102:391:::0;;24428:1:::1;24102:391;::::0;;::::1;::::0;;;;24458:20;::::1;::::0;-1:-1:-1;;;;;24102:391:5::1;::::0;;;;;24065:428;-1:-1:-1;24620:4621:5::1;24627:30:::0;;:35;;::::1;::::0;:78:::1;;-1:-1:-1::0;24666:18:5::1;::::0;::::1;::::0;-1:-1:-1;;;;;24666:39:5;;::::1;::::0;::::1;;;24627:78;24620:4621;;;24721:28;;:::i;:::-;24789:18;::::0;::::1;::::0;-1:-1:-1;;;;;24764:43:5::1;::::0;;24919:10:::1;::::0;::::1;::::0;24858:142:::1;::::0;:10:::1;::::0;24947:11:::1;24976:10:::0;24858:43:::1;:142::i;:::-;24822:178;;24838:16;::::0;::::1;24822:178:::0;::::1;::::0;;::::1;::::0;::::1;24823:13;::::0;::::1;24822:178:::0;;;-1:-1:-1;;25132:33:5;::::1;;25128:216;;;-1:-1:-1::0;;25185:13:5::1;::::0;::::1;:33:::0;25128:216:::1;;;25243:13;::::0;::::1;::::0;637:9:33;25243:33:5::1;::::0;;;::::1;;25239:105;;;637:9:33::0;25296:13:5::1;::::0;::::1;:33:::0;25239:105:::1;25429:42;25457:4;:13;;;25429:27;:42::i;:::-;-1:-1:-1::0;;;;;25405:66:5::1;:21;::::0;::::1;:66:::0;25717:18:::1;::::0;::::1;::::0;25675:378:::1;::::0;25754:10;:98:::1;;25811:21;::::0;::::1;::::0;-1:-1:-1;;;;;25811:41:5;;::::1;::::0;::::1;;25754:98;;;25767:21;::::0;::::1;::::0;-1:-1:-1;;;;;25767:41:5;;::::1;::::0;::::1;;25754:98;25753:184;;25916:4;:21;;;25753:184;;;25876:17;25753:184;25955:15;::::0;::::1;::::0;25988:30;;26036:3:::1;25675:24;:378::i;:::-;25657:14;::::0;::::1;25605:448:::0;25641:14:::1;::::0;::::1;25605:448:::0;25626:13:::1;::::0;::::1;25605:448:::0;-1:-1:-1;;;;;25605:448:5::1;-1:-1:-1::0;25606:18:5;::::1;25605:448:::0;26068:434;::::1;;;26136:43;26153:4;:14;;;26137:4;:13;;;:30;26136:41;:43::i;:::-;26102:77:::0;;::::1;::::0;;26249:14:::1;::::0;::::1;::::0;26222:53:::1;::::0;26249:25:::1;::::0;:23:::1;:25::i;:::-;26222:22;::::0;::::1;::::0;;:26:::1;:53::i;:::-;26197:22;::::0;::::1;:78:::0;26068:434:::1;;;26348:25;:4;:14;;;:23;:25::i;:::-;26314:59:::0;;::::1;::::0;;26460:14:::1;::::0;::::1;::::0;26444:13:::1;::::0;::::1;::::0;26416:71:::1;::::0;26443:43:::1;::::0;26444:30:::1;26443:41;:43::i;:::-;26416:22;::::0;::::1;::::0;;:26:::1;:71::i;:::-;26391:22;::::0;::::1;:96:::0;26068:434:::1;26637:17:::0;;:21:::1;;::::0;26633:204:::1;;26678:13;26711:5;:17;;;26694:34;;:4;:14;;;:34;;;;;26746:14;::::0;::::1;:23:::0;;26694:34;;;::::1;26746:23:::0;;;::::1;::::0;;26787:17:::1;::::0;::::1;:35:::0;;;;::::1;-1:-1:-1::0;;;;;26787:35:5::1;::::0;;-1:-1:-1;26633:204:5::1;26896:15;::::0;::::1;::::0;-1:-1:-1;;;;;26896:19:5::1;::::0;26892:138:::1;;26978:14;::::0;;::::1;::::0;27014:15;;::::1;::::0;26962:68:::1;::::0;26978:14;-1:-1:-1;;;;;;;;;26962:68:5::1;:15;:68::i;:::-;26933:25;::::0;::::1;:97:::0;;;;::::1;::::0;;26892:138:::1;27126:21;::::0;::::1;::::0;27104:18:::1;::::0;::::1;::::0;-1:-1:-1;;;;;27104:43:5;;::::1;::::0;::::1;;27100:2131;;;27242:4;:16;;;27238:1632;;;27457:5;:31;;;27452:565;;27582:348;27638:5;:20;;;27688:1;27719:10;:15;;;27764:10;:27;;;27821:5;:20;;;27871:10;:33;;;27582:12;:26;;:348;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;27516:414:5::1;27539:39;::::0;::::1;27516:414:::0;::::1;::::0;;::::1;::::0;::::1;27517:20;::::0;::::1;27516:414:::0;-1:-1:-1;;27956:31:5;::::1;:38:::0;27452:565:::1;28038:19;28084:435;28125:4;:13;;;28169:10;:61;;28210:20;;28169:61;;;28182:5;:25;;;28169:61;28262:10;:61;;28298:5;:25;;;28262:61;;;28275:20;;28262:61;28354:39;::::0;::::1;::::0;28423:20:::1;::::0;::::1;::::0;28473::::1;::::0;::::1;::::0;28084:5:::1;::::0;:435;;;28354:39;28423:20;28084:11:::1;:435::i;:::-;28038:481;;28717:10;28713:44;;;28744:13;;28713:44;28798:53;28821:5;:15;;;28838:12;28798:22;:53::i;:::-;-1:-1:-1::0;;;;;28780:71:5::1;:15;::::0;::::1;:71:::0;-1:-1:-1;27238:1632:5::1;28901:10;:46;;28934:4;:13;;;28901:46;;;28930:1;28914:4;:13;;;:17;28901:46;28888:59;::::0;;::::1;::::0;::::1;:10;::::0;::::1;:59:::0;27100:2131:::1;;;28994:22:::0;;28972:18:::1;::::0;::::1;::::0;-1:-1:-1;;;;;28972:44:5;;::::1;::::0;::::1;;28968:263;;29169:47;29197:5;:18;;;29169:27;:47::i;:::-;29156:60;::::0;;::::1;::::0;::::1;:10;::::0;::::1;:60:::0;28968:263:::1;24620:4621;;;;29337:10;:15;;;29323:29;;:5;:10;;;:29;;;29319:827;;29369:23;29394:29:::0;29443:320:::1;29483:10;:27;;;29532:5;:20;;;29574:10;:15;;;29611:5;:20;;;29653:10;:33;;;29708:10;:37;;;29443:12;:18;;:320;;;;;;;;;:::i;:::-;29884:18;::::0;::::1;::::0;29920:10:::1;::::0;::::1;::::0;29778:5:::1;29777:241:::0;;-1:-1:-1;;;;29777:241:5::1;-1:-1:-1::0;;;;29777:241:5;;::::1;;;-1:-1:-1::0;;;;29777:241:5::1;-1:-1:-1::0;;;29777:241:5;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;;;29777:241:5::1;-1:-1:-1::0;;;;29777:241:5::1;::::0;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;;;;;29777:241:5::1;-1:-1:-1::0;;;;;29777:241:5;;::::1;;::::0;;-1:-1:-1;29319:827:5::1;::::0;-1:-1:-1;29319:827:5::1;;30117:18;::::0;::::1;::::0;30096:5:::1;:39:::0;;-1:-1:-1;;;;;;30096:39:5::1;-1:-1:-1::0;;;;;30096:39:5;;::::1;::::0;;;::::1;::::0;;29319:827:::1;30226:15;::::0;::::1;::::0;30202:20:::1;::::0;::::1;::::0;-1:-1:-1;;;;;30202:39:5;;::::1;::::0;::::1;;30198:72;;30255:15;::::0;::::1;::::0;30243:9:::1;:27:::0;;-1:-1:-1;;;;;;30243:27:5::1;-1:-1:-1::0;;;;;30243:27:5;;::::1;::::0;;;::::1;::::0;;30198:72:::1;30452:10;30448:330;;;30501:25;::::0;::::1;::::0;30478:20:::1;:48:::0;30544:17:::1;::::0;::::1;::::0;-1:-1:-1;;;;;30544:21:5::1;::::0;30540:67:::1;;30590:17;::::0;::::1;::::0;30567:12:::1;:40:::0;;-1:-1:-1;;;;;;30567:40:5;::::1;-1:-1:-1::0;;;;;30567:40:5;;::::1;::::0;;::::1;;::::0;;;::::1;::::0;;30540:67:::1;30448:330;;;30661:25;::::0;::::1;::::0;30638:20:::1;:48:::0;30704:17:::1;::::0;::::1;::::0;-1:-1:-1;;;;;30704:21:5::1;::::0;30700:67:::1;;30750:17;::::0;::::1;::::0;30727:12:::1;:40:::0;;-1:-1:-1;;;30727:40:5;;::::1;-1:-1:-1::0;;;;;30727:40:5;;::::1;::::0;;::::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;;30700:67:::1;30823:10;30809:24;;:10;:24;;;:202;;30938:22;::::0;::::1;::::0;30980:30;;30962:48;::::1;30809:202;;;30867:5;:30;;;30849:15;:48;30899:5;:22;;;30809:202;30788:223:::0;;-1:-1:-1;30788:223:5;-1:-1:-1;31070:684:5;::::1;;;31114:1;31104:7;:11;31100:82;;;31117:65;31145:6;31153:9;31173:7;31172:8;;31117:27;:65::i;:::-;31197:22;31222:10;:8;:10::i;:::-;31246:80;::::0;-1:-1:-1;;;31246:80:5;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;;;;;;;;;31197:35;;-1:-1:-1;31269:10:5::1;::::0;31246:56:::1;::::0;31303:7;;31312;;31321:4;;;;31246:80;;;;31321:4;;;;31246:80;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;31388:10;:8;:10::i;:::-;31348:36;:14:::0;31375:7;31348:18:::1;:36::i;:::-;:50;;31340:66;;;::::0;;-1:-1:-1;;;31340:66:5;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;31340:66:5;;;;;;;;;;;;;::::1;;31070:684;;;;31451:1;31441:7;:11;31437:82;;;31454:65;31482:6;31490:9;31510:7;31509:8;;31454:27;:65::i;:::-;31534:22;31559:10;:8;:10::i;:::-;31583:80;::::0;-1:-1:-1;;;31583:80:5;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;;;;;;;;;31534:35;;-1:-1:-1;31606:10:5::1;::::0;31583:56:::1;::::0;31640:7;;31649;;31658:4;;;;31583:80;;;;31658:4;;;;31583:80;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;31725:10;:8;:10::i;:::-;31685:36;:14:::0;31712:7;31685:18:::1;:36::i;:::-;:50;;31677:66;;;::::0;;-1:-1:-1;;;31677:66:5;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;31677:66:5;;;;;;;;;;;;;::::1;;31070:684;;31815:18;::::0;;::::1;::::0;31835:15:::1;::::0;::::1;::::0;31852:10:::1;::::0;;::::1;::::0;31769:94;;;;;::::1;::::0;::::1;::::0;;;-1:-1:-1;;;;;31769:94:5;;::::1;::::0;;;;-1:-1:-1;;;;;31769:94:5;;::::1;::::0;;;;;;;::::1;;-1:-1:-1::0;31769:94:5;;;;;;;::::1;::::0;31774:10:::1;::::0;31769:94:::1;::::0;;;;-1:-1:-1;31769:94:5;;::::1;-1:-1:-1::0;;31873:5:5::1;:21:::0;;-1:-1:-1;;;;31873:21:5::1;-1:-1:-1::0;;;31873:21:5::1;::::0;;-1:-1:-1;22899:9002:5;;;;-1:-1:-1;22899:9002:5;-1:-1:-1;;;;;;22899:9002:5:o;3176:33::-;;;-1:-1:-1;;;;;3176:33:5;;:::o;3088:41::-;;;-1:-1:-1;;;;;3088:41:5;;;;-1:-1:-1;;;3088:41:5;;;;:::o;3554:54::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;3554:54:5;;;;;-1:-1:-1;;;3554:54:5;;-1:-1:-1;;;;;3554:54:5;;-1:-1:-1;;;3554:54:5;;;;;:::o;9623:660::-;3997:5;:14;-1:-1:-1;;;3997:14:5;;;;3989:30;;;;;-1:-1:-1;;;3989:30:5;;;;;;;;;;;;-1:-1:-1;;;3989:30:5;;;;;;;;;;;;;;;4046:5;4029:22;;-1:-1:-1;;;;4029:22:5;;;1036::3::1;:20;:22::i;:::-;9786:36:5::2;9825:32:::0;;-1:-1:-1;;;9825:32:5;::::2;;;::::0;9935:76:::2;:12;9825:32:::0;9984:26;9935:17:::2;:76::i;:::-;10021:5;:64:::0;;-1:-1:-1;;;;10021:64:5::2;-1:-1:-1::0;;;10021:64:5::2;::::0;;::::2;::::0;;::::2;::::0;;;::::2;::::0;;;;;-1:-1:-1;10099:62:5;;::::2;;10095:181;;10180:96;::::0;;::::2;::::0;;::::2;::::0;;;::::2;;::::0;::::2;::::0;;;::::2;::::0;;;;;;;;;::::2;10095:181;-1:-1:-1::0;;4072:5:5;:21;;-1:-1:-1;;;;4072:21:5;-1:-1:-1;;;4072:21:5;;;-1:-1:-1;9623:660:5:o;2697:27::-;;;-1:-1:-1;;;;;2697:27:5;;;-1:-1:-1;;;2697:27:5;;;;;;-1:-1:-1;;;2697:27:5;;;;;-1:-1:-1;;;2697:27:5;;;;;-1:-1:-1;;;2697:27:5;;;;;-1:-1:-1;;;2697:27:5;;;;;-1:-1:-1;;;2697:27:5;;;;:::o;17529:1188::-;17711:15;3997:14;;17711:15;;-1:-1:-1;;;3997:14:5;;;;3989:30;;;;;-1:-1:-1;;;3989:30:5;;;;;;;;;;;;-1:-1:-1;;;3989:30:5;;;;;;;;;;;;;;;4046:5;4029:22;;-1:-1:-1;;;;4029:22:5;;;-1:-1:-1;;;;;17763:10:5;::::1;17755:19;;;::::0;::::1;;17787:17;17806::::0;17839:272:::1;17872:225;;;;;;;;17922:9;-1:-1:-1::0;;;;;17872:225:5::1;;;;;17964:9;17872:225;;;;;;18006:9;17872:225;;;;;;18053:25;18060:6;-1:-1:-1::0;;;;;18053:14:5::1;:23;:25::i;:::-;17872:225;;::::0;;17839:15:::1;:272::i;:::-;17784:327;;;;;18140:10;18122:29;;18179:10;18161:29;;18201:22;18233::::0;18279:1:::1;18269:7;:11;18265:44;;;18299:10;:8;:10::i;:::-;18282:27;;18265:44;18323:11:::0;;18319:44:::1;;18353:10;:8;:10::i;:::-;18336:27;;18319:44;18373:80;::::0;-1:-1:-1;;;18373:80:5;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;;;;;;;;;18396:10:::1;::::0;18373:56:::1;::::0;18430:7;;18439;;18448:4;;;;18373:80;;;;18448:4;;;;18373:80;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;18477:1;18467:7;:11;18463:73;;;18519:10;:8;:10::i;:::-;18488:27;:14:::0;18507:7;18488:18:::1;:27::i;:::-;:41;;18480:56;;;::::0;;-1:-1:-1;;;18480:56:5;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;18480:56:5;;;;;;;;;;;;;::::1;;18550:11:::0;;18546:73:::1;;18602:10;:8;:10::i;:::-;18571:27;:14:::0;18590:7;18571:18:::1;:27::i;:::-;:41;;18563:56;;;::::0;;-1:-1:-1;;;18563:56:5;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;18563:56:5;;;;;;;;;;;;;::::1;;18674:9;18635:75;;18663:9;18635:75;;18652:9;-1:-1:-1::0;;;;;18635:75:5::1;;18640:10;18685:6;18693:7;18702;18635:75;;;;-1:-1:-1::0;;;;;18635:75:5::1;;;;;;-1:-1:-1::0;;;;;18635:75:5::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;4072:5:5;:21;;-1:-1:-1;;;;4072:21:5;-1:-1:-1;;;4072:21:5;;;-1:-1:-1;17529:1188:5;;;;-1:-1:-1;17529:1188:5;-1:-1:-1;;;;;;17529:1188:5:o;2861:44::-;;;;:::o;31949:1913::-;3997:5;:14;-1:-1:-1;;;3997:14:5;;;;3989:30;;;;;-1:-1:-1;;;3989:30:5;;;;;;;;;;;;-1:-1:-1;;;3989:30:5;;;;;;;;;;;;;;;4046:5;4029:22;;-1:-1:-1;;;;4029:22:5;;;1036::3::1;:20;:22::i;:::-;32145:9:5::2;::::0;-1:-1:-1;;;;;32145:9:5::2;::::0;32164:28:::2;;;::::0;;-1:-1:-1;;;32164:28:5;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;-1:-1:-1;;;32164:28:5;;;;;;;;;;;;;::::2;;32203:12;32218:44;32244:7;32253:3;32218:44;;32258:3;32218:25;:44::i;:::-;32203:59;;32272:12;32287:44;32313:7;32322:3;32287:44;;32327:3;32287:25;:44::i;:::-;32272:59;;32341:22;32366:10;:8;:10::i;:::-;32341:35;;32386:22;32411:10;:8;:10::i;:::-;32386:35:::0;-1:-1:-1;32436:11:5;;32432:72:::2;;32449:55;32477:6;32485:9;32496:7;32449:27;:55::i;:::-;32518:11:::0;;32514:72:::2;;32531:55;32559:6;32567:9;32578:7;32531:27;:55::i;:::-;32597:76;::::0;-1:-1:-1;;;32597:76:5;;::::2;::::0;::::2;::::0;;;;;;;;;;;;;;;;;;;;;;32621:10:::2;::::0;32597:58:::2;::::0;32656:4;;32662;;32668;;;;32597:76;;;;32668:4;;;;32597:76;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;32684:21;32708:10;:8;:10::i;:::-;32684:34;;32728:21;32752:10;:8;:10::i;:::-;32728:34:::0;-1:-1:-1;32809:13:5;32781:24:::2;:14:::0;32800:4;32781:18:::2;:24::i;:::-;:41;;32773:56;;;::::0;;-1:-1:-1;;;32773:56:5;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;-1:-1:-1;;;32773:56:5;;;;;;;;;;;;;::::2;;32875:13:::0;32847:24:::2;:14:::0;32866:4;32847:18:::2;:24::i;:::-;:41;;32839:56;;;::::0;;-1:-1:-1;;;32839:56:5;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;-1:-1:-1;;;32839:56:5;;;;;;;;;;;;;::::2;;33010:30:::0;;::::2;33066::::0;;::::2;33111:9:::0;;33107:332:::2;;33136:18;33157:17:::0;;-1:-1:-1;;;33157:17:5;::::2;:22:::0;;;33209:17;;:44:::2;;33241:12;33233:20;;:5;:20;;;;;;33209:44;;;33229:1;33209:44;33193:60:::0;-1:-1:-1;;;;;;33271:18:5;::::2;::::0;33267:61:::2;;33291:12;:37:::0;;-1:-1:-1;;;;;33291:37:5;;::::2;::::0;::::2;;-1:-1:-1::0;;;;;;33291:37:5;;::::2;;::::0;;33267:61:::2;33366:62;33382:13:::0;;::::2;-1:-1:-1::0;;;;;;;;33366:62:5;::::2;:15;:62::i;:::-;33342:20;:86:::0;;;;::::2;::::0;;-1:-1:-1;;33107:332:5::2;33452:9:::0;;33448:332:::2;;33477:18;33498:17:::0;;-1:-1:-1;;;33498:17:5;::::2;33519:1;33498:22:::0;;;;33550:17;;:44:::2;;33582:12;33574:20;;:5;:20;;;;;;33550:44;;;33570:1;33550:44;33534:60:::0;-1:-1:-1;;;;;;33612:18:5;::::2;::::0;33608:61:::2;;33632:12;:37:::0;;-1:-1:-1;;;33632:37:5;;::::2;-1:-1:-1::0;;;;;33632:37:5;;::::2;::::0;::::2;::::0;::::2;::::0;;::::2;::::0;::::2;;::::0;;33608:61:::2;33707:62;33723:13:::0;;::::2;-1:-1:-1::0;;;;;;;;33707:62:5;::::2;:15;:62::i;:::-;33683:20;:86:::0;;;;::::2;::::0;;-1:-1:-1;;33448:332:5::2;33813:9;-1:-1:-1::0;;;;;33795:60:5::2;33801:10;-1:-1:-1::0;;;;;33795:60:5::2;;33824:7;33833;33842:5;33849;33795:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;4072:5:5;:21;;-1:-1:-1;;;;4072:21:5;-1:-1:-1;;;4072:21:5;;;-1:-1:-1;;;;;;;;;;;;31949:1913:5:o;18765:1035::-;18965:15;3997:14;;18965:15;;-1:-1:-1;;;3997:14:5;;;;3989:30;;;;;-1:-1:-1;;;3989:30:5;;;;;;;;;;;;-1:-1:-1;;;3989:30:5;;;;;;;;;;;;;;;4046:5;4029:22;;-1:-1:-1;;;;4029:22:5;;;19154:47:::1;:9;19168:10;19180:9:::0;19191;19154:13:::1;:47::i;:::-;19241:20;::::0;::::1;::::0;;;-1:-1:-1;;;;;;19241:20:5;;::::1;19222:39:::0;;::::1;;:81;;19287:16;19222:81;;;19264:20;::::0;::::1;::::0;-1:-1:-1;;;;;19264:20:5::1;19222:81;19342:20;::::0;::::1;::::0;19212:91;;-1:-1:-1;;;;19342:20:5;::::1;-1:-1:-1::0;;;;;19342:20:5;;::::1;19323:39:::0;;::::1;;:81;;19388:16;19323:81;;;19365:20;::::0;::::1;::::0;-1:-1:-1;;;19365:20:5;::::1;-1:-1:-1::0;;;;;19365:20:5::1;19323:81;19313:91:::0;-1:-1:-1;;;;;;19419:11:5;::::1;::::0;19415:142:::1;;19446:20;::::0;::::1;:31:::0;;-1:-1:-1;;;;;;19446:31:5;::::1;-1:-1:-1::0;;;;;19446:31:5;;::::1;::::0;;::::1;::::0;::::1;;::::0;;;19491:55:::1;::::0;19519:6:::1;::::0;19527:9;;19491:55;::::1;:27;:55::i;:::-;-1:-1:-1::0;;;;;19570:11:5;::::1;::::0;19566:142:::1;;19597:20;::::0;::::1;:31:::0;;-1:-1:-1;;;;;19597:31:5;;::::1;-1:-1:-1::0;;;19597:31:5;;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;19642:55:::1;::::0;19670:6:::1;::::0;19678:9;;19642:55;::::1;:27;:55::i;:::-;19723:70;::::0;;-1:-1:-1;;;;;19723:70:5;::::1;::::0;;-1:-1:-1;;;;;19723:70:5;;::::1;;::::0;::::1;::::0;;::::1;::::0;;;;;;::::1;::::0;;::::1;::::0;;;;::::1;::::0;19731:10:::1;::::0;19723:70:::1;::::0;;;;;;;;::::1;-1:-1:-1::0;4072:5:5;:21;;-1:-1:-1;;;;4072:21:5;-1:-1:-1;;;4072:21:5;;;18765:1035;;;;-1:-1:-1;18765:1035:5;-1:-1:-1;;;;18765:1035:5:o;3449:59::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3449:59:5;;;;;;;;;;-1:-1:-1;;;3449:59:5;;;;:::o;3351:52::-;;;;;;;;;;;;;:::o;1880:53::-;;;:::o;33915:513::-;3997:5;:14;-1:-1:-1;;;3997:14:5;;;;3989:30;;;;;-1:-1:-1;;;3989:30:5;;;;;;;;;;;;-1:-1:-1;;;3989:30:5;;;;;;;;;;;;;;;4046:5;4029:22;;-1:-1:-1;;;;4029:22:5;;;4276:34:::1;::::0;;-1:-1:-1;;;4276:34:5;;;;4294:7:::1;-1:-1:-1::0;;;;;4276:32:5::1;::::0;-1:-1:-1;;4276:34:5::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:32;:34;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;4276:34:5;-1:-1:-1;;;;;4262:48:5::1;:10;:48;4254:57;;;::::0;::::1;;34051:17:::2;::::0;::::2;::::0;;:62:::2;;;34089:1;34073:12;:17;;;;:39;;;;;34110:2;34094:12;:18;;;;34073:39;34050:148;;;;-1:-1:-1::0;34135:17:5::2;::::0;::::2;::::0;;:62:::2;;;34173:1;34157:12;:17;;;;:39;;;;;34194:2;34178:12;:18;;;;34157:39;34029:179;;;::::0;::::2;;34218:20;34241:17:::0;;-1:-1:-1;;;;34268:54:5;::::2;-1:-1:-1::0;;;34241:17:5::2;34320:1;34304:17:::0;;;;;34288:34;::::2;34268:54:::0;::::2;::::0;::::2;::::0;;;::::2;::::0;;;34337:84:::2;::::0;;34352:19;34241:17;;;::::2;34352:19:::0;;;34337:84;;34373:19;;;;;;;34337:84:::2;::::0;::::2;::::0;;;::::2;::::0;;;;;;::::2;::::0;;;;;34241:17;::::2;::::0;34337:84:::2;::::0;;;;;;;;::::2;-1:-1:-1::0;;4072:5:5;:21;;-1:-1:-1;;;;4072:21:5;-1:-1:-1;;;4072:21:5;;;-1:-1:-1;33915:513:5:o;34481:1017::-;34656:15;3997:14;;34656:15;;-1:-1:-1;;;3997:14:5;;;;3989:30;;;;;-1:-1:-1;;;3989:30:5;;;;;;;;;;;;-1:-1:-1;;;3989:30:5;;;;;;;;;;;;;;;4046:5;4029:22;;-1:-1:-1;;;;4029:22:5;;;4276:34:::1;::::0;;-1:-1:-1;;;4276:34:5;;;;4294:7:::1;-1:-1:-1::0;;;;;4276:32:5::1;::::0;-1:-1:-1;;4276:34:5::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:32;:34;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;4276:34:5;-1:-1:-1;;;;;4262:48:5::1;:10;:48;4254:57;;;::::0;::::1;;34729:12:::2;:19:::0;-1:-1:-1;;;;;34729:19:5;;::::2;34710:38:::0;;::::2;;:79;;34773:16;34710:79;;;34751:12;:19:::0;-1:-1:-1;;;;;34751:19:5::2;34710:79;34828:12;:19:::0;34700:89;;-1:-1:-1;;;;34828:19:5;::::2;-1:-1:-1::0;;;;;34828:19:5;;::::2;34809:38:::0;;::::2;;:79;;34872:16;34809:79;;;34850:12;:19:::0;-1:-1:-1;;;34850:19:5;::::2;-1:-1:-1::0;;;;;34850:19:5::2;34809:79;34799:89:::0;-1:-1:-1;;;;;;34903:11:5;::::2;::::0;34899:256:::2;;34945:12;:19:::0;-1:-1:-1;;;;;34934:30:5;;::::2;34945:19:::0;::::2;34934:30;34930:45;;;-1:-1:-1::0;;34966:9:5;;;;34930:45:::2;35045:12;:30:::0;;-1:-1:-1;;;;;;35045:30:5;::::2;-1:-1:-1::0;;;;;35045:30:5;;::::2;::::0;;::::2;::::0;::::2;;::::0;;;35089:55:::2;::::0;35117:6:::2;::::0;35125:9;;35089:55;::::2;:27;:55::i;:::-;-1:-1:-1::0;;;;;35168:11:5;::::2;::::0;35164:256:::2;;35210:12;:19:::0;-1:-1:-1;;;;;35199:30:5;;::::2;-1:-1:-1::0;;;35210:19:5;;::::2;;35199:30;35195:45;;;-1:-1:-1::0;;35231:9:5;35195:45:::2;35310:12;:30:::0;;-1:-1:-1;;;;;35310:30:5;;::::2;-1:-1:-1::0;;;35310:30:5;;;::::2;::::0;::::2;::::0;;::::2;::::0;::::2;::::0;;::::2;::::0;;;::::2;::::0;;;35354:55:::2;::::0;35382:6:::2;::::0;35390:9;;35354:55;::::2;:27;:55::i;:::-;35435:56;::::0;;-1:-1:-1;;;;;35435:56:5;;::::2;::::0;;;::::2;;::::0;::::2;::::0;;;-1:-1:-1;;;;;35435:56:5;::::2;::::0;35451:10:::2;::::0;35435:56:::2;::::0;;;;;;;;;::::2;4072:5:::0;:21;;-1:-1:-1;;;;4072:21:5;-1:-1:-1;;;4072:21:5;;;34481:1017;;;;-1:-1:-1;34481:1017:5;-1:-1:-1;;34481:1017:5:o;9076:499::-;9211:30;9243:51;1036:22:3;:20;:22::i;:::-;9329:239:5::1;9367:17;:15;:17::i;:::-;9402:11;;9329:239;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;-1:-1:-1;9431:10:5;9499:9:::1;::::0;9329:12:::1;::::0;;;-1:-1:-1;;;;9431:10:5;::::1;;;::::0;-1:-1:-1;9459:22:5::1;-1:-1:-1::0;;;9459:22:5;::::1;::::0;::::1;::::0;-1:-1:-1;;;;;;9499:9:5;;::::1;::::0;-1:-1:-1;;;9526:28:5;::::1;;9329:20;:239::i;:::-;9310:258;;;;9076:499:::0;;;;;:::o;19918:939::-;20044:15;3997:14;;20044:15;;-1:-1:-1;;;3997:14:5;;;;3989:30;;;;;-1:-1:-1;;;3989:30:5;;;;;;;;;;;;-1:-1:-1;;;3989:30:5;;;;;;;;;;;;;;;4046:5;4029:22;;-1:-1:-1;;;;4029:22:5;;;20206:227:::1;::::0;;::::1;::::0;::::1;::::0;;20256:10:::1;20206:227:::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;;;;;4046:5;;;;20173:274:::1;::::0;20206:227;;;20389:25:::1;-1:-1:-1::0;;;;;20389:14:5;::::1;:23;:25::i;:::-;20388:26;;20206:227;;::::0;;20173:15:::1;:274::i;:::-;20088:359;;;;;;20477:10;20476:11;;20458:30;;20517:10;20516:11;;20498:30;;20553:1;20543:7;:11;:26;;;;20568:1;20558:7;:11;20543:26;20539:232;;;20650:20;::::0;::::1;::::0;;-1:-1:-1;;;;;;;;;20707:20:5;;::::1;-1:-1:-1::0;;;;;20707:20:5;;::::1;:39:::0;::::1;20585:175:::0;::::1;::::0;;::::1;20650:20:::0;;::::1;20585:175:::0;;::::1;::::0;;;::::1;20650:39:::0;;::::1;20585:175;;::::0;;20539:232:::1;20786:64;::::0;;-1:-1:-1;;;;;20786:64:5;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;;;::::1;::::0;;::::1;::::0;;;;::::1;::::0;20791:10:::1;::::0;20786:64:::1;::::0;;;;;;;;::::1;-1:-1:-1::0;;4072:5:5;:21;;-1:-1:-1;;;;4072:21:5;-1:-1:-1;;;4072:21:5;;;-1:-1:-1;19918:939:5;;;;-1:-1:-1;19918:939:5;-1:-1:-1;;19918:939:5:o;6169:2854::-;6338:26;6378:37;6429:20;1036:22:3;:20;:22::i;:::-;6474:32:5::1;6485:9;6496;6474:10;:32::i;:::-;6806:16;::::0;;::::1;::::0;::::1;6517:25;6806:16:::0;;;:5:::1;:16;::::0;;;;;6862;;::::1;::::0;;::::1;::::0;;;;7045:27:::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;-1:-1:-1;;;7090:36:5;::::1;-1:-1:-1::0;;;;;7090:36:5::1;::::0;6517:25;;-1:-1:-1;;;7144:20:5;::::1;;;::::0;6517:25;;6806:16;;-1:-1:-1;;;7182:17:5;::::1;;;::::0;7227:25:::1;;;::::0;::::1;;7420:27;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;-1:-1:-1;;;;7465:36:5;::::1;-1:-1:-1::0;;;;;7465:36:5::1;::::0;-1:-1:-1;;;;7519:20:5;::::1;;;::::0;-1:-1:-1;;;;7557:17:5;::::1;;;::::0;7602:25:::1;;;::::0;::::1;;-1:-1:-1::0;;7648:27:5::1;::::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;7648:27:5;-1:-1:-1;;;;;7648:27:5;::::1;::::0;;-1:-1:-1;;;7648:27:5;::::1;;::::0;;::::1;::::0;::::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;-1:-1:-1::0;;;7648:27:5;::::1;::::0;::::1;::::0;;;;;;;-1:-1:-1;;;7648:27:5;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;7648:27:5;::::1;::::0;;::::1;::::0;;;;::::1;-1:-1:-1::0;;;7648:27:5;::::1;::::0;::::1;-1:-1:-1::0;7648:27:5;;;-1:-1:-1;;;7648:27:5;;::::1;::::0;;::::1;;;::::0;;;;;;-1:-1:-1;7690:23:5;;::::1;::::0;;::::1;;7686:1331;::::0;-1:-1:-1;7686:1331:5::1;;-1:-1:-1::0;7754:41:5;;;::::1;::::0;-1:-1:-1;7813:73:5;::::1;::::0;-1:-1:-1;7904:41:5;::::1;::::0;-1:-1:-1;7729:230:5::1;;7686:1331;7994:9;7980:23;;:6;:11;;;:23;;;7976:1041;;;8019:11;8033:17;:15;:17::i;:::-;8245:11;::::0;::::1;::::0;8278:23:::1;::::0;::::1;::::0;8323:9:::1;::::0;8354:29:::1;::::0;::::1;::::0;8019:31;;-1:-1:-1;8065:20:5::1;::::0;;;8148:253:::1;::::0;:12:::1;::::0;8019:31;;8065:20;;8245:11;8278:23;-1:-1:-1;;;;;8323:9:5::1;::::0;8148:26:::1;:253::i;:::-;8440:36:::0;;::::1;:58:::0;;;::::1;::::0;-1:-1:-1;;8516:91:5;;;::::1;:149:::0;;;::::1;::::0;-1:-1:-1;8683:26:5;;::::1;:48;::::0;-1:-1:-1;8415:330:5::1;::::0;-1:-1:-1;;8415:330:5::1;7976:1041;-1:-1:-1::0;8801:41:5;;;::::1;::::0;-1:-1:-1;8860:73:5::1;::::0;-1:-1:-1;8951:41:5;::::1;::::0;-1:-1:-1;1068:1:3::1;6169:2854:5::0;;;;;:::o;1423:41::-;;;:::o;1785:43::-;;;:::o;1606:40::-;;;:::o;1697:36::-;;;:::o;2771:44::-;;;;:::o;3256:49::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3256:49:5;;;-1:-1:-1;;;3256:49:5;;;;;;;;;;;;-1:-1:-1;;;3256:49:5;;-1:-1:-1;;;;;3256:49:5;;-1:-1:-1;;;3256:49:5;;;;;-1:-1:-1;;;3256:49:5;;;;;:::o;10387:621::-;10465:5;:18;-1:-1:-1;;;;;10465:18:5;:23;10457:38;;;;;-1:-1:-1;;;10457:38:5;;;;;;;;;;;;-1:-1:-1;;;10457:38:5;;;;;;;;;;;;;;;10506:10;10519:41;10547:12;10519:27;:41::i;:::-;10506:54;;10572:18;10592:22;10618:42;10642:17;:15;:17::i;:::-;10618:12;;:23;:42::i;:::-;10679:276;;;;;;;;-1:-1:-1;;;;;10679:276:5;;;;;;;;;;;;;;;;-1:-1:-1;10679:276:5;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10679:276:5;;;;;-1:-1:-1;10679:276:5;;;;;;;;10671:284;;-1:-1:-1;;;;;;;;;10671:284:5;;;;;-1:-1:-1;;;;10671:284:5;-1:-1:-1;;;;10671:284:5;;;;;;;;;;;;;;;;-1:-1:-1;;;;10671:284:5;-1:-1:-1;;;10671:284:5;;;;-1:-1:-1;;;;10671:284:5;-1:-1:-1;;;10671:284:5;;;;;;;-1:-1:-1;;;;10671:284:5;;;;;;;;10971:30;;;;;;;;;;;;;10679:276;;-1:-1:-1;10679:276:5;;-1:-1:-1;10971:30:5;;;;;;;;;10387:621;;;;:::o;2195:364:31:-;2279:7;;2350:11;2315:31;;;;-1:-1:-1;;2315:31:31;;;;;;2314:47;;-1:-1:-1;2371:13:31;2423:11;2388:31;;;;637:9:33;2388:31:31;;;;;;2387:47;2371:63;;2444:15;2491:11;2469:33;;2480:7;2470;:17;2469:33;;;;;;;;2506:1;2462:45;;-1:-1:-1;2524:28:31;;;-1:-1:-1;;;;;2524:28:31;;;;;;2517:35;;;;;2195:364;;;;:::o;835:96:3:-;915:8;-1:-1:-1;;;;;898:25:3;906:4;898:25;890:34;;;;;;835:96::o;5018:138:5:-;5108:15;5018:138;:::o;2188:1921:32:-;2372:10;2384:16;2412;2438:11;2431:18;;:4;:18;;;;;;;;2412:37;;2470:1;2463:4;:8;;;:35;;;;;2482:11;2475:18;;:4;:18;;;;;;;;:23;;;;2463:35;2459:53;;;-1:-1:-1;;2500:12:32;2459:53;2562:3;2558:1545;;;2582:13;2597:12;2613:20;2622:10;2613:8;:20::i;:::-;2750:1;2793:13;;;;;2714:12;2793:13;;;;;;;;;;;2750:11;;;;;;;2729:33;;-1:-1:-1;;2729:33:32;2793:20;;;2960:11;;;;-1:-1:-1;2581:52:32;;-1:-1:-1;2581:52:32;;-1:-1:-1;2729:33:32;2960:11;3102:170;;3261:11;3250:6;3244:13;;3231:10;:26;3230:42;3102:170;;;3200:11;3161:34;3188:6;3161:26;:34::i;:::-;3152:6;:43;3146:50;;3133:10;:63;3132:79;3102:170;3095:177;;2558:1545;;;;;;;3401:13;3416:12;3432:24;3441:10;3454:1;3441:14;3432:8;:24::i;:::-;3400:56;;;;3528:12;3561:1;3551:6;3546:11;;:1;:11;;3545:17;3543:20;3528:35;;3577:14;3610:4;3594;:13;3599:7;3594:13;;;;;;;;;;;;;;;;:20;3577:37;;3753:6;3763:1;3753:11;;3739:25;;3895:11;:197;;4081:11;4070:6;4052:15;:24;4046:31;;4029:10;4042:1;4029:14;:48;4028:64;3895:197;;;3998:11;3987:6;3949:35;3977:6;3949:27;:35::i;:::-;:44;3943:51;;3926:10;3939:1;3926:14;:68;3925:84;3895:197;3888:204;;2558:1545;;;;;2188:1921;;;;;;;;:::o;1355:2580:33:-;1418:20;1450:15;1475:1;1468:4;:8;;;:57;;1519:4;1512:12;;1468:57;;;1495:4;1488:12;;1487:13;;1468:57;1450:75;-1:-1:-1;637:9:33;1543:28;;;1535:42;;;;;-1:-1:-1;;;1535:42:33;;;;;;;;;;;;-1:-1:-1;;;1535:42:33;;;;;;;;;;;;;;;1588:13;1614:3;1604:13;;:93;;-1:-1:-1;;;1604:93:33;;;1625:34;1604:93;1588:109;;;-1:-1:-1;1721:3:33;1711:13;;:18;1707:83;;1748:34;1740:42;1787:3;1739:51;1707:83;1814:3;1804:13;;:18;1800:83;;1841:34;1833:42;1880:3;1832:51;1800:83;1907:3;1897:13;;:18;1893:83;;1934:34;1926:42;1973:3;1925:51;1893:83;2000:4;1990:14;;:19;1986:84;;2028:34;2020:42;2067:3;2019:51;1986:84;2094:4;2084:14;;:19;2080:84;;2122:34;2114:42;2161:3;2113:51;2080:84;2188:4;2178:14;;:19;2174:84;;2216:34;2208:42;2255:3;2207:51;2174:84;2282:4;2272:14;;:19;2268:84;;2310:34;2302:42;2349:3;2301:51;2268:84;2376:5;2366:15;;:20;2362:85;;2405:34;2397:42;2444:3;2396:51;2362:85;2471:5;2461:15;;:20;2457:85;;2500:34;2492:42;2539:3;2491:51;2457:85;2566:5;2556:15;;:20;2552:85;;2595:34;2587:42;2634:3;2586:51;2552:85;2661:5;2651:15;;:20;2647:85;;2690:34;2682:42;2729:3;2681:51;2647:85;2756:6;2746:16;;:21;2742:86;;2786:34;2778:42;2825:3;2777:51;2742:86;2852:6;2842:16;;:21;2838:86;;2882:34;2874:42;2921:3;2873:51;2838:86;2948:6;2938:16;;:21;2934:86;;2978:34;2970:42;3017:3;2969:51;2934:86;3044:6;3034:16;;:21;3030:86;;3074:34;3066:42;3113:3;3065:51;3030:86;3140:7;3130:17;;:22;3126:86;;3171:33;3163:41;3209:3;3162:50;3126:86;3236:7;3226:17;;:22;3222:85;;3267:32;3259:40;3304:3;3258:49;3222:85;3331:7;3321:17;;:22;3317:83;;3362:30;3354:38;3397:3;3353:47;3317:83;3424:7;3414:17;;:22;3410:78;;3455:25;3447:33;3485:3;3446:42;3410:78;3510:1;3503:4;:8;;;3499:47;;;3541:5;-1:-1:-1;;3541:5:33;3521:25;;;;;3513:33;;3499:47;3896:17;;;:22;:30;;3925:1;3896:30;;;3921:1;3896:30;3879:48;;3889:2;3880:5;:11;;3879:48;3856:72;;1355:2580;;;;;:::o;1391:3239:30:-;1638:24;;;;-1:-1:-1;;;;;1797:41:30;;;;;;;;1863:20;;;;;;1894:1354;;1921:30;1954:61;1978:15;2002:7;1996:3;:13;1954:61;;2011:3;1954:15;:61::i;:::-;1921:94;;2040:10;:222;;2175:87;2205:19;2226:18;2246:9;2257:4;2175:29;:87::i;:::-;2040:222;;;2069:87;2099:18;2119:19;2140:9;2151:4;2069:29;:87::i;:::-;2029:233;;2306:8;2280:22;:34;2276:336;;2335:18;2316:37;;2276:336;;;2407:205;2468:19;2509:9;2540:22;2584:10;2407:39;:205::i;:::-;2388:224;;2276:336;1894:1354;;;;2655:10;:224;;2791:88;2821:19;2842:18;2862:9;2873:5;2791:29;:88::i;:::-;2655:224;;;2684:88;2714:18;2734:19;2755:9;2766:5;2684:29;:88::i;:::-;2643:236;;2926:9;2906:15;2905:16;;2897:38;2893:344;;2956:18;2937:37;;2893:344;;;3028:209;3090:19;3131:9;3171:15;3170:16;;3209:10;3028:40;:209::i;:::-;3009:228;;2893:344;-1:-1:-1;;;;;3269:38:30;;;;;;;3358:732;;;;3399:3;:14;;;;;3406:7;3399:14;:145;;3459:85;3489:16;3507:19;3528:9;3539:4;3459:29;:85::i;:::-;3399:145;;;3432:8;3399:145;3388:156;;3570:3;:15;;;;;3578:7;3577:8;3570:15;:148;;3632:86;3662:16;3680:19;3701:9;3712:5;3632:29;:86::i;:::-;3570:148;;;3604:9;3570:148;3558:160;;3358:732;;;3760:3;:14;;;;;3767:7;3760:14;:145;;3820:85;3850:19;3871:16;3889:9;3900:4;3820:29;:85::i;:::-;3760:145;;;3793:8;3760:145;3749:156;;3931:3;:15;;;;;3939:7;3938:8;3931:15;:148;;3993:86;4023:19;4044:16;4062:9;4073:5;3993:29;:86::i;:::-;3931:148;;;3965:9;3931:148;3919:160;;3358:732;4180:7;4179:8;:49;;;;;4212:15;4211:16;;4191:9;:37;4179:49;4175:117;;;4265:15;4264:16;;4244:37;;4175:117;4306:7;:49;;;;-1:-1:-1;;;;;;4317:38:30;;;;;;;;4306:49;4302:322;;;4503:8;4484:15;4476:35;4464:47;;4302:322;;;4554:59;4580:8;4590:7;4554:59;;4605:7;4599:3;:13;4554:59;;:25;:59::i;:::-;4542:71;;4302:322;1391:3239;;;;;;;;;;;;;:::o;924:121:28:-;976:8;-1:-1:-1;;;1004:10:28;;996:19;;;;;;-1:-1:-1;1036:1:28;924:121::o;1573:120:25:-;1662:5;;;1657:16;;;;1629:8;1678:6;;;1657:28;1649:37;;;;;;1573:120;;;;:::o;1276:::-;1365:5;;;1360:16;;;;1332:8;1381:6;;;1360:28;1352:37;;;;;742:3776:23;854:14;;;-1:-1:-1;;1361:1:23;1358;1351:20;1393:9;;;;-1:-1:-1;1444:13:23;;;1428:14;;;;1424:34;;-1:-1:-1;1540:10:23;1536:179;;1588:1;1574:11;:15;1566:24;;;;;;-1:-1:-1;1641:23:23;;;;-1:-1:-1;1691:13:23;;1536:179;1842:5;1828:11;:19;1820:28;;;;;;2125:17;2201:11;2198:1;2195;2188:25;2553:12;2568;;;:26;;2688:22;;;;;3491:1;3472;:15;;3471:21;;3718:17;;;3714:21;;3707:28;3776:17;;;3772:21;;3765:28;3835:17;;;3831:21;;3824:28;3894:17;;;3890:21;;3883:28;3953:17;;;3949:21;;3942:28;4013:17;;;4009:21;;;4002:28;3060:12;;;;3056:23;;;3081:1;3052:31;2330:20;;;2319:32;;;3111:12;;;;2373:21;;;;2816:16;;;;3102:21;;;;4477:11;;;;;-1:-1:-1;;742:3776:23;;;;;;:::o;12646:1943:26:-;12884:20;;12963:15;;;12959:257;;12994:23;13020:4;13025:5;13020:11;;;;;;;;;12994:37;;;;;;;;13020:11;;;;12994:37;;;;;;;;-1:-1:-1;;;12994:37:26;;;;;;;;;;-1:-1:-1;12994:37:26;;;-1:-1:-1;;;12994:37:26;;-1:-1:-1;;;;;12994:37:26;;;;;;;;-1:-1:-1;;;12994:37:26;;;;;;;;;;;;;-1:-1:-1;13049:27:26;;;13045:78;;13085:38;13095:4;13101;13107;13113:9;13085;:38::i;:::-;13078:45;;13045:78;13145:4;:19;;;13166:4;:38;;;13137:68;;;;;;;12959:257;13242:17;;;13226:13;;13346:83;13373:4;13242;:17;13393:4;13399:5;13406:9;13417:11;13346:26;:83::i;:::-;13270:159;;;;13454:10;:25;;;13444:35;;:6;:35;;;13440:1143;;;13545:10;:25;;;13572:10;:44;;;13537:80;;;;;;;;;13440:1143;13648:24;;13638:34;;;;;;;13634:949;;;13739:9;:24;;;13765:9;:43;;;13731:78;;;;;;;;;13634:949;13932:25;;13905:24;;14142:25;;;;;14115:24;;;;13905:52;;;;;13992:34;;;14113:113;;;;;14114:77;;;;14115:52;14114:77;;;;;;;;14113:113;14065:10;:25;;;:161;14516:20;14344:192;;14501:11;14345:167;;14428:10;:44;;;14382:9;:43;;;:90;-1:-1:-1;;;;;14345:153:26;:167;14344:192;;;;;;14244:10;:44;;;:314;14040:532;;;;;;;;;12646:1943;;;;;;;;;;;:::o;8679:837:31:-;9022:10;;;;;;8966:19;9022:10;;;;;;;;;;;;9094:26;;;;;9071:49;;;9042:78;;;9182:26;;;;;9159:49;;;9130:78;;;9292:35;;;;;9448:19;-1:-1:-1;;;;;;;;;;;9292:35:31;;;;;9256:71;;;9218:109;;;;-1:-1:-1;;;;;;;;9218:109:31;;;;;;;9383:26;;;;9366:43;;;9337:72;;;;;-1:-1:-1;;9337:72:31;;;;;;;;9448:19;;;;;9441:26;;;9419:48;;;;-1:-1:-1;;;;9419:48:31;;;;;;;;;;9492:17;-1:-1:-1;;;9492:17:31;;;;;8679:837::o;383:236:24:-;445:9;474:1;470;:5;;;466:147;;;-1:-1:-1;516:2:24;;;;504:15;;-1:-1:-1;;;;;499:25:24;;;;;;;491:40;;;;;-1:-1:-1;;;491:40:24;;;;;;;;;;;;-1:-1:-1;;;491:40:24;;;;;;;;;;;;;;;466:147;;;-1:-1:-1;575:14:24;;;-1:-1:-1;;;;;570:25:24;;;;;;;;562:40;;;;;-1:-1:-1;;;562:40:24;;;;;;;;;;;;-1:-1:-1;;;562:40:24;;;;;;;;;;;;;;4354:4281:33;4427:10;817;-1:-1:-1;;;;;4556:30:33;;;;;;:63;;-1:-1:-1;997:49:33;-1:-1:-1;;;;;4590:29:33;;;4556:63;4548:77;;;;;-1:-1:-1;;;4548:77:33;;;;;;;;;;;;-1:-1:-1;;;4548:77:33;;;;;;;;;;;;;;;-1:-1:-1;;;;;4676:2:33;4651:27;;;;-1:-1:-1;;;;;4781:41:33;;4778:1;4774:49;4871:9;;;4944:18;4938:25;;4935:1;4931:33;5012:9;;;5085:10;5079:17;;5076:1;5072:25;5145:9;;;5218:6;5212:13;;5209:1;5205:21;5274:9;;;5347:4;5341:11;;5338:1;5334:19;;;5401:9;;;5474:3;5468:10;;5465:1;5461:18;5527:9;;;5594:10;;;-1:-1:-1;5587:18:33;;;5653:9;;;;5713:10;;;4984;;5117;;;5246;;;5373;5499;;;5625;5743;-1:-1:-1;5777:10:33;;5773:79;;5809:3;5803;:9;5793:5;:20;;5789:24;;5773:79;;;5848:3;5842;:9;5832:5;:20;;5828:24;;5773:79;5951:9;;;5946:3;5942:19;;;5983:11;;;;6055:9;;;;6120;;6111:19;;;6152:11;;;6224:9;6289;;6280:19;;;6321:11;;;6393:9;6458;;6449:19;;;6490:11;;;6562:9;6627;;6618:19;;;6659:11;;;6731:9;6796;;6787:19;;;6828:11;;;6900:9;6965;;6956:19;;;6997:11;;;7069:9;7134;;7125:19;;;7166:11;;;7238:9;7303;;7294:19;;;7335:11;;;7407:9;7472;;7463:19;;;7504:11;;;7576:9;7641;;7632:19;;;7673:11;;;7745:9;7810;;7801:19;;;7842:11;;;7914:9;7979;;7970:19;;;8011:11;;;;8083:9;;;;8148;;8139:19;;;;;5951:9;-1:-1:-1;;5879:17:33;;5901:2;5878:25;6026:10;;;;;;;6016:21;6195:10;;;;;;;6185:21;;;;6364:10;;;;;;;6354:21;;;;6533:10;;;;;;;6523:21;;;;6702:10;;;;;;;6692:21;;;;6871:10;;;;;;;6861:21;;;;7040:10;;;;;;;7030:21;7209:10;;;;;-1:-1:-1;;;7209:10:33;7199:21;7378:10;;;;;;;7368:21;7547:10;;;;;;;7537:21;7716:10;;;;;;;7706:21;7885:10;;;;;;;7875:21;8054:10;;;;;;;8044:21;8223:10;;;;;;;8213:21;8285:24;8277:32;;-1:-1:-1;;8361:53:33;;5893:3;8360:62;;;;8471:39;8455:55;;8454:64;;8537:17;;;;;;;;;:91;;-1:-1:-1;;;;;8567:42:33;;:26;8586:6;8567:18;:26::i;:::-;-1:-1:-1;;;;;8567:42:33;;;:61;;8621:7;8567:61;;;8612:6;8567:61;8537:91;;;8557:7;8537:91;8530:98;4354:4281;-1:-1:-1;;;;;;;;;4354:4281:33:o;4432:902:26:-;4672:19;4693:25;4730:23;4756:4;4761:5;4756:11;;;;;;;;;4730:37;;;;;;;;4756:11;;;;4730:37;;;;;;;;-1:-1:-1;;;4730:37:26;;;;;;;;;;-1:-1:-1;4730:37:26;;;-1:-1:-1;;;4730:37:26;;-1:-1:-1;;;;;4730:37:26;;;;;;;;-1:-1:-1;;;4730:37:26;;;;;;;;;;;;;-1:-1:-1;4857:37:26;;;4853:70;;;4904:5;4911:11;4896:27;;;;;;;4853:70;5024:11;5006:29;;:15;:29;;;:59;;;;;5063:1;5049:11;:15;5039:26;;:5;:26;;;5006:59;5002:189;;;5102:15;5081:36;;5002:189;;;5169:11;5148:32;;5002:189;5230:18;5216:32;;5217:5;5225:1;5217:9;5216:32;;;;;;;;5201:47;;5279:48;5289:4;5295:14;5311:4;5317:9;5279;:48::i;:::-;5258:4;5263:12;5258:18;;;;;;;;;:69;;:18;;:69;;;;;;;;;;;;;;;;;-1:-1:-1;;;5258:69:26;-1:-1:-1;;;;;;;;;;5258:69:26;;;-1:-1:-1;;;5258:69:26;;;;;;;;;-1:-1:-1;;;5258:69:26;-1:-1:-1;;5258:69:26;;;;-1:-1:-1;;5258:69:26;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4432:902:26;;;;-1:-1:-1;4432:902:26;-1:-1:-1;;;;;;4432:902:26:o;602:328:34:-;774:66;;;-1:-1:-1;;;;;774:66:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;774:66:34;-1:-1:-1;;;774:66:34;;;763:78;;;;-1:-1:-1;;;;763:10:34;;;;774:66;763:78;;;774:66;763:78;;774:66;763:78;;;;;;;;;;-1:-1:-1;;763:78:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;715:126;;;;859:7;:57;;;;-1:-1:-1;871:11:34;;:16;;:44;;;902:4;891:24;;;;;;;;;;;;;;;-1:-1:-1;891:24:34;871:44;851:72;;;;;-1:-1:-1;;;851:72:34;;;;;;;;;;;;-1:-1:-1;;;851:72:34;;;;;;;;;;;;;;;602:328;;;;;:::o;5339:297:5:-;5466:71;;;5531:4;5466:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5466:71:5;-1:-1:-1;;;5466:71:5;;;5448:90;;;;-1:-1:-1;;;;;;;;;;;5448:6:5;:17;;5466:71;;5448:90;;;;5466:71;5448:90;;5466:71;5448:90;;;;;;;;;;-1:-1:-1;;5448:90:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5400:138;;;;5556:7;:28;;;;;5582:2;5567:4;:11;:17;;5556:28;5548:37;;;;;;5613:4;5602:27;;;;;;;;;;;;;;;-1:-1:-1;5602:27:5;;-1:-1:-1;;;5339:297:5;:::o;435:111:25:-;527:5;;;522:16;;;;514:25;;;;;5819:297:5;5946:71;;;6011:4;5946:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5946:71:5;-1:-1:-1;;;5946:71:5;;;5928:90;;;;-1:-1:-1;;;;;;;;;;;5928:6:5;:17;;5946:71;;5928:90;;;;5946:71;;5928:90;;;;5946:71;;5928:90;;;;;;;;-1:-1:-1;;5928:90:5;;;;;;;;;;;;5713:549:26;5837:6;5873:1;5863:7;:11;;;5855:25;;;;;-1:-1:-1;;;5855:25:26;;;;;;;;;;;;-1:-1:-1;;;5855:25:26;;;;;;;;;;;;;;;5986:7;5978:15;;:4;:15;;;5974:35;;-1:-1:-1;6002:7:26;5995:14;;5974:35;6184:7;6168:66;6197:4;6193:8;;:1;:8;;;6168:66;;;6233:1;6208:4;6213:1;6208:7;;;;;;;;;;:26;;-1:-1:-1;;6208:26:26;;;;;;;;;;;;-1:-1:-1;6203:3:26;6168:66;;;-1:-1:-1;6251:4:26;;5713:549;-1:-1:-1;;;5713:549:26:o;652:107:28:-;750:1;731:20;;;;;;723:29;;;;;11757:2813:5;11887:30;11931:14;11959;1036:22:3;:20;:22::i;:::-;11998:46:5::1;12009:6;:16;;;12027:6;:16;;;11998:10;:46::i;:::-;12055:27;::::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;12055:27:5;-1:-1:-1;;;;;12055:27:5;::::1;::::0;;-1:-1:-1;;;12055:27:5;::::1;;::::0;;::::1;::::0;::::1;::::0;::::1;;::::0;;::::1;::::0;;;::::1;-1:-1:-1::0;;;12055:27:5;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;12055:27:5;::::1;::::0;::::1;::::0;;;;;;;;-1:-1:-1;;;12055:27:5;::::1;::::0;;::::1;::::0;;;;::::1;-1:-1:-1::0;;;12055:27:5;::::1;::::0;::::1;-1:-1:-1::0;12055:27:5;;;-1:-1:-1;;;12055:27:5;;::::1;::::0;;::::1;;;::::0;;;;12163:12;;12189:16;;::::1;::::0;12219;;::::1;::::0;12249:21;;::::1;::::0;12055:27;;12134:171:::1;::::0;12163:12;;12189:16;;12219;;12249:21;12134:15:::1;:171::i;:::-;12123:182;;12320:6;:21;;;:26;;12345:1;12320:26;12316:2248;;12380:6;:16;;;12366:30;;:6;:11;;;:30;;;12362:2192;;;12655:224;12706:45;12734:6;:16;;;12706:27;:45::i;:::-;12773;12801:6;:16;;;12773:27;:45::i;:::-;12840:6;:21;;;12655:29;:224::i;:::-;12645:234;;12362:2192;;;12918:6;:16;;;12904:30;;:6;:11;;;:30;;;12900:1654;;;13039:9;::::0;13235:23:::1;::::0;::::1;::::0;-1:-1:-1;;;;;13039:9:5;;::::1;::::0;13195:296:::1;::::0;13280:17:::1;:15;:17::i;:::-;13319:11;::::0;::::1;::::0;13389:29:::1;::::0;::::1;::::0;13440:33:::1;::::0;::::1;::::0;13195:12:::1;::::0;:296;;13319:11;13352:15;;13195:18:::1;:296::i;:::-;13139:5;13138:353:::0;;-1:-1:-1;;;;13138:353:5::1;-1:-1:-1::0;;;;13138:353:5;;::::1;;;-1:-1:-1::0;;;;13138:353:5::1;-1:-1:-1::0;;;13138:353:5;;;::::1;::::0;;;::::1;;::::0;;13571:19;;13640:16:::1;::::0;::::1;::::0;13520:198:::1;::::0;13571:19;13612:45:::1;::::0;:27:::1;:45::i;:::-;13679:6;:21;;;13520:29;:198::i;:::-;13510:208;;13746:198;13797:45;13825:6;:16;;;13797:27;:45::i;:::-;13864:19:::0;;13905:21:::1;::::0;::::1;::::0;13746:29:::1;:198::i;:::-;13736:208;;13975:62;13998:15;14015:6;:21;;;13975:22;:62::i;:::-;13963:9;:74:::0;;-1:-1:-1;;;;;;13963:74:5::1;-1:-1:-1::0;;;;;13963:74:5;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;12900:1654:5::1;;;14315:224;14366:45;14394:6;:16;;;14366:27;:45::i;:::-;14433;14461:6;:16;;;14433:27;:45::i;:::-;14500:6;:21;;;14315:29;:224::i;:::-;14305:234;;12900:1654;1068:1:3;11757:2813:5::0;;;;;:::o;4800:315:23:-;4922:14;4957:25;4964:1;4967;4970:11;4957:6;:25::i;:::-;4948:34;;5024:1;5009:11;4996:25;;;;;5006:1;5003;4996:25;:29;4992:117;;;-1:-1:-1;;5049:26:23;;5041:35;;;;;;5090:8;;4800:315;;;;;:::o;1246:284:27:-;1476:45;;;;;;;;-1:-1:-1;;1476:45:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1466:56;;;;;;;;;-1:-1:-1;1461:62:27;;;;;;;;;1246:284::o;15543:862:26:-;15785:30;15817:51;15902:1;15888:11;:15;;;15880:29;;;;;-1:-1:-1;;;15880:29:26;;;;;;;;;;;;-1:-1:-1;;;15880:29:26;;;;;;;;;;;;;;;15950:11;:18;15938:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15938:31:26;;15920:49;;16030:11;:18;16016:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16016:33:26;;15979:70;;16064:9;16059:340;16083:11;:18;16079:1;:22;16059:340;;;16184:204;16215:4;16237;16259:11;16271:1;16259:14;;;;;;;;;;;;;;16291:4;16313:5;16336:9;16363:11;16184:13;:204::i;:::-;16123:15;16139:1;16123:18;;;;;;;;;;;;;16143:34;16178:1;16143:37;;;;;;;;-1:-1:-1;;;;;16122:266:26;;;16143:37;;;;;;;;;;;16122:266;;;;;;;;;;;;;-1:-1:-1;16103:3:26;16059:340;;;;15543:862;;;;;;;;;;:::o;4664:233:5:-;4761:9;4749:21;;:9;:21;;;4741:37;;;;;-1:-1:-1;;;4741:37:5;;;;;;;;;;;;-1:-1:-1;;;4741:37:5;;;;;;;;;;;;;;;-1:-1:-1;;4796:30:5;;;;;;4788:46;;;;;-1:-1:-1;;;4788:46:5;;;;;;;;;;;;-1:-1:-1;;;4788:46:5;;;;;;;;;;;;;;;637:9:33;4852:30:5;;;;;;4844:46;;;;;-1:-1:-1;;;4844:46:5;;;;;;;;;;;;-1:-1:-1;;;4844:46:5;;;;;;;;;;;;;;;4664:233;;:::o;2888:367:26:-;3056:169;;;;;;;;;;;;;;;-1:-1:-1;3056:169:26;;;;;;;;;;;;;3210:4;3056:169;;;;;;;3046:179;;-1:-1:-1;;3046:179:26;;;;;;;-1:-1:-1;;;3046:179:26;;;;3210:4;;;2888:367::o;686:160:32:-;793:9;;801:1;793:9;;;;835:3;828:10;;;;686:160::o;671:731:20:-;733:7;764:1;760;:5;752:14;;;;;;-1:-1:-1;;;781:40:20;;777:102;;843:3;837:9;;;;860:8;777:102;897:19;892:1;:24;888:84;;938:2;932:8;;;;954:7;888:84;-1:-1:-1;;;985:16:20;;981:76;;1023:2;1017:8;;;;1039:7;981:76;1075:7;1070:1;:12;1066:72;;1104:2;1098:8;;;;1120:7;1066:72;1156:5;1151:1;:10;1147:68;;1183:1;1177:7;;;;1198:6;1147:68;1233:4;1228:1;:9;1224:67;;1259:1;1253:7;;;;1274:6;1224:67;1309:3;1304:1;:8;1300:66;;1334:1;1328:7;;;;1349:6;1300:66;1384:3;1379:1;:8;1375:20;;1394:1;1389:6;671:731;;;:::o;1893:894::-;1956:7;1987:1;1983;:5;1975:14;;;;;;-1:-1:-1;2004:3:20;-1:-1:-1;;;;;2021:21:20;;:25;2017:104;;-1:-1:-1;;2062:8:20;2017:104;;;2107:3;2101:9;;;;;2017:104;2138:16;2134:20;;:24;2130:101;;-1:-1:-1;;2174:7:20;2130:101;;;2218:2;2212:8;;;;;2130:101;2248:16;2244:20;;:24;2240:101;;-1:-1:-1;;2284:7:20;2240:101;;;2328:2;2322:8;;;;;2240:101;2358:16;2354:20;;:24;2350:101;;-1:-1:-1;;2394:7:20;2350:101;;;2438:2;2432:8;;;;;2350:101;2468:15;2464:19;;:23;2460:98;;-1:-1:-1;;2503:6:20;2460:98;;;2546:1;2540:7;;;;;2460:98;2575:3;2571:7;;:11;2567:86;;-1:-1:-1;;2598:6:20;2567:86;;;2641:1;2635:7;;;;;2567:86;2670:3;2666:7;;:11;2662:86;;-1:-1:-1;;2693:6:20;2662:86;;;2736:1;2730:7;;;;;2662:86;2765:3;2761:7;;:11;2757:23;;-1:-1:-1;;2774:6:20;;1893:894;-1:-1:-1;1893:894:20:o;8727:532:29:-;8892:15;-1:-1:-1;;;;;8923:29:29;;;;;;;8919:98;;;8988:13;;9003;8919:98;9047:7;:205;;9177:75;-1:-1:-1;;;;;9177:75:29;;-1:-1:-1;;;;;9204:29:29;;;9177:75;-1:-1:-1;;;9177:15:29;:75::i;:::-;9047:205;;;9073:85;-1:-1:-1;;;;;9073:85:29;;-1:-1:-1;;;;;9110:29:29;;;9073:85;-1:-1:-1;;;9073:25:29;:85::i;:::-;9028:224;;8727:532;;;;;;;:::o;7493:779::-;7658:15;-1:-1:-1;;;;;7689:29:29;;;;;;;7685:98;;;7754:13;;7769;7685:98;-1:-1:-1;;;;;;;;7815:45:29;;;;-1:-1:-1;;;;;7891:29:29;;;7870:50;;;7939:17;;7931:26;;;;;;7987:7;:278;;-1:-1:-1;;;;;8195:70:29;;;;:54;;8211:10;;8223;;8195:54;;:15;:54::i;:::-;:70;;;;;;7987:278;;;8013:163;8059:64;8085:10;8097;-1:-1:-1;;;;;8059:64:29;;:25;:64::i;:::-;-1:-1:-1;;;;;8013:163:29;;:24;:163::i;:::-;7968:297;7493:779;-1:-1:-1;;;;;;;7493:779:29:o;5299:550::-;5467:16;-1:-1:-1;;;;;5503:12:29;;5495:21;;;;;;-1:-1:-1;;;;;5534:13:29;;5526:22;;;;;;5644:10;:198;;5766:76;5806:8;5816:9;5827:8;5837:4;5766:39;:76::i;5644:198::-;5673:74;5711:8;5721:9;5732:8;5742:4;5673:37;:74::i;6395:550::-;6565:16;-1:-1:-1;;;;;6601:12:29;;6593:21;;;;;;-1:-1:-1;;;;;6632:13:29;;6624:22;;;;;;6736:10;:202;;6862:76;6900:8;6910:9;6921;6932:5;6862:37;:76::i;6736:202::-;6765:78;6805:8;6815:9;6826;6837:5;6765:39;:78::i;1804:633:26:-;1962:18;;:::i;:::-;1992:12;2024:4;:19;;;2007:14;:36;1992:51;;2072:358;;;;;;;;2118:14;2072:358;;;;;;2202:5;2188:19;;2194:4;2188:11;;:19;2166:4;:19;;;:41;2072:358;;;;;;2361:1;2349:9;-1:-1:-1;;;;;2349:13:26;;:29;;2377:1;2349:29;;;2365:9;2349:29;-1:-1:-1;;;;;2322:57:26;-1:-1:-1;2323:21:26;;;-1:-1:-1;;;2323:21:26;2322:57;;;;;;2260:4;:38;;;:120;-1:-1:-1;;;;;2072:358:26;;;;;2411:4;2072:358;;;;;2053:377;;;1804:633;;;;;;:::o;10110:1425::-;10356:29;;:::i;:::-;10387:28;;:::i;:::-;10503:4;10508:5;10503:11;;;;;;;;;10490:24;;;;;;;;10503:11;;;;10490:24;;;;;;;-1:-1:-1;;;10490:24:26;;;;;;;;;;-1:-1:-1;10490:24:26;;;-1:-1:-1;;;10490:24:26;;-1:-1:-1;;;;;10490:24:26;;;;;;;;-1:-1:-1;;;10490:24:26;;;;;;;;;;;-1:-1:-1;10629:44:26;;10633:4;;10666:6;10629:3;:44::i;:::-;10625:443;;;10722:6;10693:35;;:10;:25;;;:35;;;10689:369;;;10856:30;;10689:369;10984:10;10996:46;11006:10;11018:6;11026:4;11032:9;10996;:46::i;:::-;10976:67;;;;;;10689:369;11144:4;11163:11;11149:25;;11150:5;11158:1;11150:9;11149:25;;;;;;;;11144:31;;;;;;;;;11131:44;;;;;;;;11144:31;;;;11131:44;;;;;;-1:-1:-1;;;11131:44:26;;;;;;;;;;-1:-1:-1;11131:44:26;;;-1:-1:-1;;;11131:44:26;;-1:-1:-1;;;;;11131:44:26;;;;;;;;-1:-1:-1;;;11131:44:26;;;;;;;;;;;;;;;-1:-1:-1;11185:49:26;;11214:20;;;;;;;;;;;;;;;-1:-1:-1;;;11214:20:26;;;;;;;;;;-1:-1:-1;11214:20:26;;;-1:-1:-1;;;11214:20:26;;-1:-1:-1;;;;;11214:20:26;;;;;;;;-1:-1:-1;;;11214:20:26;;;;;;;;;;;;-1:-1:-1;11185:49:26;11341:44;11345:4;11351:10;:25;;;11378:6;11341:3;:44::i;:::-;11333:60;;;;;-1:-1:-1;;;11333:60:26;;;;;;;;;;;;-1:-1:-1;;;11333:60:26;;;;;;;;;;;;;;;11476:52;11489:4;11495;11501:6;11509:5;11516:11;11476:12;:52::i;:::-;11469:59;;;;10110:1425;;;;;;;;;;:::o;14894:2517:5:-;15066:30;15119:42;:9;15133:5;15140:9;15151;15119:13;:42::i;:::-;15204:20;;15296;;15108:53;;-1:-1:-1;15204:20:5;15172:29;;15464:19;;;;;15460:1402;;15499:11;15513:17;:15;:17::i;:::-;15545:20;15725:10;;15801:9;;15499:31;;-1:-1:-1;15545:20:5;;;;15628:250;;:12;;15499:31;;15545:20;;-1:-1:-1;;;15725:10:5;;;;;15757:22;-1:-1:-1;;;15757:22:5;;;;;-1:-1:-1;;;;;15801:9:5;;;;-1:-1:-1;;;15832:28:5;;;15628:26;:250::i;:::-;15544:334;;-1:-1:-1;15544:334:5;-1:-1:-1;15908:350:5;:5;15938:9;15965:4;15987:14;16019:21;16058;15544:334;;16180:4;16202:5;16225:19;15908:12;:350::i;:::-;15893:365;-1:-1:-1;16287:349:5;:5;16317:9;16344:4;16366:14;16398:21;16437;16476:33;16527:14;16559:4;16581;16603:19;16287:12;:349::i;:::-;16272:364;;16655:12;16651:94;;;16687:43;:10;16707:9;16718:11;16687:19;:43::i;:::-;16762:12;16758:94;;;16794:43;:10;16814:9;16825:11;16794:19;:43::i;:::-;15460:1402;;;;16873:28;;16947:98;:5;16972:9;16983;16994:4;17000:21;17023;16947:24;:98::i;:::-;16872:173;;-1:-1:-1;16872:173:5;-1:-1:-1;17056:75:5;:8;17072:14;16872:173;;17056:15;:75::i;:::-;17219:1;17202:14;:18;;;17198:207;;;17240:12;17236:73;;;17272:22;:5;17284:9;17272:11;:22::i;:::-;17326:12;17322:73;;;17358:22;:5;17370:9;17358:11;:22::i;:::-;14894:2517;;;;;;;;;;;;;:::o;9603:412:29:-;9745:14;9802:1;9790:9;:13;;;:218;;9926:82;:71;9942:13;9957;9980:9;9992:4;9926:15;:71::i;:::-;:80;:82::i;:::-;9790:218;;;9823:84;:73;9839:13;9854;9878:9;9877:10;;9890:5;9823:15;:73::i;:84::-;9822:85;;9771:237;9603:412;-1:-1:-1;;;;9603:412:29:o;10359:::-;10501:14;10558:1;10546:9;:13;;;:218;;10682:82;:71;10698:13;10713;10736:9;10748:4;10682:15;:71::i;10546:218::-;10579:84;:73;10595:13;10610;10634:9;10633:10;;10646:5;10579:15;:73::i;492:165:35:-;613:9;;;627;;624:16;;609:32;;590:61::o;3597:1153:29:-;3770:7;3947:3;3943:801;;;3966:16;-1:-1:-1;;;;;4023:27:29;;;:180;;4151:52;4167:6;-1:-1:-1;;;;;;;;4151:52:29;;:15;:52::i;:::-;4023:180;;;-1:-1:-1;;;;;4077:47:29;;309:2:22;4078:33:29;;;4077:47;;;;;;4023:180;3966:255;-1:-1:-1;4243:43:29;:31;-1:-1:-1;;;;;4243:17:29;;3966:255;4243:21;:31::i;:::-;:41;:43::i;:::-;4236:50;;;;;3943:801;4317:16;-1:-1:-1;;;;;4374:27:29;;;:213;;4525:62;4551:6;-1:-1:-1;;;;;;;;4525:62:29;;:25;:62::i;:::-;4374:213;;;4428:70;309:2:22;4453:33:29;;;-1:-1:-1;;;;;4428:70:29;;:24;:70::i;:::-;4317:288;-1:-1:-1;;;;;;4628:19:29;;;-1:-1:-1;4620:28:29;;;;;;-1:-1:-1;;;;;4713:19:29;;;;-1:-1:-1;4698:35:29;;1405:1366;1576:7;1711:11;1707:32;;-1:-1:-1;1731:8:29;1724:15;;1707:32;-1:-1:-1;1770:45:29;;;-1:-1:-1;;;;;;;1770:45:29;1826:939;;;;-1:-1:-1;;;;;1882:50:29;;1893:17;;;;;;;1882:38;;;;;:50;1878:323;;;1974:20;;;2016:25;;;2012:174;;2125:60;2151:10;-1:-1:-1;;;;;2125:60:29;;2173:11;2125:25;:60::i;:::-;2110:76;;;;;;;2012:174;1878:323;;2230:73;2255:10;2267:35;2295:6;-1:-1:-1;;;;;2268:21:29;;2255:10;2268:21;;;;;;;2267:27;:35::i;:::-;2230:24;:73::i;:::-;2215:89;;;;;;1826:939;-1:-1:-1;;;;;2530:50:29;;2541:17;;;;;;;2530:38;;;;;:50;:74;;;;;2597:7;2584:10;:20;2530:74;2522:83;;;;;;2641:20;;;2682:72;:60;2641:20;-1:-1:-1;;;;;2682:60:29;;2641:20;2682:25;:60::i;6696:371:26:-;6794:4;6879;6874:9;;:1;:9;;;;:22;;;;;6892:4;6887:9;;:1;:9;;;;6874:22;6870:41;;;6910:1;6905:6;;:1;:6;;;;6898:13;;;;6870:41;6922:17;6946:4;6942:8;;:1;:8;;;:24;;-1:-1:-1;;;6957:9:26;;;;6942:24;;;6953:1;6942:24;;;6922:44;;;;6976:17;7000:4;6996:8;;:1;:8;;;:24;;-1:-1:-1;;;7011:9:26;;;;6996:24;;;7007:1;6996:24;;;6976:44;;7038:22;;;;;6696:371;-1:-1:-1;;;;;6696:371:26:o;8022:1064::-;8207:29;;:::i;:::-;8238:28;;:::i;:::-;8278:9;8304:11;8290:25;;8291:5;8299:1;8291:9;8290:25;;;;;;;;8278:37;;;;8347:9;8377:1;8363:11;8359:15;;:1;:15;:19;8347:31;;8410:9;8429:651;-1:-1:-1;8470:1:26;8461:5;;;8460:11;8499:4;8504:15;;;8460:11;8504:15;;;;;;8499:21;;;;;;;8486:34;;;;;;;;8499:21;;;;8486:34;;;;;;-1:-1:-1;;;8486:34:26;;;;;;;;;;-1:-1:-1;8486:34:26;;;-1:-1:-1;;;8486:34:26;;-1:-1:-1;;;;;8486:34:26;;;;;;;;-1:-1:-1;;;8486:34:26;;;;;;;;;;;;;;;-1:-1:-1;8627:97:26;;8678:1;8682;8678:5;8674:9;;8701:8;;8627:97;8750:4;8765:11;8755:21;;8756:1;8760;8756:5;8755:21;;;;;;8750:27;;;;;;;8738:39;;;;;;;;8750:27;;;;8738:39;;;;;;-1:-1:-1;;;8738:39:26;;;;;;;;;;-1:-1:-1;8738:39:26;;;-1:-1:-1;;;8738:39:26;;-1:-1:-1;;;;;8738:39:26;;;;;;;;-1:-1:-1;;;8738:39:26;;;;;;;;;;;8825:25;;8738:39;;-1:-1:-1;;;8815:44:26;;8819:4;;8852:6;8815:3;:44::i;:::-;8792:67;;8926:15;:62;;;;;8945:43;8949:4;8955:6;8963:9;:24;;;8945:3;:43::i;:::-;8922:73;;;8990:5;;;8922:73;9015:15;9010:59;;9040:1;9036;:5;9032:9;;9010:59;;;9064:1;9068;9064:5;9060:9;;9010:59;8429:651;;;;8022:1064;;;;;;;;;;;:::o;6010:1689:31:-;6455:10;;;;;;6406:12;6455:10;;;;;;;;;;6507:19;;-1:-1:-1;;;;;6507:19:31;6406:12;6566:60;6507:19;6611:14;6566:22;:60::i;:::-;6536:90;-1:-1:-1;;;;;;6645:35:31;;;;;;;;6637:50;;;;;-1:-1:-1;;;6637:50:31;;;;;;;;;;;;-1:-1:-1;;;6637:50:31;;;;;;;;;;;;;;;-1:-1:-1;;;;;6739:25:31;;;;6709:24;;;;6708:57;;;;-1:-1:-1;6708:57:31;6776:572;;6945:11;6937:19;;:4;:19;;;6933:368;;6976:26;;;:49;;;7043:26;;;:49;;;7110:35;;;:71;;-1:-1:-1;;;;;;;;7110:71:31;-1:-1:-1;;;;;;;;7110:71:31;;;;-1:-1:-1;;7199:43:31;-1:-1:-1;7199:43:31;;;;;;-1:-1:-1;;;;7260:26:31;-1:-1:-1;;;;7260:26:31;;;;;;6933:368;7314:16;;;:23;;-1:-1:-1;;;;;7314:23:31;-1:-1:-1;;;7314:23:31;;;6776:572;7358:41;;-1:-1:-1;;;;;;7358:41:31;-1:-1:-1;;;;;7358:41:31;;;;;7545:5;:147;;7643:17;;7636:56;;:45;;-1:-1:-1;;;7643:17:31;;7636:45;7643:17;;;7636:25;;;:45;;;:29;:45::i;:::-;:54;:56::i;:::-;7545:147;;;7572:17;;7565:56;;:45;;-1:-1:-1;;;7572:17:31;;7565:45;7572:17;;;7565:25;;;:45;;;:29;:45::i;:56::-;7525:167;;-1:-1:-1;;;;;7525:167:31;;;;;;;;;-1:-1:-1;;;7525:167:31;;;;;-1:-1:-1;6010:1689:31;;;-1:-1:-1;;;;;;;;;;;;6010:1689:31:o;1102:348:32:-;1255:11;1248:18;;:4;:18;;;;;;;;:23;;;1240:32;;;;;;1317:13;1332:12;1348:28;1364:11;1357:18;;:4;:18;;;;;;;;1348:8;:28::i;:::-;1401:1;1422:13;;;;;1386:12;1422:13;;;;;;;;;;;;:21;;1401:11;;;;;;;;1422:21;;;;;;-1:-1:-1;;;;1102:348:32:o;3335:1569:31:-;3686:15;;;;;;;3595:28;3686:15;;;;;;;;;;;3732;;;;;;;;;;3595:28;;;;3686:15;;3732;3595:28;;;;3874:24;;;;;3870:356;;-1:-1:-1;;3936:27:31;;;;3999;;;;3870:356;;;4102:5;:27;;;4079:20;:50;4057:72;;4188:5;:27;;;4165:20;:50;4143:72;;3870:356;4274:27;4311;4366:9;4352:23;;:11;:23;;;4348:355;;;-1:-1:-1;;4413:27:31;;;;4476;;;;4348:355;;;4579:5;:27;;;4556:20;:50;4534:72;;4665:5;:27;;;4642:20;:50;4620:72;;4348:355;4736:42;;;;:64;;;;;4833:42;;;;:64;;;;;-1:-1:-1;3335:1569:31;;-1:-1:-1;;;;;;;3335:1569:31:o;2010:1562:27:-;2185:24;;;;;;;;;;-1:-1:-1;;;;;2185:24:27;;;;;-1:-1:-1;2185:24:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2185:24:27;;;;;-1:-1:-1;2185:24:27;;;-1:-1:-1;2255:19:27;;;;2251:275;;2298:15;;-1:-1:-1;;;;;2298:19:27;2290:34;;;;;-1:-1:-1;;;2290:34:27;;;;;;;;;;;;-1:-1:-1;;;2290:34:27;;;;;;;;;;;;;;;-1:-1:-1;2398:15:27;;2251:275;;;2483:15;;2460:55;;2500:14;2460:22;:55::i;:::-;2444:71;;2251:275;2693:30;;;;2745:15;;2574:19;;2633:185;;2670:53;;;;-1:-1:-1;;;;;2633:185:27;-1:-1:-1;;;2633:15:27;:185::i;:::-;2961:30;;;;3013:15;;2574:258;;-1:-1:-1;2842:19:27;;2901:185;;2938:53;;;-1:-1:-1;;;;;2901:185:27;-1:-1:-1;;;2901:15:27;:185::i;:::-;2842:258;;3146:14;:19;;3164:1;3146:19;3142:55;;3167:30;;-1:-1:-1;;;;;;3167:30:27;-1:-1:-1;;;;;3167:30:27;;;;;3142:55;3207:29;;;:52;;;3269:29;;;:52;;;-1:-1:-1;;;;;3335:15:27;;;;;:34;;-1:-1:-1;;;;;;3354:15:27;;;;3335:34;3331:235;;;3479:16;;;:31;;-1:-1:-1;;;;;;3479:31:27;;-1:-1:-1;;;;;3479:31:27;;;;;;;;3524;;;-1:-1:-1;;;3524:31:27;;;;;;;;;;;;;;;3331:235;2010:1562;;;;;;;;:::o;7886:112:31:-;7981:10;;;;;;;;;;;;;;;;;;7974:17;;;;;;;;;;;;;;;;;;7886:112::o;357:111:28:-;459:1;-1:-1:-1;;;;;439:21:28;;;;431:30;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o" - }, - "methodIdentifiers": { - "burn(int24,int24,uint128)": "a34123a7", - "collect(address,int24,int24,uint128,uint128)": "4f1eb3d8", - "collectProtocol(address,uint128,uint128)": "85b66729", - "factory()": "c45a0155", - "fee()": "ddca3f43", - "feeGrowthGlobal0X128()": "f3058399", - "feeGrowthGlobal1X128()": "46141319", - "flash(address,uint256,uint256,bytes)": "490e6cbc", - "increaseObservationCardinalityNext(uint16)": "32148f67", - "initialize(uint160)": "f637731d", - "liquidity()": "1a686502", - "maxLiquidityPerTick()": "70cf754a", - "mint(address,int24,int24,uint128,bytes)": "3c8a7d8d", - "observations(uint256)": "252c09d7", - "observe(uint32[])": "883bdbfd", - "positions(bytes32)": "514ea4bf", - "protocolFees()": "1ad8b03b", - "setFeeProtocol(uint8,uint8)": "8206a4d1", - "slot0()": "3850c7bd", - "snapshotCumulativesInside(int24,int24)": "a38807f2", - "swap(address,bool,int256,uint160,bytes)": "128acb08", - "tickBitmap(int16)": "5339c296", - "tickSpacing()": "d0c93a7c", - "ticks(int24)": "f30dba93", - "token0()": "0dfe1681", - "token1()": "d21220a7" - } - }, - "storageLayout": { - "storage": [ - { - "astId": 1116, - "contract": "@uniswap/v3-core/contracts/UniswapV3Pool.sol:UniswapV3Pool", - "label": "slot0", - "offset": 0, - "slot": "0", - "type": "t_struct(Slot0)1112_storage" - }, - { - "astId": 1120, - "contract": "@uniswap/v3-core/contracts/UniswapV3Pool.sol:UniswapV3Pool", - "label": "feeGrowthGlobal0X128", - "offset": 0, - "slot": "1", - "type": "t_uint256" - }, - { - "astId": 1124, - "contract": "@uniswap/v3-core/contracts/UniswapV3Pool.sol:UniswapV3Pool", - "label": "feeGrowthGlobal1X128", - "offset": 0, - "slot": "2", - "type": "t_uint256" - }, - { - "astId": 1133, - "contract": "@uniswap/v3-core/contracts/UniswapV3Pool.sol:UniswapV3Pool", - "label": "protocolFees", - "offset": 0, - "slot": "3", - "type": "t_struct(ProtocolFees)1129_storage" - }, - { - "astId": 1137, - "contract": "@uniswap/v3-core/contracts/UniswapV3Pool.sol:UniswapV3Pool", - "label": "liquidity", - "offset": 0, - "slot": "4", - "type": "t_uint128" - }, - { - "astId": 1143, - "contract": "@uniswap/v3-core/contracts/UniswapV3Pool.sol:UniswapV3Pool", - "label": "ticks", - "offset": 0, - "slot": "5", - "type": "t_mapping(t_int24,t_struct(Info)6654_storage)" - }, - { - "astId": 1149, - "contract": "@uniswap/v3-core/contracts/UniswapV3Pool.sol:UniswapV3Pool", - "label": "tickBitmap", - "offset": 0, - "slot": "6", - "type": "t_mapping(t_int16,t_uint256)" - }, - { - "astId": 1155, - "contract": "@uniswap/v3-core/contracts/UniswapV3Pool.sol:UniswapV3Pool", - "label": "positions", - "offset": 0, - "slot": "7", - "type": "t_mapping(t_bytes32,t_struct(Info)5621_storage)" - }, - { - "astId": 1161, - "contract": "@uniswap/v3-core/contracts/UniswapV3Pool.sol:UniswapV3Pool", - "label": "observations", - "offset": 0, - "slot": "8", - "type": "t_array(t_struct(Observation)4881_storage)65535_storage" - } - ], - "types": { - "t_array(t_struct(Observation)4881_storage)65535_storage": { - "base": "t_struct(Observation)4881_storage", - "encoding": "inplace", - "label": "struct Oracle.Observation[65535]", - "numberOfBytes": "2097120" - }, - "t_bool": { - "encoding": "inplace", - "label": "bool", - "numberOfBytes": "1" - }, - "t_bytes32": { - "encoding": "inplace", - "label": "bytes32", - "numberOfBytes": "32" - }, - "t_int128": { - "encoding": "inplace", - "label": "int128", - "numberOfBytes": "16" - }, - "t_int16": { - "encoding": "inplace", - "label": "int16", - "numberOfBytes": "2" - }, - "t_int24": { - "encoding": "inplace", - "label": "int24", - "numberOfBytes": "3" - }, - "t_int56": { - "encoding": "inplace", - "label": "int56", - "numberOfBytes": "7" - }, - "t_mapping(t_bytes32,t_struct(Info)5621_storage)": { - "encoding": "mapping", - "key": "t_bytes32", - "label": "mapping(bytes32 => struct Position.Info)", - "numberOfBytes": "32", - "value": "t_struct(Info)5621_storage" - }, - "t_mapping(t_int16,t_uint256)": { - "encoding": "mapping", - "key": "t_int16", - "label": "mapping(int16 => uint256)", - "numberOfBytes": "32", - "value": "t_uint256" - }, - "t_mapping(t_int24,t_struct(Info)6654_storage)": { - "encoding": "mapping", - "key": "t_int24", - "label": "mapping(int24 => struct Tick.Info)", - "numberOfBytes": "32", - "value": "t_struct(Info)6654_storage" - }, - "t_struct(Info)5621_storage": { - "encoding": "inplace", - "label": "struct Position.Info", - "members": [ - { - "astId": 5612, - "contract": "@uniswap/v3-core/contracts/UniswapV3Pool.sol:UniswapV3Pool", - "label": "liquidity", - "offset": 0, - "slot": "0", - "type": "t_uint128" - }, - { - "astId": 5614, - "contract": "@uniswap/v3-core/contracts/UniswapV3Pool.sol:UniswapV3Pool", - "label": "feeGrowthInside0LastX128", - "offset": 0, - "slot": "1", - "type": "t_uint256" - }, - { - "astId": 5616, - "contract": "@uniswap/v3-core/contracts/UniswapV3Pool.sol:UniswapV3Pool", - "label": "feeGrowthInside1LastX128", - "offset": 0, - "slot": "2", - "type": "t_uint256" - }, - { - "astId": 5618, - "contract": "@uniswap/v3-core/contracts/UniswapV3Pool.sol:UniswapV3Pool", - "label": "tokensOwed0", - "offset": 0, - "slot": "3", - "type": "t_uint128" - }, - { - "astId": 5620, - "contract": "@uniswap/v3-core/contracts/UniswapV3Pool.sol:UniswapV3Pool", - "label": "tokensOwed1", - "offset": 16, - "slot": "3", - "type": "t_uint128" - } - ], - "numberOfBytes": "128" - }, - "t_struct(Info)6654_storage": { - "encoding": "inplace", - "label": "struct Tick.Info", - "members": [ - { - "astId": 6639, - "contract": "@uniswap/v3-core/contracts/UniswapV3Pool.sol:UniswapV3Pool", - "label": "liquidityGross", - "offset": 0, - "slot": "0", - "type": "t_uint128" - }, - { - "astId": 6641, - "contract": "@uniswap/v3-core/contracts/UniswapV3Pool.sol:UniswapV3Pool", - "label": "liquidityNet", - "offset": 16, - "slot": "0", - "type": "t_int128" - }, - { - "astId": 6643, - "contract": "@uniswap/v3-core/contracts/UniswapV3Pool.sol:UniswapV3Pool", - "label": "feeGrowthOutside0X128", - "offset": 0, - "slot": "1", - "type": "t_uint256" - }, - { - "astId": 6645, - "contract": "@uniswap/v3-core/contracts/UniswapV3Pool.sol:UniswapV3Pool", - "label": "feeGrowthOutside1X128", - "offset": 0, - "slot": "2", - "type": "t_uint256" - }, - { - "astId": 6647, - "contract": "@uniswap/v3-core/contracts/UniswapV3Pool.sol:UniswapV3Pool", - "label": "tickCumulativeOutside", - "offset": 0, - "slot": "3", - "type": "t_int56" - }, - { - "astId": 6649, - "contract": "@uniswap/v3-core/contracts/UniswapV3Pool.sol:UniswapV3Pool", - "label": "secondsPerLiquidityOutsideX128", - "offset": 7, - "slot": "3", - "type": "t_uint160" - }, - { - "astId": 6651, - "contract": "@uniswap/v3-core/contracts/UniswapV3Pool.sol:UniswapV3Pool", - "label": "secondsOutside", - "offset": 27, - "slot": "3", - "type": "t_uint32" - }, - { - "astId": 6653, - "contract": "@uniswap/v3-core/contracts/UniswapV3Pool.sol:UniswapV3Pool", - "label": "initialized", - "offset": 31, - "slot": "3", - "type": "t_bool" - } - ], - "numberOfBytes": "128" - }, - "t_struct(Observation)4881_storage": { - "encoding": "inplace", - "label": "struct Oracle.Observation", - "members": [ - { - "astId": 4874, - "contract": "@uniswap/v3-core/contracts/UniswapV3Pool.sol:UniswapV3Pool", - "label": "blockTimestamp", - "offset": 0, - "slot": "0", - "type": "t_uint32" - }, - { - "astId": 4876, - "contract": "@uniswap/v3-core/contracts/UniswapV3Pool.sol:UniswapV3Pool", - "label": "tickCumulative", - "offset": 4, - "slot": "0", - "type": "t_int56" - }, - { - "astId": 4878, - "contract": "@uniswap/v3-core/contracts/UniswapV3Pool.sol:UniswapV3Pool", - "label": "secondsPerLiquidityCumulativeX128", - "offset": 11, - "slot": "0", - "type": "t_uint160" - }, - { - "astId": 4880, - "contract": "@uniswap/v3-core/contracts/UniswapV3Pool.sol:UniswapV3Pool", - "label": "initialized", - "offset": 31, - "slot": "0", - "type": "t_bool" - } - ], - "numberOfBytes": "32" - }, - "t_struct(ProtocolFees)1129_storage": { - "encoding": "inplace", - "label": "struct UniswapV3Pool.ProtocolFees", - "members": [ - { - "astId": 1126, - "contract": "@uniswap/v3-core/contracts/UniswapV3Pool.sol:UniswapV3Pool", - "label": "token0", - "offset": 0, - "slot": "0", - "type": "t_uint128" - }, - { - "astId": 1128, - "contract": "@uniswap/v3-core/contracts/UniswapV3Pool.sol:UniswapV3Pool", - "label": "token1", - "offset": 16, - "slot": "0", - "type": "t_uint128" - } - ], - "numberOfBytes": "32" - }, - "t_struct(Slot0)1112_storage": { - "encoding": "inplace", - "label": "struct UniswapV3Pool.Slot0", - "members": [ - { - "astId": 1099, - "contract": "@uniswap/v3-core/contracts/UniswapV3Pool.sol:UniswapV3Pool", - "label": "sqrtPriceX96", - "offset": 0, - "slot": "0", - "type": "t_uint160" - }, - { - "astId": 1101, - "contract": "@uniswap/v3-core/contracts/UniswapV3Pool.sol:UniswapV3Pool", - "label": "tick", - "offset": 20, - "slot": "0", - "type": "t_int24" - }, - { - "astId": 1103, - "contract": "@uniswap/v3-core/contracts/UniswapV3Pool.sol:UniswapV3Pool", - "label": "observationIndex", - "offset": 23, - "slot": "0", - "type": "t_uint16" - }, - { - "astId": 1105, - "contract": "@uniswap/v3-core/contracts/UniswapV3Pool.sol:UniswapV3Pool", - "label": "observationCardinality", - "offset": 25, - "slot": "0", - "type": "t_uint16" - }, - { - "astId": 1107, - "contract": "@uniswap/v3-core/contracts/UniswapV3Pool.sol:UniswapV3Pool", - "label": "observationCardinalityNext", - "offset": 27, - "slot": "0", - "type": "t_uint16" - }, - { - "astId": 1109, - "contract": "@uniswap/v3-core/contracts/UniswapV3Pool.sol:UniswapV3Pool", - "label": "feeProtocol", - "offset": 29, - "slot": "0", - "type": "t_uint8" - }, - { - "astId": 1111, - "contract": "@uniswap/v3-core/contracts/UniswapV3Pool.sol:UniswapV3Pool", - "label": "unlocked", - "offset": 30, - "slot": "0", - "type": "t_bool" - } - ], - "numberOfBytes": "32" - }, - "t_uint128": { - "encoding": "inplace", - "label": "uint128", - "numberOfBytes": "16" - }, - "t_uint16": { - "encoding": "inplace", - "label": "uint16", - "numberOfBytes": "2" - }, - "t_uint160": { - "encoding": "inplace", - "label": "uint160", - "numberOfBytes": "20" - }, - "t_uint256": { - "encoding": "inplace", - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint32": { - "encoding": "inplace", - "label": "uint32", - "numberOfBytes": "4" - }, - "t_uint8": { - "encoding": "inplace", - "label": "uint8", - "numberOfBytes": "1" - } - } - } - } - }, - "@uniswap/v3-core/contracts/UniswapV3PoolDeployer.sol": { - "UniswapV3PoolDeployer": { - "abi": [ - { - "inputs": [], - "name": "parameters", - "outputs": [ - { - "internalType": "address", - "name": "factory", - "type": "address" - }, - { - "internalType": "address", - "name": "token0", - "type": "address" - }, - { - "internalType": "address", - "name": "token1", - "type": "address" - }, - { - "internalType": "uint24", - "name": "fee", - "type": "uint24" - }, - { - "internalType": "int24", - "name": "tickSpacing", - "type": "int24" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "evm": { - "bytecode": { - "generatedSources": [], - "linkReferences": {}, - "object": "608060405234801561001057600080fd5b5060e18061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80638903573014602d575b600080fd5b60336075565b604080516001600160a01b0396871681529486166020860152929094168383015262ffffff16606083015260029290920b608082015290519081900360a00190f35b600054600154600280546001600160a01b03938416939283169281169162ffffff600160a01b83041691600160b81b9004900b8556fea264697066735822122089924758a634a6ddcc1201515540f84d2140acfc29ffa2b48210252b2f30cc5764736f6c63430007060033", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xE1 DUP1 PUSH2 0x1F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x89035730 EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x33 PUSH1 0x75 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP7 DUP8 AND DUP2 MSTORE SWAP5 DUP7 AND PUSH1 0x20 DUP7 ADD MSTORE SWAP3 SWAP1 SWAP5 AND DUP4 DUP4 ADD MSTORE PUSH3 0xFFFFFF AND PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x2 SWAP3 SWAP1 SWAP3 SIGNEXTEND PUSH1 0x80 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 RETURN JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 SLOAD PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND SWAP4 SWAP3 DUP4 AND SWAP3 DUP2 AND SWAP2 PUSH3 0xFFFFFF PUSH1 0x1 PUSH1 0xA0 SHL DUP4 DIV AND SWAP2 PUSH1 0x1 PUSH1 0xB8 SHL SWAP1 DIV SWAP1 SIGNEXTEND DUP6 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP10 SWAP3 SELFBALANCE PC 0xA6 CALLVALUE 0xA6 0xDD 0xCC SLT ADD MLOAD SSTORE BLOCKHASH 0xF8 0x4D 0x21 BLOCKHASH 0xAC 0xFC 0x29 SELFDESTRUCT LOG2 0xB4 DUP3 LT 0x25 0x2B 0x2F ADDRESS 0xCC JUMPI PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ", - "sourceMap": "144:1263:6:-:0;;;;;;;;;;;;;;;;;;;" - }, - "deployedBytecode": { - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "6080604052348015600f57600080fd5b506004361060285760003560e01c80638903573014602d575b600080fd5b60336075565b604080516001600160a01b0396871681529486166020860152929094168383015262ffffff16606083015260029290920b608082015290519081900360a00190f35b600054600154600280546001600160a01b03938416939283169281169162ffffff600160a01b83041691600160b81b9004900b8556fea264697066735822122089924758a634a6ddcc1201515540f84d2140acfc29ffa2b48210252b2f30cc5764736f6c63430007060033", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x89035730 EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x33 PUSH1 0x75 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP7 DUP8 AND DUP2 MSTORE SWAP5 DUP7 AND PUSH1 0x20 DUP7 ADD MSTORE SWAP3 SWAP1 SWAP5 AND DUP4 DUP4 ADD MSTORE PUSH3 0xFFFFFF AND PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0x2 SWAP3 SWAP1 SWAP3 SIGNEXTEND PUSH1 0x80 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 RETURN JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 SLOAD PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND SWAP4 SWAP3 DUP4 AND SWAP3 DUP2 AND SWAP2 PUSH3 0xFFFFFF PUSH1 0x1 PUSH1 0xA0 SHL DUP4 DIV AND SWAP2 PUSH1 0x1 PUSH1 0xB8 SHL SWAP1 DIV SWAP1 SIGNEXTEND DUP6 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP10 SWAP3 SELFBALANCE PC 0xA6 CALLVALUE 0xA6 0xDD 0xCC SLT ADD MLOAD SSTORE BLOCKHASH 0xF8 0x4D 0x21 BLOCKHASH 0xAC 0xFC 0x29 SELFDESTRUCT LOG2 0xB4 DUP3 LT 0x25 0x2B 0x2F ADDRESS 0xCC JUMPI PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ", - "sourceMap": "144:1263:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;401:37;;;:::i;:::-;;;;-1:-1:-1;;;;;401:37:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;401:37:6;;;;;;;;;;;;-1:-1:-1;;;401:37:6;;;;-1:-1:-1;;;401:37:6;;;;;:::o" - }, - "methodIdentifiers": { - "parameters()": "89035730" - } - }, - "storageLayout": { - "storage": [ - { - "astId": 3512, - "contract": "@uniswap/v3-core/contracts/UniswapV3PoolDeployer.sol:UniswapV3PoolDeployer", - "label": "parameters", - "offset": 0, - "slot": "0", - "type": "t_struct(Parameters)3508_storage" - } - ], - "types": { - "t_address": { - "encoding": "inplace", - "label": "address", - "numberOfBytes": "20" - }, - "t_int24": { - "encoding": "inplace", - "label": "int24", - "numberOfBytes": "3" - }, - "t_struct(Parameters)3508_storage": { - "encoding": "inplace", - "label": "struct UniswapV3PoolDeployer.Parameters", - "members": [ - { - "astId": 3499, - "contract": "@uniswap/v3-core/contracts/UniswapV3PoolDeployer.sol:UniswapV3PoolDeployer", - "label": "factory", - "offset": 0, - "slot": "0", - "type": "t_address" - }, - { - "astId": 3501, - "contract": "@uniswap/v3-core/contracts/UniswapV3PoolDeployer.sol:UniswapV3PoolDeployer", - "label": "token0", - "offset": 0, - "slot": "1", - "type": "t_address" - }, - { - "astId": 3503, - "contract": "@uniswap/v3-core/contracts/UniswapV3PoolDeployer.sol:UniswapV3PoolDeployer", - "label": "token1", - "offset": 0, - "slot": "2", - "type": "t_address" - }, - { - "astId": 3505, - "contract": "@uniswap/v3-core/contracts/UniswapV3PoolDeployer.sol:UniswapV3PoolDeployer", - "label": "fee", - "offset": 20, - "slot": "2", - "type": "t_uint24" - }, - { - "astId": 3507, - "contract": "@uniswap/v3-core/contracts/UniswapV3PoolDeployer.sol:UniswapV3PoolDeployer", - "label": "tickSpacing", - "offset": 23, - "slot": "2", - "type": "t_int24" - } - ], - "numberOfBytes": "96" - }, - "t_uint24": { - "encoding": "inplace", - "label": "uint24", - "numberOfBytes": "3" - } - } - } - } - }, - "@uniswap/v3-core/contracts/interfaces/IERC20Minimal.sol": { - "IERC20Minimal": { - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "address", - "name": "spender", - "type": "address" - } - ], - "name": "allowance", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "evm": { - "bytecode": { - "generatedSources": [], - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "deployedBytecode": { - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "methodIdentifiers": { - "allowance(address,address)": "dd62ed3e", - "approve(address,uint256)": "095ea7b3", - "balanceOf(address)": "70a08231", - "transfer(address,uint256)": "a9059cbb", - "transferFrom(address,address,uint256)": "23b872dd" - } - }, - "storageLayout": { - "storage": [], - "types": null - } - } - }, - "@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol": { - "IUniswapV3Factory": { - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint24", - "name": "fee", - "type": "uint24" - }, - { - "indexed": true, - "internalType": "int24", - "name": "tickSpacing", - "type": "int24" - } - ], - "name": "FeeAmountEnabled", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "oldOwner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnerChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "token0", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "token1", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint24", - "name": "fee", - "type": "uint24" - }, - { - "indexed": false, - "internalType": "int24", - "name": "tickSpacing", - "type": "int24" - }, - { - "indexed": false, - "internalType": "address", - "name": "pool", - "type": "address" - } - ], - "name": "PoolCreated", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "tokenA", - "type": "address" - }, - { - "internalType": "address", - "name": "tokenB", - "type": "address" - }, - { - "internalType": "uint24", - "name": "fee", - "type": "uint24" - } - ], - "name": "createPool", - "outputs": [ - { - "internalType": "address", - "name": "pool", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint24", - "name": "fee", - "type": "uint24" - }, - { - "internalType": "int24", - "name": "tickSpacing", - "type": "int24" - } - ], - "name": "enableFeeAmount", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint24", - "name": "fee", - "type": "uint24" - } - ], - "name": "feeAmountTickSpacing", - "outputs": [ - { - "internalType": "int24", - "name": "", - "type": "int24" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "tokenA", - "type": "address" - }, - { - "internalType": "address", - "name": "tokenB", - "type": "address" - }, - { - "internalType": "uint24", - "name": "fee", - "type": "uint24" - } - ], - "name": "getPool", - "outputs": [ - { - "internalType": "address", - "name": "pool", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_owner", - "type": "address" - } - ], - "name": "setOwner", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "evm": { - "bytecode": { - "generatedSources": [], - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "deployedBytecode": { - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "methodIdentifiers": { - "createPool(address,address,uint24)": "a1671295", - "enableFeeAmount(uint24,int24)": "8a7c195f", - "feeAmountTickSpacing(uint24)": "22afcccb", - "getPool(address,address,uint24)": "1698ee82", - "owner()": "8da5cb5b", - "setOwner(address)": "13af4035" - } - }, - "storageLayout": { - "storage": [], - "types": null - } - } - }, - "@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol": { - "IUniswapV3Pool": { - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "int24", - "name": "tickLower", - "type": "int24" - }, - { - "indexed": true, - "internalType": "int24", - "name": "tickUpper", - "type": "int24" - }, - { - "indexed": false, - "internalType": "uint128", - "name": "amount", - "type": "uint128" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount0", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount1", - "type": "uint256" - } - ], - "name": "Burn", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "indexed": true, - "internalType": "int24", - "name": "tickLower", - "type": "int24" - }, - { - "indexed": true, - "internalType": "int24", - "name": "tickUpper", - "type": "int24" - }, - { - "indexed": false, - "internalType": "uint128", - "name": "amount0", - "type": "uint128" - }, - { - "indexed": false, - "internalType": "uint128", - "name": "amount1", - "type": "uint128" - } - ], - "name": "Collect", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint128", - "name": "amount0", - "type": "uint128" - }, - { - "indexed": false, - "internalType": "uint128", - "name": "amount1", - "type": "uint128" - } - ], - "name": "CollectProtocol", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount0", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount1", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "paid0", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "paid1", - "type": "uint256" - } - ], - "name": "Flash", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint16", - "name": "observationCardinalityNextOld", - "type": "uint16" - }, - { - "indexed": false, - "internalType": "uint16", - "name": "observationCardinalityNextNew", - "type": "uint16" - } - ], - "name": "IncreaseObservationCardinalityNext", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint160", - "name": "sqrtPriceX96", - "type": "uint160" - }, - { - "indexed": false, - "internalType": "int24", - "name": "tick", - "type": "int24" - } - ], - "name": "Initialize", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "int24", - "name": "tickLower", - "type": "int24" - }, - { - "indexed": true, - "internalType": "int24", - "name": "tickUpper", - "type": "int24" - }, - { - "indexed": false, - "internalType": "uint128", - "name": "amount", - "type": "uint128" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount0", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount1", - "type": "uint256" - } - ], - "name": "Mint", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint8", - "name": "feeProtocol0Old", - "type": "uint8" - }, - { - "indexed": false, - "internalType": "uint8", - "name": "feeProtocol1Old", - "type": "uint8" - }, - { - "indexed": false, - "internalType": "uint8", - "name": "feeProtocol0New", - "type": "uint8" - }, - { - "indexed": false, - "internalType": "uint8", - "name": "feeProtocol1New", - "type": "uint8" - } - ], - "name": "SetFeeProtocol", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "indexed": false, - "internalType": "int256", - "name": "amount0", - "type": "int256" - }, - { - "indexed": false, - "internalType": "int256", - "name": "amount1", - "type": "int256" - }, - { - "indexed": false, - "internalType": "uint160", - "name": "sqrtPriceX96", - "type": "uint160" - }, - { - "indexed": false, - "internalType": "uint128", - "name": "liquidity", - "type": "uint128" - }, - { - "indexed": false, - "internalType": "int24", - "name": "tick", - "type": "int24" - } - ], - "name": "Swap", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "int24", - "name": "tickLower", - "type": "int24" - }, - { - "internalType": "int24", - "name": "tickUpper", - "type": "int24" - }, - { - "internalType": "uint128", - "name": "amount", - "type": "uint128" - } - ], - "name": "burn", - "outputs": [ - { - "internalType": "uint256", - "name": "amount0", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amount1", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "int24", - "name": "tickLower", - "type": "int24" - }, - { - "internalType": "int24", - "name": "tickUpper", - "type": "int24" - }, - { - "internalType": "uint128", - "name": "amount0Requested", - "type": "uint128" - }, - { - "internalType": "uint128", - "name": "amount1Requested", - "type": "uint128" - } - ], - "name": "collect", - "outputs": [ - { - "internalType": "uint128", - "name": "amount0", - "type": "uint128" - }, - { - "internalType": "uint128", - "name": "amount1", - "type": "uint128" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "uint128", - "name": "amount0Requested", - "type": "uint128" - }, - { - "internalType": "uint128", - "name": "amount1Requested", - "type": "uint128" - } - ], - "name": "collectProtocol", - "outputs": [ - { - "internalType": "uint128", - "name": "amount0", - "type": "uint128" - }, - { - "internalType": "uint128", - "name": "amount1", - "type": "uint128" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "factory", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "fee", - "outputs": [ - { - "internalType": "uint24", - "name": "", - "type": "uint24" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "feeGrowthGlobal0X128", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "feeGrowthGlobal1X128", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount0", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amount1", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "flash", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "observationCardinalityNext", - "type": "uint16" - } - ], - "name": "increaseObservationCardinalityNext", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint160", - "name": "sqrtPriceX96", - "type": "uint160" - } - ], - "name": "initialize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "liquidity", - "outputs": [ - { - "internalType": "uint128", - "name": "", - "type": "uint128" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "maxLiquidityPerTick", - "outputs": [ - { - "internalType": "uint128", - "name": "", - "type": "uint128" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "int24", - "name": "tickLower", - "type": "int24" - }, - { - "internalType": "int24", - "name": "tickUpper", - "type": "int24" - }, - { - "internalType": "uint128", - "name": "amount", - "type": "uint128" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "mint", - "outputs": [ - { - "internalType": "uint256", - "name": "amount0", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amount1", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "index", - "type": "uint256" - } - ], - "name": "observations", - "outputs": [ - { - "internalType": "uint32", - "name": "blockTimestamp", - "type": "uint32" - }, - { - "internalType": "int56", - "name": "tickCumulative", - "type": "int56" - }, - { - "internalType": "uint160", - "name": "secondsPerLiquidityCumulativeX128", - "type": "uint160" - }, - { - "internalType": "bool", - "name": "initialized", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint32[]", - "name": "secondsAgos", - "type": "uint32[]" - } - ], - "name": "observe", - "outputs": [ - { - "internalType": "int56[]", - "name": "tickCumulatives", - "type": "int56[]" - }, - { - "internalType": "uint160[]", - "name": "secondsPerLiquidityCumulativeX128s", - "type": "uint160[]" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "key", - "type": "bytes32" - } - ], - "name": "positions", - "outputs": [ - { - "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": "protocolFees", - "outputs": [ - { - "internalType": "uint128", - "name": "token0", - "type": "uint128" - }, - { - "internalType": "uint128", - "name": "token1", - "type": "uint128" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint8", - "name": "feeProtocol0", - "type": "uint8" - }, - { - "internalType": "uint8", - "name": "feeProtocol1", - "type": "uint8" - } - ], - "name": "setFeeProtocol", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "slot0", - "outputs": [ - { - "internalType": "uint160", - "name": "sqrtPriceX96", - "type": "uint160" - }, - { - "internalType": "int24", - "name": "tick", - "type": "int24" - }, - { - "internalType": "uint16", - "name": "observationIndex", - "type": "uint16" - }, - { - "internalType": "uint16", - "name": "observationCardinality", - "type": "uint16" - }, - { - "internalType": "uint16", - "name": "observationCardinalityNext", - "type": "uint16" - }, - { - "internalType": "uint8", - "name": "feeProtocol", - "type": "uint8" - }, - { - "internalType": "bool", - "name": "unlocked", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "int24", - "name": "tickLower", - "type": "int24" - }, - { - "internalType": "int24", - "name": "tickUpper", - "type": "int24" - } - ], - "name": "snapshotCumulativesInside", - "outputs": [ - { - "internalType": "int56", - "name": "tickCumulativeInside", - "type": "int56" - }, - { - "internalType": "uint160", - "name": "secondsPerLiquidityInsideX128", - "type": "uint160" - }, - { - "internalType": "uint32", - "name": "secondsInside", - "type": "uint32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "bool", - "name": "zeroForOne", - "type": "bool" - }, - { - "internalType": "int256", - "name": "amountSpecified", - "type": "int256" - }, - { - "internalType": "uint160", - "name": "sqrtPriceLimitX96", - "type": "uint160" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "swap", - "outputs": [ - { - "internalType": "int256", - "name": "amount0", - "type": "int256" - }, - { - "internalType": "int256", - "name": "amount1", - "type": "int256" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "int16", - "name": "wordPosition", - "type": "int16" - } - ], - "name": "tickBitmap", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "tickSpacing", - "outputs": [ - { - "internalType": "int24", - "name": "", - "type": "int24" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "int24", - "name": "tick", - "type": "int24" - } - ], - "name": "ticks", - "outputs": [ - { - "internalType": "uint128", - "name": "liquidityGross", - "type": "uint128" - }, - { - "internalType": "int128", - "name": "liquidityNet", - "type": "int128" - }, - { - "internalType": "uint256", - "name": "feeGrowthOutside0X128", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "feeGrowthOutside1X128", - "type": "uint256" - }, - { - "internalType": "int56", - "name": "tickCumulativeOutside", - "type": "int56" - }, - { - "internalType": "uint160", - "name": "secondsPerLiquidityOutsideX128", - "type": "uint160" - }, - { - "internalType": "uint32", - "name": "secondsOutside", - "type": "uint32" - }, - { - "internalType": "bool", - "name": "initialized", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "token0", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "token1", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "evm": { - "bytecode": { - "generatedSources": [], - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "deployedBytecode": { - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "methodIdentifiers": { - "burn(int24,int24,uint128)": "a34123a7", - "collect(address,int24,int24,uint128,uint128)": "4f1eb3d8", - "collectProtocol(address,uint128,uint128)": "85b66729", - "factory()": "c45a0155", - "fee()": "ddca3f43", - "feeGrowthGlobal0X128()": "f3058399", - "feeGrowthGlobal1X128()": "46141319", - "flash(address,uint256,uint256,bytes)": "490e6cbc", - "increaseObservationCardinalityNext(uint16)": "32148f67", - "initialize(uint160)": "f637731d", - "liquidity()": "1a686502", - "maxLiquidityPerTick()": "70cf754a", - "mint(address,int24,int24,uint128,bytes)": "3c8a7d8d", - "observations(uint256)": "252c09d7", - "observe(uint32[])": "883bdbfd", - "positions(bytes32)": "514ea4bf", - "protocolFees()": "1ad8b03b", - "setFeeProtocol(uint8,uint8)": "8206a4d1", - "slot0()": "3850c7bd", - "snapshotCumulativesInside(int24,int24)": "a38807f2", - "swap(address,bool,int256,uint160,bytes)": "128acb08", - "tickBitmap(int16)": "5339c296", - "tickSpacing()": "d0c93a7c", - "ticks(int24)": "f30dba93", - "token0()": "0dfe1681", - "token1()": "d21220a7" - } - }, - "storageLayout": { - "storage": [], - "types": null - } - } - }, - "@uniswap/v3-core/contracts/interfaces/IUniswapV3PoolDeployer.sol": { - "IUniswapV3PoolDeployer": { - "abi": [ - { - "inputs": [], - "name": "parameters", - "outputs": [ - { - "internalType": "address", - "name": "factory", - "type": "address" - }, - { - "internalType": "address", - "name": "token0", - "type": "address" - }, - { - "internalType": "address", - "name": "token1", - "type": "address" - }, - { - "internalType": "uint24", - "name": "fee", - "type": "uint24" - }, - { - "internalType": "int24", - "name": "tickSpacing", - "type": "int24" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "evm": { - "bytecode": { - "generatedSources": [], - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "deployedBytecode": { - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "methodIdentifiers": { - "parameters()": "89035730" - } - }, - "storageLayout": { - "storage": [], - "types": null - } - } - }, - "@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3FlashCallback.sol": { - "IUniswapV3FlashCallback": { - "abi": [ - { - "inputs": [ - { - "internalType": "uint256", - "name": "fee0", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "fee1", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "uniswapV3FlashCallback", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "evm": { - "bytecode": { - "generatedSources": [], - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "deployedBytecode": { - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "methodIdentifiers": { - "uniswapV3FlashCallback(uint256,uint256,bytes)": "e9cbafb0" - } - }, - "storageLayout": { - "storage": [], - "types": null - } - } - }, - "@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3MintCallback.sol": { - "IUniswapV3MintCallback": { - "abi": [ - { - "inputs": [ - { - "internalType": "uint256", - "name": "amount0Owed", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amount1Owed", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "uniswapV3MintCallback", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "evm": { - "bytecode": { - "generatedSources": [], - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "deployedBytecode": { - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "methodIdentifiers": { - "uniswapV3MintCallback(uint256,uint256,bytes)": "d3487997" - } - }, - "storageLayout": { - "storage": [], - "types": null - } - } - }, - "@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol": { - "IUniswapV3SwapCallback": { - "abi": [ - { - "inputs": [ - { - "internalType": "int256", - "name": "amount0Delta", - "type": "int256" - }, - { - "internalType": "int256", - "name": "amount1Delta", - "type": "int256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "uniswapV3SwapCallback", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "evm": { - "bytecode": { - "generatedSources": [], - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "deployedBytecode": { - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "methodIdentifiers": { - "uniswapV3SwapCallback(int256,int256,bytes)": "fa461e33" - } - }, - "storageLayout": { - "storage": [], - "types": null - } - } - }, - "@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol": { - "IUniswapV3PoolActions": { - "abi": [ - { - "inputs": [ - { - "internalType": "int24", - "name": "tickLower", - "type": "int24" - }, - { - "internalType": "int24", - "name": "tickUpper", - "type": "int24" - }, - { - "internalType": "uint128", - "name": "amount", - "type": "uint128" - } - ], - "name": "burn", - "outputs": [ - { - "internalType": "uint256", - "name": "amount0", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amount1", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "int24", - "name": "tickLower", - "type": "int24" - }, - { - "internalType": "int24", - "name": "tickUpper", - "type": "int24" - }, - { - "internalType": "uint128", - "name": "amount0Requested", - "type": "uint128" - }, - { - "internalType": "uint128", - "name": "amount1Requested", - "type": "uint128" - } - ], - "name": "collect", - "outputs": [ - { - "internalType": "uint128", - "name": "amount0", - "type": "uint128" - }, - { - "internalType": "uint128", - "name": "amount1", - "type": "uint128" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount0", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amount1", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "flash", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint16", - "name": "observationCardinalityNext", - "type": "uint16" - } - ], - "name": "increaseObservationCardinalityNext", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint160", - "name": "sqrtPriceX96", - "type": "uint160" - } - ], - "name": "initialize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "int24", - "name": "tickLower", - "type": "int24" - }, - { - "internalType": "int24", - "name": "tickUpper", - "type": "int24" - }, - { - "internalType": "uint128", - "name": "amount", - "type": "uint128" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "mint", - "outputs": [ - { - "internalType": "uint256", - "name": "amount0", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amount1", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "bool", - "name": "zeroForOne", - "type": "bool" - }, - { - "internalType": "int256", - "name": "amountSpecified", - "type": "int256" - }, - { - "internalType": "uint160", - "name": "sqrtPriceLimitX96", - "type": "uint160" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "swap", - "outputs": [ - { - "internalType": "int256", - "name": "amount0", - "type": "int256" - }, - { - "internalType": "int256", - "name": "amount1", - "type": "int256" - } - ], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "evm": { - "bytecode": { - "generatedSources": [], - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "deployedBytecode": { - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "methodIdentifiers": { - "burn(int24,int24,uint128)": "a34123a7", - "collect(address,int24,int24,uint128,uint128)": "4f1eb3d8", - "flash(address,uint256,uint256,bytes)": "490e6cbc", - "increaseObservationCardinalityNext(uint16)": "32148f67", - "initialize(uint160)": "f637731d", - "mint(address,int24,int24,uint128,bytes)": "3c8a7d8d", - "swap(address,bool,int256,uint160,bytes)": "128acb08" - } - }, - "storageLayout": { - "storage": [], - "types": null - } - } - }, - "@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol": { - "IUniswapV3PoolDerivedState": { - "abi": [ - { - "inputs": [ - { - "internalType": "uint32[]", - "name": "secondsAgos", - "type": "uint32[]" - } - ], - "name": "observe", - "outputs": [ - { - "internalType": "int56[]", - "name": "tickCumulatives", - "type": "int56[]" - }, - { - "internalType": "uint160[]", - "name": "secondsPerLiquidityCumulativeX128s", - "type": "uint160[]" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "int24", - "name": "tickLower", - "type": "int24" - }, - { - "internalType": "int24", - "name": "tickUpper", - "type": "int24" - } - ], - "name": "snapshotCumulativesInside", - "outputs": [ - { - "internalType": "int56", - "name": "tickCumulativeInside", - "type": "int56" - }, - { - "internalType": "uint160", - "name": "secondsPerLiquidityInsideX128", - "type": "uint160" - }, - { - "internalType": "uint32", - "name": "secondsInside", - "type": "uint32" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "evm": { - "bytecode": { - "generatedSources": [], - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "deployedBytecode": { - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "methodIdentifiers": { - "observe(uint32[])": "883bdbfd", - "snapshotCumulativesInside(int24,int24)": "a38807f2" - } - }, - "storageLayout": { - "storage": [], - "types": null - } - } - }, - "@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol": { - "IUniswapV3PoolEvents": { - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "int24", - "name": "tickLower", - "type": "int24" - }, - { - "indexed": true, - "internalType": "int24", - "name": "tickUpper", - "type": "int24" - }, - { - "indexed": false, - "internalType": "uint128", - "name": "amount", - "type": "uint128" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount0", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount1", - "type": "uint256" - } - ], - "name": "Burn", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "indexed": true, - "internalType": "int24", - "name": "tickLower", - "type": "int24" - }, - { - "indexed": true, - "internalType": "int24", - "name": "tickUpper", - "type": "int24" - }, - { - "indexed": false, - "internalType": "uint128", - "name": "amount0", - "type": "uint128" - }, - { - "indexed": false, - "internalType": "uint128", - "name": "amount1", - "type": "uint128" - } - ], - "name": "Collect", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint128", - "name": "amount0", - "type": "uint128" - }, - { - "indexed": false, - "internalType": "uint128", - "name": "amount1", - "type": "uint128" - } - ], - "name": "CollectProtocol", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount0", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount1", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "paid0", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "paid1", - "type": "uint256" - } - ], - "name": "Flash", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint16", - "name": "observationCardinalityNextOld", - "type": "uint16" - }, - { - "indexed": false, - "internalType": "uint16", - "name": "observationCardinalityNextNew", - "type": "uint16" - } - ], - "name": "IncreaseObservationCardinalityNext", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint160", - "name": "sqrtPriceX96", - "type": "uint160" - }, - { - "indexed": false, - "internalType": "int24", - "name": "tick", - "type": "int24" - } - ], - "name": "Initialize", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "int24", - "name": "tickLower", - "type": "int24" - }, - { - "indexed": true, - "internalType": "int24", - "name": "tickUpper", - "type": "int24" - }, - { - "indexed": false, - "internalType": "uint128", - "name": "amount", - "type": "uint128" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount0", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount1", - "type": "uint256" - } - ], - "name": "Mint", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint8", - "name": "feeProtocol0Old", - "type": "uint8" - }, - { - "indexed": false, - "internalType": "uint8", - "name": "feeProtocol1Old", - "type": "uint8" - }, - { - "indexed": false, - "internalType": "uint8", - "name": "feeProtocol0New", - "type": "uint8" - }, - { - "indexed": false, - "internalType": "uint8", - "name": "feeProtocol1New", - "type": "uint8" - } - ], - "name": "SetFeeProtocol", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "indexed": false, - "internalType": "int256", - "name": "amount0", - "type": "int256" - }, - { - "indexed": false, - "internalType": "int256", - "name": "amount1", - "type": "int256" - }, - { - "indexed": false, - "internalType": "uint160", - "name": "sqrtPriceX96", - "type": "uint160" - }, - { - "indexed": false, - "internalType": "uint128", - "name": "liquidity", - "type": "uint128" - }, - { - "indexed": false, - "internalType": "int24", - "name": "tick", - "type": "int24" - } - ], - "name": "Swap", - "type": "event" - } - ], - "evm": { - "bytecode": { - "generatedSources": [], - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "deployedBytecode": { - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "methodIdentifiers": {} - }, - "storageLayout": { - "storage": [], - "types": null - } - } - }, - "@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol": { - "IUniswapV3PoolImmutables": { - "abi": [ - { - "inputs": [], - "name": "factory", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "fee", - "outputs": [ - { - "internalType": "uint24", - "name": "", - "type": "uint24" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "maxLiquidityPerTick", - "outputs": [ - { - "internalType": "uint128", - "name": "", - "type": "uint128" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "tickSpacing", - "outputs": [ - { - "internalType": "int24", - "name": "", - "type": "int24" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "token0", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "token1", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "evm": { - "bytecode": { - "generatedSources": [], - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "deployedBytecode": { - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "methodIdentifiers": { - "factory()": "c45a0155", - "fee()": "ddca3f43", - "maxLiquidityPerTick()": "70cf754a", - "tickSpacing()": "d0c93a7c", - "token0()": "0dfe1681", - "token1()": "d21220a7" - } - }, - "storageLayout": { - "storage": [], - "types": null - } - } - }, - "@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol": { - "IUniswapV3PoolOwnerActions": { - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "uint128", - "name": "amount0Requested", - "type": "uint128" - }, - { - "internalType": "uint128", - "name": "amount1Requested", - "type": "uint128" - } - ], - "name": "collectProtocol", - "outputs": [ - { - "internalType": "uint128", - "name": "amount0", - "type": "uint128" - }, - { - "internalType": "uint128", - "name": "amount1", - "type": "uint128" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint8", - "name": "feeProtocol0", - "type": "uint8" - }, - { - "internalType": "uint8", - "name": "feeProtocol1", - "type": "uint8" - } - ], - "name": "setFeeProtocol", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "evm": { - "bytecode": { - "generatedSources": [], - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "deployedBytecode": { - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "methodIdentifiers": { - "collectProtocol(address,uint128,uint128)": "85b66729", - "setFeeProtocol(uint8,uint8)": "8206a4d1" - } - }, - "storageLayout": { - "storage": [], - "types": null - } - } - }, - "@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol": { - "IUniswapV3PoolState": { - "abi": [ - { - "inputs": [], - "name": "feeGrowthGlobal0X128", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "feeGrowthGlobal1X128", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "liquidity", - "outputs": [ - { - "internalType": "uint128", - "name": "", - "type": "uint128" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "index", - "type": "uint256" - } - ], - "name": "observations", - "outputs": [ - { - "internalType": "uint32", - "name": "blockTimestamp", - "type": "uint32" - }, - { - "internalType": "int56", - "name": "tickCumulative", - "type": "int56" - }, - { - "internalType": "uint160", - "name": "secondsPerLiquidityCumulativeX128", - "type": "uint160" - }, - { - "internalType": "bool", - "name": "initialized", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "key", - "type": "bytes32" - } - ], - "name": "positions", - "outputs": [ - { - "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": "protocolFees", - "outputs": [ - { - "internalType": "uint128", - "name": "token0", - "type": "uint128" - }, - { - "internalType": "uint128", - "name": "token1", - "type": "uint128" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "slot0", - "outputs": [ - { - "internalType": "uint160", - "name": "sqrtPriceX96", - "type": "uint160" - }, - { - "internalType": "int24", - "name": "tick", - "type": "int24" - }, - { - "internalType": "uint16", - "name": "observationIndex", - "type": "uint16" - }, - { - "internalType": "uint16", - "name": "observationCardinality", - "type": "uint16" - }, - { - "internalType": "uint16", - "name": "observationCardinalityNext", - "type": "uint16" - }, - { - "internalType": "uint8", - "name": "feeProtocol", - "type": "uint8" - }, - { - "internalType": "bool", - "name": "unlocked", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "int16", - "name": "wordPosition", - "type": "int16" - } - ], - "name": "tickBitmap", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "int24", - "name": "tick", - "type": "int24" - } - ], - "name": "ticks", - "outputs": [ - { - "internalType": "uint128", - "name": "liquidityGross", - "type": "uint128" - }, - { - "internalType": "int128", - "name": "liquidityNet", - "type": "int128" - }, - { - "internalType": "uint256", - "name": "feeGrowthOutside0X128", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "feeGrowthOutside1X128", - "type": "uint256" - }, - { - "internalType": "int56", - "name": "tickCumulativeOutside", - "type": "int56" - }, - { - "internalType": "uint160", - "name": "secondsPerLiquidityOutsideX128", - "type": "uint160" - }, - { - "internalType": "uint32", - "name": "secondsOutside", - "type": "uint32" - }, - { - "internalType": "bool", - "name": "initialized", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "evm": { - "bytecode": { - "generatedSources": [], - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "deployedBytecode": { - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "methodIdentifiers": { - "feeGrowthGlobal0X128()": "f3058399", - "feeGrowthGlobal1X128()": "46141319", - "liquidity()": "1a686502", - "observations(uint256)": "252c09d7", - "positions(bytes32)": "514ea4bf", - "protocolFees()": "1ad8b03b", - "slot0()": "3850c7bd", - "tickBitmap(int16)": "5339c296", - "ticks(int24)": "f30dba93" - } - }, - "storageLayout": { - "storage": [], - "types": null - } - } - }, - "@uniswap/v3-core/contracts/libraries/BitMath.sol": { - "BitMath": { - "abi": [], - "evm": { - "bytecode": { - "generatedSources": [], - "linkReferences": {}, - "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f8c75e03b5604c379c71e11b1ca0ba4ce034f7b7fe971f4b9ec18ef870ab42b264736f6c63430007060033", - "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF8 0xC7 0x5E SUB 0xB5 PUSH1 0x4C CALLDATACOPY SWAP13 PUSH18 0xE11B1CA0BA4CE034F7B7FE971F4B9EC18EF8 PUSH17 0xAB42B264736F6C63430007060033000000 ", - "sourceMap": "187:2602:20:-:0;;;;;;;;;;;;;;;;;;;;;;;;;" - }, - "deployedBytecode": { - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f8c75e03b5604c379c71e11b1ca0ba4ce034f7b7fe971f4b9ec18ef870ab42b264736f6c63430007060033", - "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF8 0xC7 0x5E SUB 0xB5 PUSH1 0x4C CALLDATACOPY SWAP13 PUSH18 0xE11B1CA0BA4CE034F7B7FE971F4B9EC18EF8 PUSH17 0xAB42B264736F6C63430007060033000000 ", - "sourceMap": "187:2602:20:-:0;;;;;;;;" - }, - "methodIdentifiers": {} - }, - "storageLayout": { - "storage": [], - "types": null - } - } - }, - "@uniswap/v3-core/contracts/libraries/FixedPoint128.sol": { - "FixedPoint128": { - "abi": [], - "evm": { - "bytecode": { - "generatedSources": [], - "linkReferences": {}, - "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206673db6571080c62ab11c1f166a59c7925913f6a8faba2577e9bcdf72336c0c964736f6c63430007060033", - "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH7 0x73DB6571080C62 0xAB GT 0xC1 CALL PUSH7 0xA59C7925913F6A DUP16 0xAB LOG2 JUMPI PUSH31 0x9BCDF72336C0C964736F6C6343000706003300000000000000000000000000 ", - "sourceMap": "211:99:21:-:0;;;;;;;;;;;;;;;;;;;;;;;;;" - }, - "deployedBytecode": { - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206673db6571080c62ab11c1f166a59c7925913f6a8faba2577e9bcdf72336c0c964736f6c63430007060033", - "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH7 0x73DB6571080C62 0xAB GT 0xC1 CALL PUSH7 0xA59C7925913F6A DUP16 0xAB LOG2 JUMPI PUSH31 0x9BCDF72336C0C964736F6C6343000706003300000000000000000000000000 ", - "sourceMap": "211:99:21:-:0;;;;;;;;" - }, - "methodIdentifiers": {} - }, - "storageLayout": { - "storage": [], - "types": null - } - } - }, - "@uniswap/v3-core/contracts/libraries/FixedPoint96.sol": { - "FixedPoint96": { - "abi": [], - "evm": { - "bytecode": { - "generatedSources": [], - "linkReferences": {}, - "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220224d69cdd8c99cf21203c726963b820ff2f88e39d562bba2baa7ea37fec5acec64736f6c63430007060033", - "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x22 0x4D PUSH10 0xCDD8C99CF21203C72696 EXTCODESIZE DUP3 0xF CALLCODE 0xF8 DUP15 CODECOPY 0xD5 PUSH3 0xBBA2BA 0xA7 0xEA CALLDATACOPY INVALID 0xC5 0xAC 0xEC PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ", - "sourceMap": "245:134:22:-:0;;;;;;;;;;;;;;;;;;;;;;;;;" - }, - "deployedBytecode": { - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220224d69cdd8c99cf21203c726963b820ff2f88e39d562bba2baa7ea37fec5acec64736f6c63430007060033", - "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x22 0x4D PUSH10 0xCDD8C99CF21203C72696 EXTCODESIZE DUP3 0xF CALLCODE 0xF8 DUP15 CODECOPY 0xD5 PUSH3 0xBBA2BA 0xA7 0xEA CALLDATACOPY INVALID 0xC5 0xAC 0xEC PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ", - "sourceMap": "245:134:22:-:0;;;;;;;;" - }, - "methodIdentifiers": {} - }, - "storageLayout": { - "storage": [], - "types": null - } - } - }, - "@uniswap/v3-core/contracts/libraries/FullMath.sol": { - "FullMath": { - "abi": [], - "evm": { - "bytecode": { - "generatedSources": [], - "linkReferences": {}, - "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220323ff6bdb54ff8d53ec20ad8023e1a8adc2051b6b0d339090da4e47f0c621c6a64736f6c63430007060033", - "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ORIGIN EXTCODEHASH 0xF6 0xBD 0xB5 0x4F 0xF8 0xD5 RETURNDATACOPY 0xC2 EXP 0xD8 MUL RETURNDATACOPY BYTE DUP11 0xDC KECCAK256 MLOAD 0xB6 0xB0 0xD3 CODECOPY MULMOD 0xD LOG4 0xE4 PUSH32 0xC621C6A64736F6C634300070600330000000000000000000000000000000000 ", - "sourceMap": "355:4762:23:-:0;;;;;;;;;;;;;;;;;;;;;;;;;" - }, - "deployedBytecode": { - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220323ff6bdb54ff8d53ec20ad8023e1a8adc2051b6b0d339090da4e47f0c621c6a64736f6c63430007060033", - "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ORIGIN EXTCODEHASH 0xF6 0xBD 0xB5 0x4F 0xF8 0xD5 RETURNDATACOPY 0xC2 EXP 0xD8 MUL RETURNDATACOPY BYTE DUP11 0xDC KECCAK256 MLOAD 0xB6 0xB0 0xD3 CODECOPY MULMOD 0xD LOG4 0xE4 PUSH32 0xC621C6A64736F6C634300070600330000000000000000000000000000000000 ", - "sourceMap": "355:4762:23:-:0;;;;;;;;" - }, - "methodIdentifiers": {} - }, - "storageLayout": { - "storage": [], - "types": null - } - } - }, - "@uniswap/v3-core/contracts/libraries/LiquidityMath.sol": { - "LiquidityMath": { - "abi": [], - "evm": { - "bytecode": { - "generatedSources": [], - "linkReferences": {}, - "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122053b24d5bfb1de2656040b0d933b2ce920c591ba235be6ed8f59e3e0ddec8ad5664736f6c63430007060033", - "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MSTORE8 0xB2 0x4D JUMPDEST 0xFB SAR 0xE2 PUSH6 0x6040B0D933B2 0xCE SWAP3 0xC MSIZE SHL LOG2 CALLDATALOAD 0xBE PUSH15 0xD8F59E3E0DDEC8AD5664736F6C6343 STOP SMOD MOD STOP CALLER ", - "sourceMap": "109:512:24:-:0;;;;;;;;;;;;;;;;;;;;;;;;;" - }, - "deployedBytecode": { - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122053b24d5bfb1de2656040b0d933b2ce920c591ba235be6ed8f59e3e0ddec8ad5664736f6c63430007060033", - "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 MSTORE8 0xB2 0x4D JUMPDEST 0xFB SAR 0xE2 PUSH6 0x6040B0D933B2 0xCE SWAP3 0xC MSIZE SHL LOG2 CALLDATALOAD 0xBE PUSH15 0xD8F59E3E0DDEC8AD5664736F6C6343 STOP SMOD MOD STOP CALLER ", - "sourceMap": "109:512:24:-:0;;;;;;;;" - }, - "methodIdentifiers": {} - }, - "storageLayout": { - "storage": [], - "types": null - } - } - }, - "@uniswap/v3-core/contracts/libraries/LowGasSafeMath.sol": { - "LowGasSafeMath": { - "abi": [], - "evm": { - "bytecode": { - "generatedSources": [], - "linkReferences": {}, - "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203357b184c764415d0bd12d737469bf0c6cfdb2454a1853378ef94ab9d4fd22cb64736f6c63430007060033", - "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALLER JUMPI 0xB1 DUP5 0xC7 PUSH5 0x415D0BD12D PUSH20 0x7469BF0C6CFDB2454A1853378EF94AB9D4FD22CB PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ", - "sourceMap": "249:1446:25:-:0;;;;;;;;;;;;;;;;;;;;;;;;;" - }, - "deployedBytecode": { - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203357b184c764415d0bd12d737469bf0c6cfdb2454a1853378ef94ab9d4fd22cb64736f6c63430007060033", - "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALLER JUMPI 0xB1 DUP5 0xC7 PUSH5 0x415D0BD12D PUSH20 0x7469BF0C6CFDB2454A1853378EF94AB9D4FD22CB PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ", - "sourceMap": "249:1446:25:-:0;;;;;;;;" - }, - "methodIdentifiers": {} - }, - "storageLayout": { - "storage": [], - "types": null - } - } - }, - "@uniswap/v3-core/contracts/libraries/Oracle.sol": { - "Oracle": { - "abi": [], - "evm": { - "bytecode": { - "generatedSources": [], - "linkReferences": {}, - "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e6ea47f3e4efe4ab8f3d8bd6583aab603f82fadaccf81658512a60c072f4c1ea64736f6c63430007060033", - "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE6 0xEA SELFBALANCE RETURN 0xE4 0xEF 0xE4 0xAB DUP16 RETURNDATASIZE DUP12 0xD6 PC GASPRICE 0xAB PUSH1 0x3F DUP3 STATICCALL 0xDA 0xCC 0xF8 AND PC MLOAD 0x2A PUSH1 0xC0 PUSH19 0xF4C1EA64736F6C634300070600330000000000 ", - "sourceMap": "676:15731:26:-:0;;;;;;;;;;;;;;;;;;;;;;;;;" - }, - "deployedBytecode": { - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e6ea47f3e4efe4ab8f3d8bd6583aab603f82fadaccf81658512a60c072f4c1ea64736f6c63430007060033", - "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE6 0xEA SELFBALANCE RETURN 0xE4 0xEF 0xE4 0xAB DUP16 RETURNDATASIZE DUP12 0xD6 PC GASPRICE 0xAB PUSH1 0x3F DUP3 STATICCALL 0xDA 0xCC 0xF8 AND PC MLOAD 0x2A PUSH1 0xC0 PUSH19 0xF4C1EA64736F6C634300070600330000000000 ", - "sourceMap": "676:15731:26:-:0;;;;;;;;" - }, - "methodIdentifiers": {} - }, - "storageLayout": { - "storage": [], - "types": null - } - } - }, - "@uniswap/v3-core/contracts/libraries/Position.sol": { - "Position": { - "abi": [], - "evm": { - "bytecode": { - "generatedSources": [], - "linkReferences": {}, - "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122079c73334e0d65dbc58f33f19279ebe836b087abd845d0118dc6faaebfc52673064736f6c63430007060033", - "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH26 0xC73334E0D65DBC58F33F19279EBE836B087ABD845D0118DC6FAA 0xEB 0xFC MSTORE PUSH8 0x3064736F6C634300 SMOD MOD STOP CALLER ", - "sourceMap": "350:3224:27:-:0;;;;;;;;;;;;;;;;;;;;;;;;;" - }, - "deployedBytecode": { - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122079c73334e0d65dbc58f33f19279ebe836b087abd845d0118dc6faaebfc52673064736f6c63430007060033", - "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH26 0xC73334E0D65DBC58F33F19279EBE836B087ABD845D0118DC6FAA 0xEB 0xFC MSTORE PUSH8 0x3064736F6C634300 SMOD MOD STOP CALLER ", - "sourceMap": "350:3224:27:-:0;;;;;;;;" - }, - "methodIdentifiers": {} - }, - "storageLayout": { - "storage": [], - "types": null - } - } - }, - "@uniswap/v3-core/contracts/libraries/SafeCast.sol": { - "SafeCast": { - "abi": [], - "evm": { - "bytecode": { - "generatedSources": [], - "linkReferences": {}, - "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208d8da890114d70f34a49adf57e6fa6936687dc15b694fdb3f57c59954c9f86c664736f6c63430007060033", - "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP14 DUP14 0xA8 SWAP1 GT 0x4D PUSH17 0xF34A49ADF57E6FA6936687DC15B694FDB3 CREATE2 PUSH29 0x59954C9F86C664736F6C63430007060033000000000000000000000000 ", - "sourceMap": "165:882:28:-:0;;;;;;;;;;;;;;;;;;;;;;;;;" - }, - "deployedBytecode": { - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208d8da890114d70f34a49adf57e6fa6936687dc15b694fdb3f57c59954c9f86c664736f6c63430007060033", - "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP14 DUP14 0xA8 SWAP1 GT 0x4D PUSH17 0xF34A49ADF57E6FA6936687DC15B694FDB3 CREATE2 PUSH29 0x59954C9F86C664736F6C63430007060033000000000000000000000000 ", - "sourceMap": "165:882:28:-:0;;;;;;;;" - }, - "methodIdentifiers": {} - }, - "storageLayout": { - "storage": [], - "types": null - } - } - }, - "@uniswap/v3-core/contracts/libraries/SqrtPriceMath.sol": { - "SqrtPriceMath": { - "abi": [], - "evm": { - "bytecode": { - "generatedSources": [], - "linkReferences": {}, - "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220cbfbea9f79e0651104f6cff810c4225254aa4bbcf2a62a698ac0ec1805ff2c5e64736f6c63430007060033", - "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCB 0xFB 0xEA SWAP16 PUSH26 0xE0651104F6CFF810C4225254AA4BBCF2A62A698AC0EC1805FF2C 0x5E PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ", - "sourceMap": "369:10404:29:-:0;;;;;;;;;;;;;;;;;;;;;;;;;" - }, - "deployedBytecode": { - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220cbfbea9f79e0651104f6cff810c4225254aa4bbcf2a62a698ac0ec1805ff2c5e64736f6c63430007060033", - "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCB 0xFB 0xEA SWAP16 PUSH26 0xE0651104F6CFF810C4225254AA4BBCF2A62A698AC0EC1805FF2C 0x5E PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ", - "sourceMap": "369:10404:29:-:0;;;;;;;;" - }, - "methodIdentifiers": {} - }, - "storageLayout": { - "storage": [], - "types": null - } - } - }, - "@uniswap/v3-core/contracts/libraries/SwapMath.sol": { - "SwapMath": { - "abi": [], - "evm": { - "bytecode": { - "generatedSources": [], - "linkReferences": {}, - "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208070a0f66e4b820cf42dd587fa3b58ccad8172dba62bfd7cf8717d1afc5091d164736f6c63430007060033", - "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP1 PUSH17 0xA0F66E4B820CF42DD587FA3B58CCAD8172 0xDB 0xA6 0x2B REVERT PUSH29 0xF8717D1AFC5091D164736F6C6343000706003300000000000000000000 ", - "sourceMap": "292:4340:30:-:0;;;;;;;;;;;;;;;;;;;;;;;;;" - }, - "deployedBytecode": { - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208070a0f66e4b820cf42dd587fa3b58ccad8172dba62bfd7cf8717d1afc5091d164736f6c63430007060033", - "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP1 PUSH17 0xA0F66E4B820CF42DD587FA3B58CCAD8172 0xDB 0xA6 0x2B REVERT PUSH29 0xF8717D1AFC5091D164736F6C6343000706003300000000000000000000 ", - "sourceMap": "292:4340:30:-:0;;;;;;;;" - }, - "methodIdentifiers": {} - }, - "storageLayout": { - "storage": [], - "types": null - } - } - }, - "@uniswap/v3-core/contracts/libraries/Tick.sol": { - "Tick": { - "abi": [], - "evm": { - "bytecode": { - "generatedSources": [], - "linkReferences": {}, - "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202f0c927a1b0f3e2e79b8ce08764f908ec645bac859a322dd0516560a30da911264736f6c63430007060033", - "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2F 0xC SWAP3 PUSH27 0x1B0F3E2E79B8CE08764F908EC645BAC859A322DD0516560A30DA91 SLT PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ", - "sourceMap": "277:9241:31:-:0;;;;;;;;;;;;;;;;;;;;;;;;;" - }, - "deployedBytecode": { - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212202f0c927a1b0f3e2e79b8ce08764f908ec645bac859a322dd0516560a30da911264736f6c63430007060033", - "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x2F 0xC SWAP3 PUSH27 0x1B0F3E2E79B8CE08764F908EC645BAC859A322DD0516560A30DA91 SLT PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ", - "sourceMap": "277:9241:31:-:0;;;;;;;;" - }, - "methodIdentifiers": {} - }, - "storageLayout": { - "storage": [], - "types": null - } - } - }, - "@uniswap/v3-core/contracts/libraries/TickBitmap.sol": { - "TickBitmap": { - "abi": [], - "evm": { - "bytecode": { - "generatedSources": [], - "linkReferences": {}, - "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220350830785ee455d7102d09291f774754530cb1d9a0664728ce396863e0e6532964736f6c63430007060033", - "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALLDATALOAD ADDMOD ADDRESS PUSH25 0x5EE455D7102D09291F774754530CB1D9A0664728CE396863E0 0xE6 MSTORE8 0x29 PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ", - "sourceMap": "331:3780:32:-:0;;;;;;;;;;;;;;;;;;;;;;;;;" - }, - "deployedBytecode": { - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220350830785ee455d7102d09291f774754530cb1d9a0664728ce396863e0e6532964736f6c63430007060033", - "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALLDATALOAD ADDMOD ADDRESS PUSH25 0x5EE455D7102D09291F774754530CB1D9A0664728CE396863E0 0xE6 MSTORE8 0x29 PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ", - "sourceMap": "331:3780:32:-:0;;;;;;;;" - }, - "methodIdentifiers": {} - }, - "storageLayout": { - "storage": [], - "types": null - } - } - }, - "@uniswap/v3-core/contracts/libraries/TickMath.sol": { - "TickMath": { - "abi": [], - "evm": { - "bytecode": { - "generatedSources": [], - "linkReferences": {}, - "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203a4942a5d8ef6f36c092aabf5e62ffe9922806a00642e7587fa40de9f7d896d464736f6c63430007060033", - "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 GASPRICE 0x49 TIMESTAMP 0xA5 0xD8 0xEF PUSH16 0x36C092AABF5E62FFE9922806A00642E7 PC PUSH32 0xA40DE9F7D896D464736F6C634300070600330000000000000000000000000000 ", - "sourceMap": "306:8331:33:-:0;;;;;;;;;;;;;;;;;;;;;;;;;" - }, - "deployedBytecode": { - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203a4942a5d8ef6f36c092aabf5e62ffe9922806a00642e7587fa40de9f7d896d464736f6c63430007060033", - "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 GASPRICE 0x49 TIMESTAMP 0xA5 0xD8 0xEF PUSH16 0x36C092AABF5E62FFE9922806A00642E7 PC PUSH32 0xA40DE9F7D896D464736F6C634300070600330000000000000000000000000000 ", - "sourceMap": "306:8331:33:-:0;;;;;;;;" - }, - "methodIdentifiers": {} - }, - "storageLayout": { - "storage": [], - "types": null - } - } - }, - "@uniswap/v3-core/contracts/libraries/TransferHelper.sol": { - "TransferHelper": { - "abi": [], - "evm": { - "bytecode": { - "generatedSources": [], - "linkReferences": {}, - "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220317791c5102593efdbaf0a6e747cf1f06dfd1fb8726a7912cd51c74d5e66cabc64736f6c63430007060033", - "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 BALANCE PUSH24 0x91C5102593EFDBAF0A6E747CF1F06DFD1FB8726A7912CD51 0xC7 0x4D 0x5E PUSH7 0xCABC64736F6C63 NUMBER STOP SMOD MOD STOP CALLER ", - "sourceMap": "253:679:34:-:0;;;;;;;;;;;;;;;;;;;;;;;;;" - }, - "deployedBytecode": { - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220317791c5102593efdbaf0a6e747cf1f06dfd1fb8726a7912cd51c74d5e66cabc64736f6c63430007060033", - "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 BALANCE PUSH24 0x91C5102593EFDBAF0A6E747CF1F06DFD1FB8726A7912CD51 0xC7 0x4D 0x5E PUSH7 0xCABC64736F6C63 NUMBER STOP SMOD MOD STOP CALLER ", - "sourceMap": "253:679:34:-:0;;;;;;;;" - }, - "methodIdentifiers": {} - }, - "storageLayout": { - "storage": [], - "types": null - } - } - }, - "@uniswap/v3-core/contracts/libraries/UnsafeMath.sol": { - "UnsafeMath": { - "abi": [], - "evm": { - "bytecode": { - "generatedSources": [], - "linkReferences": {}, - "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201688abb6ab30b6d7da362591fc0da78c587b0d378a6ef34c9ded2b2337b37e7964736f6c63430007060033", - "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 AND DUP9 0xAB 0xB6 0xAB ADDRESS 0xB6 0xD7 0xDA CALLDATASIZE 0x25 SWAP2 0xFC 0xD 0xA7 DUP13 PC PUSH28 0xD378A6EF34C9DED2B2337B37E7964736F6C63430007060033000000 ", - "sourceMap": "244:415:35:-:0;;;;;;;;;;;;;;;;;;;;;;;;;" - }, - "deployedBytecode": { - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201688abb6ab30b6d7da362591fc0da78c587b0d378a6ef34c9ded2b2337b37e7964736f6c63430007060033", - "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 AND DUP9 0xAB 0xB6 0xAB ADDRESS 0xB6 0xD7 0xDA CALLDATASIZE 0x25 SWAP2 0xFC 0xD 0xA7 DUP13 PC PUSH28 0xD378A6EF34C9DED2B2337B37E7964736F6C63430007060033000000 ", - "sourceMap": "244:415:35:-:0;;;;;;;;" - }, - "methodIdentifiers": {} - }, - "storageLayout": { - "storage": [], - "types": null - } - } - }, - "contracts/BandPriceFeed.sol": { - "BandPriceFeed": { - "abi": [ - { - "inputs": [ - { - "internalType": "contract IStdReference", - "name": "stdRefArg", - "type": "address" - }, - { - "internalType": "string", - "name": "baseAssetArg", - "type": "string" - }, - { - "internalType": "uint80", - "name": "cacheTwapInterval", - "type": "uint80" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "price", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint8", - "name": "indexAt", - "type": "uint8" - } - ], - "name": "PriceUpdated", - "type": "event" - }, - { - "inputs": [], - "name": "QUOTE_ASSET", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "baseAsset", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "interval", - "type": "uint256" - } - ], - "name": "cacheTwap", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "currentObservationIndex", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "decimals", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "interval", - "type": "uint256" - } - ], - "name": "getPrice", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "observations", - "outputs": [ - { - "internalType": "uint256", - "name": "price", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "priceCumulative", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "stdRef", - "outputs": [ - { - "internalType": "contract IStdReference", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "update", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "evm": { - "bytecode": { - "generatedSources": [ - { - "ast": { - "nodeType": "YulBlock", - "src": "0:1906:49", - "statements": [ - { - "nodeType": "YulBlock", - "src": "6:3:49", - "statements": [] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "75:116:49", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "85:22:49", - "value": { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "100:6:49" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "94:5:49" - }, - "nodeType": "YulFunctionCall", - "src": "94:13:49" - }, - "variableNames": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "85:5:49" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "169:16:49", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "178:1:49", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "181:1:49", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "171:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "171:12:49" - }, - "nodeType": "YulExpressionStatement", - "src": "171:12:49" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "129:5:49" - }, - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "140:5:49" - }, - { - "arguments": [ - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "155:2:49", - "type": "", - "value": "80" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "159:1:49", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "151:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "151:10:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "163:1:49", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "147:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "147:18:49" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "136:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "136:30:49" - } - ], - "functionName": { - "name": "eq", - "nodeType": "YulIdentifier", - "src": "126:2:49" - }, - "nodeType": "YulFunctionCall", - "src": "126:41:49" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "119:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "119:49:49" - }, - "nodeType": "YulIf", - "src": "116:2:49" - } - ] - }, - "name": "abi_decode_t_uint80_fromMemory", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "54:6:49", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "65:5:49", - "type": "" - } - ], - "src": "14:177:49" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "342:1227:49", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "388:26:49", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "397:6:49" - }, - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "405:6:49" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "390:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "390:22:49" - }, - "nodeType": "YulExpressionStatement", - "src": "390:22:49" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "363:7:49" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "372:9:49" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "359:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "359:23:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "384:2:49", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "355:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "355:32:49" - }, - "nodeType": "YulIf", - "src": "352:2:49" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "423:29:49", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "442:9:49" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "436:5:49" - }, - "nodeType": "YulFunctionCall", - "src": "436:16:49" - }, - "variables": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "427:5:49", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "515:26:49", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "524:6:49" - }, - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "532:6:49" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "517:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "517:22:49" - }, - "nodeType": "YulExpressionStatement", - "src": "517:22:49" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "474:5:49" - }, - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "485:5:49" - }, - { - "arguments": [ - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "500:3:49", - "type": "", - "value": "160" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "505:1:49", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "496:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "496:11:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "509:1:49", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "492:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "492:19:49" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "481:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "481:31:49" - } - ], - "functionName": { - "name": "eq", - "nodeType": "YulIdentifier", - "src": "471:2:49" - }, - "nodeType": "YulFunctionCall", - "src": "471:42:49" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "464:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "464:50:49" - }, - "nodeType": "YulIf", - "src": "461:2:49" - }, - { - "nodeType": "YulAssignment", - "src": "550:15:49", - "value": { - "name": "value", - "nodeType": "YulIdentifier", - "src": "560:5:49" - }, - "variableNames": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "550:6:49" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "574:12:49", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "584:2:49", - "type": "", - "value": "32" - }, - "variables": [ - { - "name": "_1", - "nodeType": "YulTypedName", - "src": "578:2:49", - "type": "" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "595:39:49", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "619:9:49" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "630:2:49" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "615:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "615:18:49" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "609:5:49" - }, - "nodeType": "YulFunctionCall", - "src": "609:25:49" - }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "599:6:49", - "type": "" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "643:28:49", - "value": { - "arguments": [ - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "661:2:49", - "type": "", - "value": "64" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "665:1:49", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "657:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "657:10:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "669:1:49", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "653:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "653:18:49" - }, - "variables": [ - { - "name": "_2", - "nodeType": "YulTypedName", - "src": "647:2:49", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "698:26:49", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "707:6:49" - }, - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "715:6:49" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "700:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "700:22:49" - }, - "nodeType": "YulExpressionStatement", - "src": "700:22:49" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "686:6:49" - }, - { - "name": "_2", - "nodeType": "YulIdentifier", - "src": "694:2:49" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "683:2:49" - }, - "nodeType": "YulFunctionCall", - "src": "683:14:49" - }, - "nodeType": "YulIf", - "src": "680:2:49" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "733:32:49", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "747:9:49" - }, - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "758:6:49" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "743:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "743:22:49" - }, - "variables": [ - { - "name": "_3", - "nodeType": "YulTypedName", - "src": "737:2:49", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "813:26:49", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "822:6:49" - }, - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "830:6:49" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "815:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "815:22:49" - }, - "nodeType": "YulExpressionStatement", - "src": "815:22:49" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "_3", - "nodeType": "YulIdentifier", - "src": "792:2:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "796:4:49", - "type": "", - "value": "0x1f" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "788:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "788:13:49" - }, - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "803:7:49" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "784:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "784:27:49" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "777:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "777:35:49" - }, - "nodeType": "YulIf", - "src": "774:2:49" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "848:19:49", - "value": { - "arguments": [ - { - "name": "_3", - "nodeType": "YulIdentifier", - "src": "864:2:49" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "858:5:49" - }, - "nodeType": "YulFunctionCall", - "src": "858:9:49" - }, - "variables": [ - { - "name": "_4", - "nodeType": "YulTypedName", - "src": "852:2:49", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "890:13:49", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "invalid", - "nodeType": "YulIdentifier", - "src": "892:7:49" - }, - "nodeType": "YulFunctionCall", - "src": "892:9:49" - }, - "nodeType": "YulExpressionStatement", - "src": "892:9:49" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "_4", - "nodeType": "YulIdentifier", - "src": "882:2:49" - }, - { - "name": "_2", - "nodeType": "YulIdentifier", - "src": "886:2:49" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "879:2:49" - }, - "nodeType": "YulFunctionCall", - "src": "879:10:49" - }, - "nodeType": "YulIf", - "src": "876:2:49" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "912:23:49", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "932:2:49", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "926:5:49" - }, - "nodeType": "YulFunctionCall", - "src": "926:9:49" - }, - "variables": [ - { - "name": "memPtr", - "nodeType": "YulTypedName", - "src": "916:6:49", - "type": "" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "944:67:49", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "memPtr", - "nodeType": "YulIdentifier", - "src": "970:6:49" - }, - { - "arguments": [ - { - "arguments": [ - { - "name": "_4", - "nodeType": "YulIdentifier", - "src": "986:2:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "990:4:49", - "type": "", - "value": "0x1f" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "982:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "982:13:49" - }, - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1001:2:49", - "type": "", - "value": "31" - } - ], - "functionName": { - "name": "not", - "nodeType": "YulIdentifier", - "src": "997:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "997:7:49" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "978:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "978:27:49" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "966:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "966:40:49" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "1008:2:49" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "962:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "962:49:49" - }, - "variables": [ - { - "name": "newFreePtr", - "nodeType": "YulTypedName", - "src": "948:10:49", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "1070:13:49", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "invalid", - "nodeType": "YulIdentifier", - "src": "1072:7:49" - }, - "nodeType": "YulFunctionCall", - "src": "1072:9:49" - }, - "nodeType": "YulExpressionStatement", - "src": "1072:9:49" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "newFreePtr", - "nodeType": "YulIdentifier", - "src": "1029:10:49" - }, - { - "name": "_2", - "nodeType": "YulIdentifier", - "src": "1041:2:49" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "1026:2:49" - }, - "nodeType": "YulFunctionCall", - "src": "1026:18:49" - }, - { - "arguments": [ - { - "name": "newFreePtr", - "nodeType": "YulIdentifier", - "src": "1049:10:49" - }, - { - "name": "memPtr", - "nodeType": "YulIdentifier", - "src": "1061:6:49" - } - ], - "functionName": { - "name": "lt", - "nodeType": "YulIdentifier", - "src": "1046:2:49" - }, - "nodeType": "YulFunctionCall", - "src": "1046:22:49" - } - ], - "functionName": { - "name": "or", - "nodeType": "YulIdentifier", - "src": "1023:2:49" - }, - "nodeType": "YulFunctionCall", - "src": "1023:46:49" - }, - "nodeType": "YulIf", - "src": "1020:2:49" - }, - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1099:2:49", - "type": "", - "value": "64" - }, - { - "name": "newFreePtr", - "nodeType": "YulIdentifier", - "src": "1103:10:49" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "1092:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "1092:22:49" - }, - "nodeType": "YulExpressionStatement", - "src": "1092:22:49" - }, - { - "expression": { - "arguments": [ - { - "name": "memPtr", - "nodeType": "YulIdentifier", - "src": "1130:6:49" - }, - { - "name": "_4", - "nodeType": "YulIdentifier", - "src": "1138:2:49" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "1123:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "1123:18:49" - }, - "nodeType": "YulExpressionStatement", - "src": "1123:18:49" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "1187:26:49", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "1196:6:49" - }, - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "1204:6:49" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "1189:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "1189:22:49" - }, - "nodeType": "YulExpressionStatement", - "src": "1189:22:49" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "_3", - "nodeType": "YulIdentifier", - "src": "1164:2:49" - }, - { - "name": "_4", - "nodeType": "YulIdentifier", - "src": "1168:2:49" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1160:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "1160:11:49" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "1173:2:49" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1156:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "1156:20:49" - }, - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "1178:7:49" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "1153:2:49" - }, - "nodeType": "YulFunctionCall", - "src": "1153:33:49" - }, - "nodeType": "YulIf", - "src": "1150:2:49" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "1222:15:49", - "value": { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "1231:6:49" - }, - "variables": [ - { - "name": "i", - "nodeType": "YulTypedName", - "src": "1226:1:49", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "1292:83:49", - "statements": [ - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "memPtr", - "nodeType": "YulIdentifier", - "src": "1321:6:49" - }, - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "1329:1:49" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1317:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "1317:14:49" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "1333:2:49" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1313:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "1313:23:49" - }, - { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "_3", - "nodeType": "YulIdentifier", - "src": "1352:2:49" - }, - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "1356:1:49" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1348:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "1348:10:49" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "1360:2:49" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1344:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "1344:19:49" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "1338:5:49" - }, - "nodeType": "YulFunctionCall", - "src": "1338:26:49" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "1306:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "1306:59:49" - }, - "nodeType": "YulExpressionStatement", - "src": "1306:59:49" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "1257:1:49" - }, - { - "name": "_4", - "nodeType": "YulIdentifier", - "src": "1260:2:49" - } - ], - "functionName": { - "name": "lt", - "nodeType": "YulIdentifier", - "src": "1254:2:49" - }, - "nodeType": "YulFunctionCall", - "src": "1254:9:49" - }, - "nodeType": "YulForLoop", - "post": { - "nodeType": "YulBlock", - "src": "1264:19:49", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "1266:15:49", - "value": { - "arguments": [ - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "1275:1:49" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "1278:2:49" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1271:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "1271:10:49" - }, - "variableNames": [ - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "1266:1:49" - } - ] - } - ] - }, - "pre": { - "nodeType": "YulBlock", - "src": "1250:3:49", - "statements": [] - }, - "src": "1246:129:49" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "1405:64:49", - "statements": [ - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "memPtr", - "nodeType": "YulIdentifier", - "src": "1434:6:49" - }, - { - "name": "_4", - "nodeType": "YulIdentifier", - "src": "1442:2:49" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1430:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "1430:15:49" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "1447:2:49" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1426:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "1426:24:49" - }, - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "1452:6:49" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "1419:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "1419:40:49" - }, - "nodeType": "YulExpressionStatement", - "src": "1419:40:49" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "1390:1:49" - }, - { - "name": "_4", - "nodeType": "YulIdentifier", - "src": "1393:2:49" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "1387:2:49" - }, - "nodeType": "YulFunctionCall", - "src": "1387:9:49" - }, - "nodeType": "YulIf", - "src": "1384:2:49" - }, - { - "nodeType": "YulAssignment", - "src": "1478:16:49", - "value": { - "name": "memPtr", - "nodeType": "YulIdentifier", - "src": "1488:6:49" - }, - "variableNames": [ - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "1478:6:49" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "1503:60:49", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1548:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1559:2:49", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1544:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "1544:18:49" - } - ], - "functionName": { - "name": "abi_decode_t_uint80_fromMemory", - "nodeType": "YulIdentifier", - "src": "1513:30:49" - }, - "nodeType": "YulFunctionCall", - "src": "1513:50:49" - }, - "variableNames": [ - { - "name": "value2", - "nodeType": "YulIdentifier", - "src": "1503:6:49" - } - ] - } - ] - }, - "name": "abi_decode_tuple_t_contract$_IStdReference_$8700t_string_memory_ptrt_uint80_fromMemory", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "292:9:49", - "type": "" - }, - { - "name": "dataEnd", - "nodeType": "YulTypedName", - "src": "303:7:49", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "315:6:49", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "323:6:49", - "type": "" - }, - { - "name": "value2", - "nodeType": "YulTypedName", - "src": "331:6:49", - "type": "" - } - ], - "src": "196:1373:49" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "1748:156:49", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1765:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1776:2:49", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "1758:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "1758:21:49" - }, - "nodeType": "YulExpressionStatement", - "src": "1758:21:49" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1799:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1810:2:49", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1795:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "1795:18:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1815:1:49", - "type": "", - "value": "7" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "1788:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "1788:29:49" - }, - "nodeType": "YulExpressionStatement", - "src": "1788:29:49" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1837:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1848:2:49", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1833:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "1833:18:49" - }, - { - "kind": "string", - "nodeType": "YulLiteral", - "src": "1853:9:49", - "type": "", - "value": "BPF_ANC" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "1826:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "1826:37:49" - }, - "nodeType": "YulExpressionStatement", - "src": "1826:37:49" - }, - { - "nodeType": "YulAssignment", - "src": "1872:26:49", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1884:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1895:2:49", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1880:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "1880:18:49" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "1872:4:49" - } - ] - } - ] - }, - "name": "abi_encode_tuple_t_stringliteral_389ba6bc7ff950c9e36738df1520afe7e8caaea6a3e4f73225c7bbf0e556a20f__to_t_string_memory_ptr__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "1725:9:49", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "1739:4:49", - "type": "" - } - ], - "src": "1574:330:49" - } - ] - }, - "contents": "{\n { }\n function abi_decode_t_uint80_fromMemory(offset) -> value\n {\n value := mload(offset)\n if iszero(eq(value, and(value, sub(shl(80, 1), 1)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_contract$_IStdReference_$8700t_string_memory_ptrt_uint80_fromMemory(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(value0, value0) }\n let value := mload(headStart)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(value0, value0) }\n value0 := value\n let _1 := 32\n let offset := mload(add(headStart, _1))\n let _2 := sub(shl(64, 1), 1)\n if gt(offset, _2) { revert(value1, value1) }\n let _3 := add(headStart, offset)\n if iszero(slt(add(_3, 0x1f), dataEnd)) { revert(value1, value1) }\n let _4 := mload(_3)\n if gt(_4, _2) { invalid() }\n let memPtr := mload(64)\n let newFreePtr := add(add(memPtr, and(add(_4, 0x1f), not(31))), _1)\n if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { invalid() }\n mstore(64, newFreePtr)\n mstore(memPtr, _4)\n if gt(add(add(_3, _4), _1), dataEnd) { revert(value1, value1) }\n let i := value1\n for { } lt(i, _4) { i := add(i, _1) }\n {\n mstore(add(add(memPtr, i), _1), mload(add(add(_3, i), _1)))\n }\n if gt(i, _4)\n {\n mstore(add(add(memPtr, _4), _1), value1)\n }\n value1 := memPtr\n value2 := abi_decode_t_uint80_fromMemory(add(headStart, 64))\n }\n function abi_encode_tuple_t_stringliteral_389ba6bc7ff950c9e36738df1520afe7e8caaea6a3e4f73225c7bbf0e556a20f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 7)\n mstore(add(headStart, 64), \"BPF_ANC\")\n tail := add(headStart, 96)\n }\n}", - "id": 49, - "language": "Yul", - "name": "#utility.yul" - } - ], - "linkReferences": {}, - "object": "60806040523480156200001157600080fd5b50604051620010b2380380620010b28339810160408190526200003491620001ab565b6103028054600160a01b600160f01b031916600160a01b6001600160501b03841602179055620000796001600160a01b038416620000dd602090811b620002c817901c565b620000a15760405162461bcd60e51b815260040162000098906200029f565b60405180910390fd5b61030480546001600160a01b0319166001600160a01b0385161790558151620000d390610303906020850190620000e7565b50505050620002c0565b803b15155b919050565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826200011f57600085556200016a565b82601f106200013a57805160ff19168380011785556200016a565b828001600101855582156200016a579182015b828111156200016a5782518255916020019190600101906200014d565b50620001789291506200017c565b5090565b5b808211156200017857600081556001016200017d565b80516001600160501b0381168114620000e257600080fd5b600080600060608486031215620001c0578283fd5b83516001600160a01b0381168114620001d7578384fd5b602085810151919450906001600160401b0380821115620001f6578485fd5b818701915087601f8301126200020a578485fd5b8151818111156200021757fe5b604051601f8201601f19168101850183811182821017156200023557fe5b60405281815283820185018a10156200024c578687fd5b8692505b818310156200026f578383018501518184018601529184019162000250565b818311156200028057868583830101525b8096505050505050620002966040850162000193565b90509250925092565b6020808252600790820152664250465f414e4360c81b604082015260600190565b610de280620002d06000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063a2e6204511610066578063a2e620451461010d578063aed3aff714610117578063cdf456e11461011f578063e757223014610134578063f06a1e131461014757610093565b80631d1a111a14610098578063252c09d7146100c1578063313ce567146100e35780635368945b146100f8575b600080fd5b6100ab6100a6366004610b52565b61014f565b6040516100b89190610d39565b60405180910390f35b6100d46100cf366004610b52565b610185565b6040516100b893929190610d5b565b6100eb6101ad565b6040516100b89190610d71565b6101006101b2565b6040516100b89190610bb5565b6101156101c2565b005b6100eb6101e3565b6101276101ed565b6040516100b89190610bc9565b6100ab610142366004610b52565b61027c565b6101276102a9565b60008061015a6102ce565b90508261016957519050610180565b61017c83826000015183602001516103e8565b9150505b919050565b600081610100811061019657600080fd5b600302018054600182015460029092015490925083565b601290565b610304546001600160a01b031681565b60006101cc6102ce565b90506101e08160000151826020015161048d565b50565b6103005460ff1681565b610303805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156102745780601f1061024957610100808354040283529160200191610274565b820191906000526020600020905b81548152906001019060200180831161025757829003601f168201915b505050505081565b6000806102876102ce565b90508261029657519050610180565b61017c838260000151836020015161063a565b604051806040016040528060038152602001621554d160ea1b81525081565b3b151590565b6102d6610adc565b6103045460408051808201825260038152621554d160ea1b6020820152905163195556f360e21b81526000926001600160a01b0316916365555bcc916103229161030391600401610bdc565b60606040518083038186803b15801561033a57600080fd5b505afa15801561034e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103729190610afd565b905060008160400151116103a15760405162461bcd60e51b815260040161039890610c99565b60405180910390fd5b60008160200151116103c55760405162461bcd60e51b815260040161039890610cda565b80516103e35760405162461bcd60e51b815260040161039890610cba565b905090565b61030254600090600160a01b900469ffffffffffffffffffff16841461041a57610413848484610675565b9050610486565b610302546001600160a01b031661042f61080c565b141561043f575061030154610486565b610449838361048d565b61045161080c565b61030280546001600160a01b0319166001600160a01b039290921691909117905561047d848484610675565b61030181905590505b9392505050565b6103005460ff161580156104a15750600254155b1561050d57604080516060810182528381526000602082018190529082018390528381556001819055600283905590517f5f4a9a1b73bee700ca1fb203bb004bcc0a7eca48af3f147b24dcf5bf4bf3c00b916105009185918591610d42565b60405180910390a1610636565b61030054600090819060ff16610100811061052457fe5b604080516060810182526003929092029290920180548252600181015460208301526002015491810182905291508210156105715760405162461bcd60e51b815260040161039890610cfb565b610300805460ff198116600160ff928316018216179182905560408381015181516060810183528781528551602080880151938903918202909301928201929092529182018690529290916000911661010081106105cb57fe5b825160039190910291909101908155602082015160018201556040918201516002909101556103005490517f5f4a9a1b73bee700ca1fb203bb004bcc0a7eca48af3f147b24dcf5bf4bf3c00b9161062b918791879160ff90911690610d42565b60405180910390a150505b5050565b610302546000906001600160a01b031661065261080c565b1415610662575061030154610486565b61066d848484610675565b949350505050565b610300546000908190819060ff16610100811061068e57fe5b60030201604051806060016040529081600082015481526020016001820154815260200160028201548152505090508060000151600014156106e25760405162461bcd60e51b815260040161039890610d1a565b60006106ec61080c565b905060006106fa8288610810565b905060008061070883610872565b9092509050600061075c610751610729610722888c610810565b8c906109c2565b61074b6107438a604001518d61081090919063ffffffff16565b8a51906109c2565b90610a1b565b602088015190610a1b565b905060008360400151851161077e5783604001519450836020015190506107ed565b8483604001511161079c5782604001519450826020015190506107ed565b60008460400151846040015103905060008560400151870390506107e8610751836107e2846107dc8b602001518b6020015161081090919063ffffffff16565b906109c2565b90610a75565b925050505b6107fd8587036107e28484610810565b9b9a5050505050505050505050565b4290565b600082821115610867576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b508082035b92915050565b61087a610adc565b610882610adc565b6103005460ff16600080610100815b81811015610904578760008660ff1661010081106108ab57fe5b6003020160020154116108f55760008560ff1661010081106108c957fe5b6003020160020154600014156108e757846001019350839250610904565b849350836001019250610904565b60001990940193600101610891565b818114156109245760405162461bcd60e51b815260040161039890610c79565b60008460ff16610100811061093557fe5b600302016040518060600160405290816000820154815260200160018201548152602001600282015481525050965060008360ff16610100811061097557fe5b60030201604051806060016040529081600082015481526020016001820154815260200160028201548152505095508660400151866040015110156109b8578695505b5050505050915091565b6000826109d15750600061086c565b828202828482816109de57fe5b04146104865760405162461bcd60e51b8152600401808060200182810382526021815260200180610d8c6021913960400191505060405180910390fd5b600082820183811015610486576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000808211610acb576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381610ad457fe5b049392505050565b60405180606001604052806000815260200160008152602001600081525090565b600060608284031215610b0e578081fd5b6040516060810181811067ffffffffffffffff82111715610b2b57fe5b80604052508251815260208301516020820152604083015160408201528091505092915050565b600060208284031215610b63578081fd5b5035919050565b60008151808452815b81811015610b8f57602081850181015186830182015201610b73565b81811115610ba05782602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b6000602082526104866020830184610b6a565b60006040820160408352818554600180821660008114610c035760018114610c2157610c5a565b60028304607f16855260ff1983166060880152608087019350610c5a565b60028304808652610c318a610d7f565b875b82811015610c505781548a82016060015290840190602001610c33565b8901606001955050505b5050508381036020850152610c6f8186610b6a565b9695505050505050565b602080825260069082015265086a8be9c8a960d31b604082015260600190565b6020808252600790820152662128232faa28ad60c91b604082015260600190565b60208082526006908201526504250465f49560d41b604082015260600190565b6020808252600790820152662128232faa212d60c91b604082015260600190565b60208082526005908201526410d517d25560da1b604082015260600190565b60208082526005908201526410d517d39160da1b604082015260600190565b90815260200190565b928352602083019190915260ff16604082015260600190565b9283526020830191909152604082015260600190565b60ff91909116815260200190565b6000908152602090209056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220efe5a99f67f0638e4f5978f3d9253913a108623974dd30e8541181ca03c24e9564736f6c63430007060033", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x10B2 CODESIZE SUB DUP1 PUSH3 0x10B2 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x1AB JUMP JUMPDEST PUSH2 0x302 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL PUSH1 0x1 PUSH1 0xF0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0xA0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB DUP5 AND MUL OR SWAP1 SSTORE PUSH3 0x79 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH3 0xDD PUSH1 0x20 SWAP1 DUP2 SHL PUSH3 0x2C8 OR SWAP1 SHR JUMP JUMPDEST PUSH3 0xA1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x98 SWAP1 PUSH3 0x29F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x304 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND OR SWAP1 SSTORE DUP2 MLOAD PUSH3 0xD3 SWAP1 PUSH2 0x303 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH3 0xE7 JUMP JUMPDEST POP POP POP POP PUSH3 0x2C0 JUMP JUMPDEST DUP1 EXTCODESIZE ISZERO ISZERO JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH3 0x11F JUMPI PUSH1 0x0 DUP6 SSTORE PUSH3 0x16A JUMP JUMPDEST DUP3 PUSH1 0x1F LT PUSH3 0x13A JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x16A JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x16A JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x16A JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x14D JUMP JUMPDEST POP PUSH3 0x178 SWAP3 SWAP2 POP PUSH3 0x17C JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x178 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x17D JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB DUP2 AND DUP2 EQ PUSH3 0xE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x1C0 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x1D7 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH1 0x20 DUP6 DUP2 ADD MLOAD SWAP2 SWAP5 POP SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x1F6 JUMPI DUP5 DUP6 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x20A JUMPI DUP5 DUP6 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH3 0x217 JUMPI INVALID JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD DUP6 ADD DUP4 DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH3 0x235 JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD DUP6 ADD DUP11 LT ISZERO PUSH3 0x24C JUMPI DUP7 DUP8 REVERT JUMPDEST DUP7 SWAP3 POP JUMPDEST DUP2 DUP4 LT ISZERO PUSH3 0x26F JUMPI DUP4 DUP4 ADD DUP6 ADD MLOAD DUP2 DUP5 ADD DUP7 ADD MSTORE SWAP2 DUP5 ADD SWAP2 PUSH3 0x250 JUMP JUMPDEST DUP2 DUP4 GT ISZERO PUSH3 0x280 JUMPI DUP7 DUP6 DUP4 DUP4 ADD ADD MSTORE JUMPDEST DUP1 SWAP7 POP POP POP POP POP POP PUSH3 0x296 PUSH1 0x40 DUP6 ADD PUSH3 0x193 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x7 SWAP1 DUP3 ADD MSTORE PUSH7 0x4250465F414E43 PUSH1 0xC8 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH2 0xDE2 DUP1 PUSH3 0x2D0 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x93 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA2E62045 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA2E62045 EQ PUSH2 0x10D JUMPI DUP1 PUSH4 0xAED3AFF7 EQ PUSH2 0x117 JUMPI DUP1 PUSH4 0xCDF456E1 EQ PUSH2 0x11F JUMPI DUP1 PUSH4 0xE7572230 EQ PUSH2 0x134 JUMPI DUP1 PUSH4 0xF06A1E13 EQ PUSH2 0x147 JUMPI PUSH2 0x93 JUMP JUMPDEST DUP1 PUSH4 0x1D1A111A EQ PUSH2 0x98 JUMPI DUP1 PUSH4 0x252C09D7 EQ PUSH2 0xC1 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0xE3 JUMPI DUP1 PUSH4 0x5368945B EQ PUSH2 0xF8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xAB PUSH2 0xA6 CALLDATASIZE PUSH1 0x4 PUSH2 0xB52 JUMP JUMPDEST PUSH2 0x14F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB8 SWAP2 SWAP1 PUSH2 0xD39 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xD4 PUSH2 0xCF CALLDATASIZE PUSH1 0x4 PUSH2 0xB52 JUMP JUMPDEST PUSH2 0x185 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB8 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xD5B JUMP JUMPDEST PUSH2 0xEB PUSH2 0x1AD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB8 SWAP2 SWAP1 PUSH2 0xD71 JUMP JUMPDEST PUSH2 0x100 PUSH2 0x1B2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB8 SWAP2 SWAP1 PUSH2 0xBB5 JUMP JUMPDEST PUSH2 0x115 PUSH2 0x1C2 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xEB PUSH2 0x1E3 JUMP JUMPDEST PUSH2 0x127 PUSH2 0x1ED JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB8 SWAP2 SWAP1 PUSH2 0xBC9 JUMP JUMPDEST PUSH2 0xAB PUSH2 0x142 CALLDATASIZE PUSH1 0x4 PUSH2 0xB52 JUMP JUMPDEST PUSH2 0x27C JUMP JUMPDEST PUSH2 0x127 PUSH2 0x2A9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x15A PUSH2 0x2CE JUMP JUMPDEST SWAP1 POP DUP3 PUSH2 0x169 JUMPI MLOAD SWAP1 POP PUSH2 0x180 JUMP JUMPDEST PUSH2 0x17C DUP4 DUP3 PUSH1 0x0 ADD MLOAD DUP4 PUSH1 0x20 ADD MLOAD PUSH2 0x3E8 JUMP JUMPDEST SWAP2 POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x100 DUP2 LT PUSH2 0x196 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 MUL ADD DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP3 POP DUP4 JUMP JUMPDEST PUSH1 0x12 SWAP1 JUMP JUMPDEST PUSH2 0x304 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1CC PUSH2 0x2CE JUMP JUMPDEST SWAP1 POP PUSH2 0x1E0 DUP2 PUSH1 0x0 ADD MLOAD DUP3 PUSH1 0x20 ADD MLOAD PUSH2 0x48D JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x300 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x303 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x274 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x249 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x274 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x257 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x287 PUSH2 0x2CE JUMP JUMPDEST SWAP1 POP DUP3 PUSH2 0x296 JUMPI MLOAD SWAP1 POP PUSH2 0x180 JUMP JUMPDEST PUSH2 0x17C DUP4 DUP3 PUSH1 0x0 ADD MLOAD DUP4 PUSH1 0x20 ADD MLOAD PUSH2 0x63A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0x1554D1 PUSH1 0xEA SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x2D6 PUSH2 0xADC JUMP JUMPDEST PUSH2 0x304 SLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x3 DUP2 MSTORE PUSH3 0x1554D1 PUSH1 0xEA SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 MLOAD PUSH4 0x195556F3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x65555BCC SWAP2 PUSH2 0x322 SWAP2 PUSH2 0x303 SWAP2 PUSH1 0x4 ADD PUSH2 0xBDC JUMP JUMPDEST PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x33A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x34E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x372 SWAP2 SWAP1 PUSH2 0xAFD JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x40 ADD MLOAD GT PUSH2 0x3A1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x398 SWAP1 PUSH2 0xC99 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x20 ADD MLOAD GT PUSH2 0x3C5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x398 SWAP1 PUSH2 0xCDA JUMP JUMPDEST DUP1 MLOAD PUSH2 0x3E3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x398 SWAP1 PUSH2 0xCBA JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x302 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH10 0xFFFFFFFFFFFFFFFFFFFF AND DUP5 EQ PUSH2 0x41A JUMPI PUSH2 0x413 DUP5 DUP5 DUP5 PUSH2 0x675 JUMP JUMPDEST SWAP1 POP PUSH2 0x486 JUMP JUMPDEST PUSH2 0x302 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x42F PUSH2 0x80C JUMP JUMPDEST EQ ISZERO PUSH2 0x43F JUMPI POP PUSH2 0x301 SLOAD PUSH2 0x486 JUMP JUMPDEST PUSH2 0x449 DUP4 DUP4 PUSH2 0x48D JUMP JUMPDEST PUSH2 0x451 PUSH2 0x80C JUMP JUMPDEST PUSH2 0x302 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x47D DUP5 DUP5 DUP5 PUSH2 0x675 JUMP JUMPDEST PUSH2 0x301 DUP2 SWAP1 SSTORE SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x300 SLOAD PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x4A1 JUMPI POP PUSH1 0x2 SLOAD ISZERO JUMPDEST ISZERO PUSH2 0x50D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE DUP4 DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP1 DUP3 ADD DUP4 SWAP1 MSTORE DUP4 DUP2 SSTORE PUSH1 0x1 DUP2 SWAP1 SSTORE PUSH1 0x2 DUP4 SWAP1 SSTORE SWAP1 MLOAD PUSH32 0x5F4A9A1B73BEE700CA1FB203BB004BCC0A7ECA48AF3F147B24DCF5BF4BF3C00B SWAP2 PUSH2 0x500 SWAP2 DUP6 SWAP2 DUP6 SWAP2 PUSH2 0xD42 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH2 0x636 JUMP JUMPDEST PUSH2 0x300 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0xFF AND PUSH2 0x100 DUP2 LT PUSH2 0x524 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x3 SWAP3 SWAP1 SWAP3 MUL SWAP3 SWAP1 SWAP3 ADD DUP1 SLOAD DUP3 MSTORE PUSH1 0x1 DUP2 ADD SLOAD PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x2 ADD SLOAD SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE SWAP2 POP DUP3 LT ISZERO PUSH2 0x571 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x398 SWAP1 PUSH2 0xCFB JUMP JUMPDEST PUSH2 0x300 DUP1 SLOAD PUSH1 0xFF NOT DUP2 AND PUSH1 0x1 PUSH1 0xFF SWAP3 DUP4 AND ADD DUP3 AND OR SWAP2 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP4 DUP2 ADD MLOAD DUP2 MLOAD PUSH1 0x60 DUP2 ADD DUP4 MSTORE DUP8 DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 DUP1 DUP9 ADD MLOAD SWAP4 DUP10 SUB SWAP2 DUP3 MUL SWAP1 SWAP4 ADD SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP2 DUP3 ADD DUP7 SWAP1 MSTORE SWAP3 SWAP1 SWAP2 PUSH1 0x0 SWAP2 AND PUSH2 0x100 DUP2 LT PUSH2 0x5CB JUMPI INVALID JUMPDEST DUP3 MLOAD PUSH1 0x3 SWAP2 SWAP1 SWAP2 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 DUP2 SSTORE PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x1 DUP3 ADD SSTORE PUSH1 0x40 SWAP2 DUP3 ADD MLOAD PUSH1 0x2 SWAP1 SWAP2 ADD SSTORE PUSH2 0x300 SLOAD SWAP1 MLOAD PUSH32 0x5F4A9A1B73BEE700CA1FB203BB004BCC0A7ECA48AF3F147B24DCF5BF4BF3C00B SWAP2 PUSH2 0x62B SWAP2 DUP8 SWAP2 DUP8 SWAP2 PUSH1 0xFF SWAP1 SWAP2 AND SWAP1 PUSH2 0xD42 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x302 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x652 PUSH2 0x80C JUMP JUMPDEST EQ ISZERO PUSH2 0x662 JUMPI POP PUSH2 0x301 SLOAD PUSH2 0x486 JUMP JUMPDEST PUSH2 0x66D DUP5 DUP5 DUP5 PUSH2 0x675 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x300 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP2 SWAP1 PUSH1 0xFF AND PUSH2 0x100 DUP2 LT PUSH2 0x68E JUMPI INVALID JUMPDEST PUSH1 0x3 MUL ADD PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD SLOAD DUP2 MSTORE POP POP SWAP1 POP DUP1 PUSH1 0x0 ADD MLOAD PUSH1 0x0 EQ ISZERO PUSH2 0x6E2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x398 SWAP1 PUSH2 0xD1A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6EC PUSH2 0x80C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x6FA DUP3 DUP9 PUSH2 0x810 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x708 DUP4 PUSH2 0x872 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 PUSH2 0x75C PUSH2 0x751 PUSH2 0x729 PUSH2 0x722 DUP9 DUP13 PUSH2 0x810 JUMP JUMPDEST DUP13 SWAP1 PUSH2 0x9C2 JUMP JUMPDEST PUSH2 0x74B PUSH2 0x743 DUP11 PUSH1 0x40 ADD MLOAD DUP14 PUSH2 0x810 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP11 MLOAD SWAP1 PUSH2 0x9C2 JUMP JUMPDEST SWAP1 PUSH2 0xA1B JUMP JUMPDEST PUSH1 0x20 DUP9 ADD MLOAD SWAP1 PUSH2 0xA1B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 PUSH1 0x40 ADD MLOAD DUP6 GT PUSH2 0x77E JUMPI DUP4 PUSH1 0x40 ADD MLOAD SWAP5 POP DUP4 PUSH1 0x20 ADD MLOAD SWAP1 POP PUSH2 0x7ED JUMP JUMPDEST DUP5 DUP4 PUSH1 0x40 ADD MLOAD GT PUSH2 0x79C JUMPI DUP3 PUSH1 0x40 ADD MLOAD SWAP5 POP DUP3 PUSH1 0x20 ADD MLOAD SWAP1 POP PUSH2 0x7ED JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x40 ADD MLOAD DUP5 PUSH1 0x40 ADD MLOAD SUB SWAP1 POP PUSH1 0x0 DUP6 PUSH1 0x40 ADD MLOAD DUP8 SUB SWAP1 POP PUSH2 0x7E8 PUSH2 0x751 DUP4 PUSH2 0x7E2 DUP5 PUSH2 0x7DC DUP12 PUSH1 0x20 ADD MLOAD DUP12 PUSH1 0x20 ADD MLOAD PUSH2 0x810 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH2 0x9C2 JUMP JUMPDEST SWAP1 PUSH2 0xA75 JUMP JUMPDEST SWAP3 POP POP POP JUMPDEST PUSH2 0x7FD DUP6 DUP8 SUB PUSH2 0x7E2 DUP5 DUP5 PUSH2 0x810 JUMP JUMPDEST SWAP12 SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST TIMESTAMP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 GT ISZERO PUSH2 0x867 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP DUP1 DUP3 SUB JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x87A PUSH2 0xADC JUMP JUMPDEST PUSH2 0x882 PUSH2 0xADC JUMP JUMPDEST PUSH2 0x300 SLOAD PUSH1 0xFF AND PUSH1 0x0 DUP1 PUSH2 0x100 DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x904 JUMPI DUP8 PUSH1 0x0 DUP7 PUSH1 0xFF AND PUSH2 0x100 DUP2 LT PUSH2 0x8AB JUMPI INVALID JUMPDEST PUSH1 0x3 MUL ADD PUSH1 0x2 ADD SLOAD GT PUSH2 0x8F5 JUMPI PUSH1 0x0 DUP6 PUSH1 0xFF AND PUSH2 0x100 DUP2 LT PUSH2 0x8C9 JUMPI INVALID JUMPDEST PUSH1 0x3 MUL ADD PUSH1 0x2 ADD SLOAD PUSH1 0x0 EQ ISZERO PUSH2 0x8E7 JUMPI DUP5 PUSH1 0x1 ADD SWAP4 POP DUP4 SWAP3 POP PUSH2 0x904 JUMP JUMPDEST DUP5 SWAP4 POP DUP4 PUSH1 0x1 ADD SWAP3 POP PUSH2 0x904 JUMP JUMPDEST PUSH1 0x0 NOT SWAP1 SWAP5 ADD SWAP4 PUSH1 0x1 ADD PUSH2 0x891 JUMP JUMPDEST DUP2 DUP2 EQ ISZERO PUSH2 0x924 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x398 SWAP1 PUSH2 0xC79 JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH1 0xFF AND PUSH2 0x100 DUP2 LT PUSH2 0x935 JUMPI INVALID JUMPDEST PUSH1 0x3 MUL ADD PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD SLOAD DUP2 MSTORE POP POP SWAP7 POP PUSH1 0x0 DUP4 PUSH1 0xFF AND PUSH2 0x100 DUP2 LT PUSH2 0x975 JUMPI INVALID JUMPDEST PUSH1 0x3 MUL ADD PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD SLOAD DUP2 MSTORE POP POP SWAP6 POP DUP7 PUSH1 0x40 ADD MLOAD DUP7 PUSH1 0x40 ADD MLOAD LT ISZERO PUSH2 0x9B8 JUMPI DUP7 SWAP6 POP JUMPDEST POP POP POP POP POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x9D1 JUMPI POP PUSH1 0x0 PUSH2 0x86C JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x9DE JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x486 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xD8C PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x486 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0xACB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 DUP4 DUP2 PUSH2 0xAD4 JUMPI INVALID JUMPDEST DIV SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB0E JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x60 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0xB2B JUMPI INVALID JUMPDEST DUP1 PUSH1 0x40 MSTORE POP DUP3 MLOAD DUP2 MSTORE PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x40 DUP3 ADD MSTORE DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB63 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xB8F JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0xB73 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0xBA0 JUMPI DUP3 PUSH1 0x20 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x486 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xB6A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD PUSH1 0x40 DUP4 MSTORE DUP2 DUP6 SLOAD PUSH1 0x1 DUP1 DUP3 AND PUSH1 0x0 DUP2 EQ PUSH2 0xC03 JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0xC21 JUMPI PUSH2 0xC5A JUMP JUMPDEST PUSH1 0x2 DUP4 DIV PUSH1 0x7F AND DUP6 MSTORE PUSH1 0xFF NOT DUP4 AND PUSH1 0x60 DUP9 ADD MSTORE PUSH1 0x80 DUP8 ADD SWAP4 POP PUSH2 0xC5A JUMP JUMPDEST PUSH1 0x2 DUP4 DIV DUP1 DUP7 MSTORE PUSH2 0xC31 DUP11 PUSH2 0xD7F JUMP JUMPDEST DUP8 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0xC50 JUMPI DUP2 SLOAD DUP11 DUP3 ADD PUSH1 0x60 ADD MSTORE SWAP1 DUP5 ADD SWAP1 PUSH1 0x20 ADD PUSH2 0xC33 JUMP JUMPDEST DUP10 ADD PUSH1 0x60 ADD SWAP6 POP POP POP JUMPDEST POP POP POP DUP4 DUP2 SUB PUSH1 0x20 DUP6 ADD MSTORE PUSH2 0xC6F DUP2 DUP7 PUSH2 0xB6A JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x6 SWAP1 DUP3 ADD MSTORE PUSH6 0x86A8BE9C8A9 PUSH1 0xD3 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x7 SWAP1 DUP3 ADD MSTORE PUSH7 0x2128232FAA28AD PUSH1 0xC9 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x6 SWAP1 DUP3 ADD MSTORE PUSH6 0x4250465F495 PUSH1 0xD4 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x7 SWAP1 DUP3 ADD MSTORE PUSH7 0x2128232FAA212D PUSH1 0xC9 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x5 SWAP1 DUP3 ADD MSTORE PUSH5 0x10D517D255 PUSH1 0xDA SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x5 SWAP1 DUP3 ADD MSTORE PUSH5 0x10D517D391 PUSH1 0xDA SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xFF AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0xFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 SWAP1 JUMP INVALID MSTORE8 PUSH2 0x6665 0x4D PUSH2 0x7468 GASPRICE KECCAK256 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F77A26469706673582212 KECCAK256 0xEF 0xE5 0xA9 SWAP16 PUSH8 0xF0638E4F5978F3D9 0x25 CODECOPY SGT LOG1 ADDMOD PUSH3 0x3974DD ADDRESS 0xE8 SLOAD GT DUP2 0xCA SUB 0xC2 0x4E SWAP6 PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ", - "sourceMap": "409:2394:36:-:0;;;689:336;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;349:9:47;:20;;-1:-1:-1;;;;;;;;349:20:47;-1:-1:-1;;;;;;;;349:20:47;;;;;;912:31:36::1;-1:-1:-1::0;;;;;912:29:36;::::1;;;::::0;;::::1;;;:31:::0;::::1;:::i;:::-;904:51;;;;-1:-1:-1::0;;;904:51:36::1;;;;;;;:::i;:::-;;;;;;;;;966:6;:18:::0;;-1:-1:-1;;;;;;966:18:36::1;-1:-1:-1::0;;;;;966:18:36;::::1;;::::0;;994:24;;::::1;::::0;:9:::1;::::0;:24:::1;::::0;::::1;::::0;::::1;:::i;:::-;;689:336:::0;;;409:2394;;726:413:2;1086:20;;1124:8;;726:413;;;;:::o;409:2394:36:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;409:2394:36;;;-1:-1:-1;409:2394:36;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:177:49;94:13;;-1:-1:-1;;;;;136:30:49;;126:41;;116:2;;181:1;178;171:12;196:1373;;;;384:2;372:9;363:7;359:23;355:32;352:2;;;405:6;397;390:22;352:2;436:16;;-1:-1:-1;;;;;481:31:49;;471:42;;461:2;;532:6;524;517:22;461:2;584;615:18;;;609:25;560:5;;-1:-1:-1;584:2:49;-1:-1:-1;;;;;683:14:49;;;680:2;;;715:6;707;700:22;680:2;758:6;747:9;743:22;733:32;;803:7;796:4;792:2;788:13;784:27;774:2;;830:6;822;815:22;774:2;864;858:9;886:2;882;879:10;876:2;;;892:9;876:2;932;926:9;1001:2;982:13;;-1:-1:-1;;978:27:49;966:40;;962:49;;1026:18;;;1046:22;;;1023:46;1020:2;;;1072:9;1020:2;1099;1092:22;1123:18;;;1160:11;;;1156:20;;1153:33;-1:-1:-1;1150:2:49;;;1204:6;1196;1189:22;1150:2;1231:6;1222:15;;1246:129;1260:2;1257:1;1254:9;1246:129;;;1348:10;;;1344:19;;1338:26;1317:14;;;1313:23;;1306:59;1271:10;;;;1246:129;;;1393:2;1390:1;1387:9;1384:2;;;1452:6;1447:2;1442;1434:6;1430:15;1426:24;1419:40;1384:2;1488:6;1478:16;;;;;;;1513:50;1559:2;1548:9;1544:18;1513:50;:::i;:::-;1503:60;;342:1227;;;;;:::o;1574:330::-;1776:2;1758:21;;;1815:1;1795:18;;;1788:29;-1:-1:-1;;;1848:2:49;1833:18;;1826:37;1895:2;1880:18;;1748:156::o;:::-;409:2394:36;;;;;;" - }, - "deployedBytecode": { - "generatedSources": [ - { - "ast": { - "nodeType": "YulBlock", - "src": "0:6322:49", - "statements": [ - { - "nodeType": "YulBlock", - "src": "6:3:49", - "statements": [] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "126:455:49", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "172:26:49", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "181:6:49" - }, - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "189:6:49" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "174:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "174:22:49" - }, - "nodeType": "YulExpressionStatement", - "src": "174:22:49" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "147:7:49" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "156:9:49" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "143:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "143:23:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "168:2:49", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "139:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "139:32:49" - }, - "nodeType": "YulIf", - "src": "136:2:49" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "207:23:49", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "227:2:49", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "221:5:49" - }, - "nodeType": "YulFunctionCall", - "src": "221:9:49" - }, - "variables": [ - { - "name": "memPtr", - "nodeType": "YulTypedName", - "src": "211:6:49", - "type": "" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "239:33:49", - "value": { - "arguments": [ - { - "name": "memPtr", - "nodeType": "YulIdentifier", - "src": "261:6:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "269:2:49", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "257:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "257:15:49" - }, - "variables": [ - { - "name": "newFreePtr", - "nodeType": "YulTypedName", - "src": "243:10:49", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "347:13:49", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "invalid", - "nodeType": "YulIdentifier", - "src": "349:7:49" - }, - "nodeType": "YulFunctionCall", - "src": "349:9:49" - }, - "nodeType": "YulExpressionStatement", - "src": "349:9:49" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "newFreePtr", - "nodeType": "YulIdentifier", - "src": "290:10:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "302:18:49", - "type": "", - "value": "0xffffffffffffffff" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "287:2:49" - }, - "nodeType": "YulFunctionCall", - "src": "287:34:49" - }, - { - "arguments": [ - { - "name": "newFreePtr", - "nodeType": "YulIdentifier", - "src": "326:10:49" - }, - { - "name": "memPtr", - "nodeType": "YulIdentifier", - "src": "338:6:49" - } - ], - "functionName": { - "name": "lt", - "nodeType": "YulIdentifier", - "src": "323:2:49" - }, - "nodeType": "YulFunctionCall", - "src": "323:22:49" - } - ], - "functionName": { - "name": "or", - "nodeType": "YulIdentifier", - "src": "284:2:49" - }, - "nodeType": "YulFunctionCall", - "src": "284:62:49" - }, - "nodeType": "YulIf", - "src": "281:2:49" - }, - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "376:2:49", - "type": "", - "value": "64" - }, - { - "name": "newFreePtr", - "nodeType": "YulIdentifier", - "src": "380:10:49" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "369:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "369:22:49" - }, - "nodeType": "YulExpressionStatement", - "src": "369:22:49" - }, - { - "expression": { - "arguments": [ - { - "name": "memPtr", - "nodeType": "YulIdentifier", - "src": "407:6:49" - }, - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "421:9:49" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "415:5:49" - }, - "nodeType": "YulFunctionCall", - "src": "415:16:49" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "400:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "400:32:49" - }, - "nodeType": "YulExpressionStatement", - "src": "400:32:49" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "memPtr", - "nodeType": "YulIdentifier", - "src": "452:6:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "460:2:49", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "448:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "448:15:49" - }, - { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "475:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "486:2:49", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "471:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "471:18:49" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "465:5:49" - }, - "nodeType": "YulFunctionCall", - "src": "465:25:49" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "441:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "441:50:49" - }, - "nodeType": "YulExpressionStatement", - "src": "441:50:49" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "memPtr", - "nodeType": "YulIdentifier", - "src": "511:6:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "519:2:49", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "507:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "507:15:49" - }, - { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "534:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "545:2:49", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "530:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "530:18:49" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "524:5:49" - }, - "nodeType": "YulFunctionCall", - "src": "524:25:49" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "500:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "500:50:49" - }, - "nodeType": "YulExpressionStatement", - "src": "500:50:49" - }, - { - "nodeType": "YulAssignment", - "src": "559:16:49", - "value": { - "name": "memPtr", - "nodeType": "YulIdentifier", - "src": "569:6:49" - }, - "variableNames": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "559:6:49" - } - ] - } - ] - }, - "name": "abi_decode_tuple_t_struct$_ReferenceData_$8676_memory_ptr_fromMemory", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "92:9:49", - "type": "" - }, - { - "name": "dataEnd", - "nodeType": "YulTypedName", - "src": "103:7:49", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "115:6:49", - "type": "" - } - ], - "src": "14:567:49" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "656:120:49", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "702:26:49", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "711:6:49" - }, - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "719:6:49" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "704:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "704:22:49" - }, - "nodeType": "YulExpressionStatement", - "src": "704:22:49" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "677:7:49" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "686:9:49" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "673:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "673:23:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "698:2:49", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "669:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "669:32:49" - }, - "nodeType": "YulIf", - "src": "666:2:49" - }, - { - "nodeType": "YulAssignment", - "src": "737:33:49", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "760:9:49" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "747:12:49" - }, - "nodeType": "YulFunctionCall", - "src": "747:23:49" - }, - "variableNames": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "737:6:49" - } - ] - } - ] - }, - "name": "abi_decode_tuple_t_uint256", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "622:9:49", - "type": "" - }, - { - "name": "dataEnd", - "nodeType": "YulTypedName", - "src": "633:7:49", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "645:6:49", - "type": "" - } - ], - "src": "586:190:49" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "833:426:49", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "843:26:49", - "value": { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "863:5:49" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "857:5:49" - }, - "nodeType": "YulFunctionCall", - "src": "857:12:49" - }, - "variables": [ - { - "name": "length", - "nodeType": "YulTypedName", - "src": "847:6:49", - "type": "" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "885:3:49" - }, - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "890:6:49" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "878:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "878:19:49" - }, - "nodeType": "YulExpressionStatement", - "src": "878:19:49" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "906:12:49", - "value": { - "name": "end", - "nodeType": "YulIdentifier", - "src": "915:3:49" - }, - "variables": [ - { - "name": "i", - "nodeType": "YulTypedName", - "src": "910:1:49", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "979:110:49", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "993:14:49", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1003:4:49", - "type": "", - "value": "0x20" - }, - "variables": [ - { - "name": "_1", - "nodeType": "YulTypedName", - "src": "997:2:49", - "type": "" - } - ] - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "1035:3:49" - }, - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "1040:1:49" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1031:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "1031:11:49" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "1044:2:49" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1027:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "1027:20:49" - }, - { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "1063:5:49" - }, - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "1070:1:49" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1059:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "1059:13:49" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "1074:2:49" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1055:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "1055:22:49" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "1049:5:49" - }, - "nodeType": "YulFunctionCall", - "src": "1049:29:49" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "1020:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "1020:59:49" - }, - "nodeType": "YulExpressionStatement", - "src": "1020:59:49" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "938:1:49" - }, - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "941:6:49" - } - ], - "functionName": { - "name": "lt", - "nodeType": "YulIdentifier", - "src": "935:2:49" - }, - "nodeType": "YulFunctionCall", - "src": "935:13:49" - }, - "nodeType": "YulForLoop", - "post": { - "nodeType": "YulBlock", - "src": "949:21:49", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "951:17:49", - "value": { - "arguments": [ - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "960:1:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "963:4:49", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "956:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "956:12:49" - }, - "variableNames": [ - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "951:1:49" - } - ] - } - ] - }, - "pre": { - "nodeType": "YulBlock", - "src": "931:3:49", - "statements": [] - }, - "src": "927:162:49" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "1123:64:49", - "statements": [ - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "1152:3:49" - }, - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "1157:6:49" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1148:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "1148:16:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1166:4:49", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1144:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "1144:27:49" - }, - { - "name": "end", - "nodeType": "YulIdentifier", - "src": "1173:3:49" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "1137:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "1137:40:49" - }, - "nodeType": "YulExpressionStatement", - "src": "1137:40:49" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "1104:1:49" - }, - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "1107:6:49" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "1101:2:49" - }, - "nodeType": "YulFunctionCall", - "src": "1101:13:49" - }, - "nodeType": "YulIf", - "src": "1098:2:49" - }, - { - "nodeType": "YulAssignment", - "src": "1196:57:49", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "1211:3:49" - }, - { - "arguments": [ - { - "arguments": [ - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "1224:6:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1232:2:49", - "type": "", - "value": "31" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1220:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "1220:15:49" - }, - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1241:2:49", - "type": "", - "value": "31" - } - ], - "functionName": { - "name": "not", - "nodeType": "YulIdentifier", - "src": "1237:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "1237:7:49" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "1216:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "1216:29:49" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1207:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "1207:39:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1248:4:49", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1203:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "1203:50:49" - }, - "variableNames": [ - { - "name": "end", - "nodeType": "YulIdentifier", - "src": "1196:3:49" - } - ] - } - ] - }, - "name": "abi_encode_t_string", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "810:5:49", - "type": "" - }, - { - "name": "pos", - "nodeType": "YulTypedName", - "src": "817:3:49", - "type": "" - } - ], - "returnVariables": [ - { - "name": "end", - "nodeType": "YulTypedName", - "src": "825:3:49", - "type": "" - } - ], - "src": "781:478:49" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "1387:102:49", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "1397:26:49", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1409:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1420:2:49", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1405:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "1405:18:49" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "1397:4:49" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1439:9:49" - }, - { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "1454:6:49" - }, - { - "arguments": [ - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1470:3:49", - "type": "", - "value": "160" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1475:1:49", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "1466:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "1466:11:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1479:1:49", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "1462:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "1462:19:49" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "1450:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "1450:32:49" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "1432:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "1432:51:49" - }, - "nodeType": "YulExpressionStatement", - "src": "1432:51:49" - } - ] - }, - "name": "abi_encode_tuple_t_contract$_IStdReference_$8700__to_t_address__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "1356:9:49", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "1367:6:49", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "1378:4:49", - "type": "" - } - ], - "src": "1264:225:49" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "1615:101:49", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1632:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1643:2:49", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "1625:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "1625:21:49" - }, - "nodeType": "YulExpressionStatement", - "src": "1625:21:49" - }, - { - "nodeType": "YulAssignment", - "src": "1655:55:49", - "value": { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "1683:6:49" - }, - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1695:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1706:2:49", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1691:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "1691:18:49" - } - ], - "functionName": { - "name": "abi_encode_t_string", - "nodeType": "YulIdentifier", - "src": "1663:19:49" - }, - "nodeType": "YulFunctionCall", - "src": "1663:47:49" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "1655:4:49" - } - ] - } - ] - }, - "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "1584:9:49", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "1595:6:49", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "1606:4:49", - "type": "" - } - ], - "src": "1494:222:49" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "1887:928:49", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "1897:32:49", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1915:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1926:2:49", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1911:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "1911:18:49" - }, - "variables": [ - { - "name": "tail_1", - "nodeType": "YulTypedName", - "src": "1901:6:49", - "type": "" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1945:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1956:2:49", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "1938:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "1938:21:49" - }, - "nodeType": "YulExpressionStatement", - "src": "1938:21:49" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "1968:15:49", - "value": { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "1979:4:49" - }, - "variables": [ - { - "name": "ret", - "nodeType": "YulTypedName", - "src": "1972:3:49", - "type": "" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "1992:30:49", - "value": { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "2015:6:49" - } - ], - "functionName": { - "name": "sload", - "nodeType": "YulIdentifier", - "src": "2009:5:49" - }, - "nodeType": "YulFunctionCall", - "src": "2009:13:49" - }, - "variables": [ - { - "name": "slotValue", - "nodeType": "YulTypedName", - "src": "1996:9:49", - "type": "" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "2031:11:49", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2041:1:49", - "type": "", - "value": "1" - }, - "variables": [ - { - "name": "_1", - "nodeType": "YulTypedName", - "src": "2035:2:49", - "type": "" - } - ] - }, - { - "cases": [ - { - "body": { - "nodeType": "YulBlock", - "src": "2092:172:49", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "tail_1", - "nodeType": "YulIdentifier", - "src": "2113:6:49" - }, - { - "arguments": [ - { - "arguments": [ - { - "name": "slotValue", - "nodeType": "YulIdentifier", - "src": "2129:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2140:1:49", - "type": "", - "value": "2" - } - ], - "functionName": { - "name": "div", - "nodeType": "YulIdentifier", - "src": "2125:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "2125:17:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2144:4:49", - "type": "", - "value": "0x7f" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "2121:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "2121:28:49" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "2106:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "2106:44:49" - }, - "nodeType": "YulExpressionStatement", - "src": "2106:44:49" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2174:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2185:2:49", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2170:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "2170:18:49" - }, - { - "arguments": [ - { - "name": "slotValue", - "nodeType": "YulIdentifier", - "src": "2194:9:49" - }, - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2209:3:49", - "type": "", - "value": "255" - } - ], - "functionName": { - "name": "not", - "nodeType": "YulIdentifier", - "src": "2205:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "2205:8:49" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "2190:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "2190:24:49" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "2163:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "2163:52:49" - }, - "nodeType": "YulExpressionStatement", - "src": "2163:52:49" - }, - { - "nodeType": "YulAssignment", - "src": "2228:26:49", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2239:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2250:3:49", - "type": "", - "value": "128" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2235:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "2235:19:49" - }, - "variableNames": [ - { - "name": "ret", - "nodeType": "YulIdentifier", - "src": "2228:3:49" - } - ] - } - ] - }, - "nodeType": "YulCase", - "src": "2085:179:49", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2090:1:49", - "type": "", - "value": "0" - } - }, - { - "body": { - "nodeType": "YulBlock", - "src": "2280:424:49", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "2294:31:49", - "value": { - "arguments": [ - { - "name": "slotValue", - "nodeType": "YulIdentifier", - "src": "2312:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2323:1:49", - "type": "", - "value": "2" - } - ], - "functionName": { - "name": "div", - "nodeType": "YulIdentifier", - "src": "2308:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "2308:17:49" - }, - "variables": [ - { - "name": "length", - "nodeType": "YulTypedName", - "src": "2298:6:49", - "type": "" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "tail_1", - "nodeType": "YulIdentifier", - "src": "2345:6:49" - }, - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "2353:6:49" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "2338:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "2338:22:49" - }, - "nodeType": "YulExpressionStatement", - "src": "2338:22:49" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "2373:54:49", - "value": { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "2420:6:49" - } - ], - "functionName": { - "name": "array_dataslot_t_string_storage", - "nodeType": "YulIdentifier", - "src": "2388:31:49" - }, - "nodeType": "YulFunctionCall", - "src": "2388:39:49" - }, - "variables": [ - { - "name": "dataPos", - "nodeType": "YulTypedName", - "src": "2377:7:49", - "type": "" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "2440:13:49", - "value": { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "2449:4:49" - }, - "variables": [ - { - "name": "i", - "nodeType": "YulTypedName", - "src": "2444:1:49", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "2522:126:49", - "statements": [ - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2555:9:49" - }, - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "2566:1:49" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2551:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "2551:17:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2570:2:49", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2547:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "2547:26:49" - }, - { - "arguments": [ - { - "name": "dataPos", - "nodeType": "YulIdentifier", - "src": "2581:7:49" - } - ], - "functionName": { - "name": "sload", - "nodeType": "YulIdentifier", - "src": "2575:5:49" - }, - "nodeType": "YulFunctionCall", - "src": "2575:14:49" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "2540:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "2540:50:49" - }, - "nodeType": "YulExpressionStatement", - "src": "2540:50:49" - }, - { - "nodeType": "YulAssignment", - "src": "2607:27:49", - "value": { - "arguments": [ - { - "name": "dataPos", - "nodeType": "YulIdentifier", - "src": "2622:7:49" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "2631:2:49" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2618:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "2618:16:49" - }, - "variableNames": [ - { - "name": "dataPos", - "nodeType": "YulIdentifier", - "src": "2607:7:49" - } - ] - } - ] - }, - "condition": { - "arguments": [ - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "2477:1:49" - }, - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "2480:6:49" - } - ], - "functionName": { - "name": "lt", - "nodeType": "YulIdentifier", - "src": "2474:2:49" - }, - "nodeType": "YulFunctionCall", - "src": "2474:13:49" - }, - "nodeType": "YulForLoop", - "post": { - "nodeType": "YulBlock", - "src": "2488:21:49", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "2490:17:49", - "value": { - "arguments": [ - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "2499:1:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2502:4:49", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2495:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "2495:12:49" - }, - "variableNames": [ - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "2490:1:49" - } - ] - } - ] - }, - "pre": { - "nodeType": "YulBlock", - "src": "2470:3:49", - "statements": [] - }, - "src": "2466:182:49" - }, - { - "nodeType": "YulAssignment", - "src": "2661:33:49", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2676:9:49" - }, - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "2687:1:49" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2672:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "2672:17:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2691:2:49", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2668:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "2668:26:49" - }, - "variableNames": [ - { - "name": "ret", - "nodeType": "YulIdentifier", - "src": "2661:3:49" - } - ] - } - ] - }, - "nodeType": "YulCase", - "src": "2273:431:49", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2278:1:49", - "type": "", - "value": "1" - } - } - ], - "expression": { - "arguments": [ - { - "name": "slotValue", - "nodeType": "YulIdentifier", - "src": "2062:9:49" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "2073:2:49" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "2058:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "2058:18:49" - }, - "nodeType": "YulSwitch", - "src": "2051:653:49" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2724:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2735:2:49", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2720:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "2720:18:49" - }, - { - "arguments": [ - { - "name": "ret", - "nodeType": "YulIdentifier", - "src": "2744:3:49" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2749:9:49" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "2740:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "2740:19:49" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "2713:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "2713:47:49" - }, - "nodeType": "YulExpressionStatement", - "src": "2713:47:49" - }, - { - "nodeType": "YulAssignment", - "src": "2769:40:49", - "value": { - "arguments": [ - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "2797:6:49" - }, - { - "name": "ret", - "nodeType": "YulIdentifier", - "src": "2805:3:49" - } - ], - "functionName": { - "name": "abi_encode_t_string", - "nodeType": "YulIdentifier", - "src": "2777:19:49" - }, - "nodeType": "YulFunctionCall", - "src": "2777:32:49" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "2769:4:49" - } - ] - } - ] - }, - "name": "abi_encode_tuple_t_string_storage_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "1848:9:49", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "1859:6:49", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "1867:6:49", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "1878:4:49", - "type": "" - } - ], - "src": "1721:1094:49" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "2994:155:49", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3011:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3022:2:49", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "3004:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "3004:21:49" - }, - "nodeType": "YulExpressionStatement", - "src": "3004:21:49" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3045:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3056:2:49", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3041:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "3041:18:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3061:1:49", - "type": "", - "value": "6" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "3034:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "3034:29:49" - }, - "nodeType": "YulExpressionStatement", - "src": "3034:29:49" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3083:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3094:2:49", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3079:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "3079:18:49" - }, - { - "kind": "string", - "nodeType": "YulLiteral", - "src": "3099:8:49", - "type": "", - "value": "CT_NEH" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "3072:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "3072:36:49" - }, - "nodeType": "YulExpressionStatement", - "src": "3072:36:49" - }, - { - "nodeType": "YulAssignment", - "src": "3117:26:49", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3129:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3140:2:49", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3125:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "3125:18:49" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "3117:4:49" - } - ] - } - ] - }, - "name": "abi_encode_tuple_t_stringliteral_579a392f3722d5ac1f7cb0ada24e2070ee442af1ba4b25c70186b6558d7af206__to_t_string_memory_ptr__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "2971:9:49", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "2985:4:49", - "type": "" - } - ], - "src": "2820:329:49" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "3328:156:49", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3345:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3356:2:49", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "3338:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "3338:21:49" - }, - "nodeType": "YulExpressionStatement", - "src": "3338:21:49" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3379:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3390:2:49", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3375:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "3375:18:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3395:1:49", - "type": "", - "value": "7" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "3368:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "3368:29:49" - }, - "nodeType": "YulExpressionStatement", - "src": "3368:29:49" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3417:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3428:2:49", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3413:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "3413:18:49" - }, - { - "kind": "string", - "nodeType": "YulLiteral", - "src": "3433:9:49", - "type": "", - "value": "BPF_TQZ" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "3406:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "3406:37:49" - }, - "nodeType": "YulExpressionStatement", - "src": "3406:37:49" - }, - { - "nodeType": "YulAssignment", - "src": "3452:26:49", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3464:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3475:2:49", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3460:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "3460:18:49" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "3452:4:49" - } - ] - } - ] - }, - "name": "abi_encode_tuple_t_stringliteral_7007881aea3035103c726ad6de23cff58710f02840346b45d710ea567cec464e__to_t_string_memory_ptr__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "3305:9:49", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "3319:4:49", - "type": "" - } - ], - "src": "3154:330:49" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "3663:155:49", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3680:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3691:2:49", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "3673:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "3673:21:49" - }, - "nodeType": "YulExpressionStatement", - "src": "3673:21:49" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3714:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3725:2:49", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3710:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "3710:18:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3730:1:49", - "type": "", - "value": "6" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "3703:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "3703:29:49" - }, - "nodeType": "YulExpressionStatement", - "src": "3703:29:49" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3752:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3763:2:49", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3748:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "3748:18:49" - }, - { - "kind": "string", - "nodeType": "YulLiteral", - "src": "3768:8:49", - "type": "", - "value": "BPF_IP" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "3741:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "3741:36:49" - }, - "nodeType": "YulExpressionStatement", - "src": "3741:36:49" - }, - { - "nodeType": "YulAssignment", - "src": "3786:26:49", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3798:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3809:2:49", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3794:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "3794:18:49" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "3786:4:49" - } - ] - } - ] - }, - "name": "abi_encode_tuple_t_stringliteral_76dba96b4bef71a0739a205f75fa3ce7f5d7f60125954e29b5c40229e8718c49__to_t_string_memory_ptr__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "3640:9:49", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "3654:4:49", - "type": "" - } - ], - "src": "3489:329:49" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "3997:156:49", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4014:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4025:2:49", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "4007:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "4007:21:49" - }, - "nodeType": "YulExpressionStatement", - "src": "4007:21:49" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4048:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4059:2:49", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4044:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "4044:18:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4064:1:49", - "type": "", - "value": "7" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "4037:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "4037:29:49" - }, - "nodeType": "YulExpressionStatement", - "src": "4037:29:49" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4086:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4097:2:49", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4082:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "4082:18:49" - }, - { - "kind": "string", - "nodeType": "YulLiteral", - "src": "4102:9:49", - "type": "", - "value": "BPF_TBZ" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "4075:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "4075:37:49" - }, - "nodeType": "YulExpressionStatement", - "src": "4075:37:49" - }, - { - "nodeType": "YulAssignment", - "src": "4121:26:49", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4133:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4144:2:49", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4129:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "4129:18:49" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "4121:4:49" - } - ] - } - ] - }, - "name": "abi_encode_tuple_t_stringliteral_78abdc1dd325317e1a3b236dcd21ae6f586aa48c5af52ad53924ac4068a35a88__to_t_string_memory_ptr__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "3974:9:49", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "3988:4:49", - "type": "" - } - ], - "src": "3823:330:49" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "4332:154:49", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4349:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4360:2:49", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "4342:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "4342:21:49" - }, - "nodeType": "YulExpressionStatement", - "src": "4342:21:49" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4383:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4394:2:49", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4379:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "4379:18:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4399:1:49", - "type": "", - "value": "5" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "4372:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "4372:29:49" - }, - "nodeType": "YulExpressionStatement", - "src": "4372:29:49" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4421:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4432:2:49", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4417:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "4417:18:49" - }, - { - "kind": "string", - "nodeType": "YulLiteral", - "src": "4437:7:49", - "type": "", - "value": "CT_IT" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "4410:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "4410:35:49" - }, - "nodeType": "YulExpressionStatement", - "src": "4410:35:49" - }, - { - "nodeType": "YulAssignment", - "src": "4454:26:49", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4466:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4477:2:49", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4462:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "4462:18:49" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "4454:4:49" - } - ] - } - ] - }, - "name": "abi_encode_tuple_t_stringliteral_b9b63a062e188cc2ae755ee9cb5205b4231032ddfc171193deac14763ce9e913__to_t_string_memory_ptr__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "4309:9:49", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "4323:4:49", - "type": "" - } - ], - "src": "4158:328:49" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "4665:154:49", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4682:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4693:2:49", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "4675:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "4675:21:49" - }, - "nodeType": "YulExpressionStatement", - "src": "4675:21:49" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4716:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4727:2:49", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4712:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "4712:18:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4732:1:49", - "type": "", - "value": "5" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "4705:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "4705:29:49" - }, - "nodeType": "YulExpressionStatement", - "src": "4705:29:49" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4754:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4765:2:49", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4750:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "4750:18:49" - }, - { - "kind": "string", - "nodeType": "YulLiteral", - "src": "4770:7:49", - "type": "", - "value": "CT_ND" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "4743:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "4743:35:49" - }, - "nodeType": "YulExpressionStatement", - "src": "4743:35:49" - }, - { - "nodeType": "YulAssignment", - "src": "4787:26:49", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4799:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4810:2:49", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4795:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "4795:18:49" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "4787:4:49" - } - ] - } - ] - }, - "name": "abi_encode_tuple_t_stringliteral_fa617c1c9ea21235ad24126b1fa10038d761b1d0295223e172120fd1e9768188__to_t_string_memory_ptr__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "4642:9:49", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "4656:4:49", - "type": "" - } - ], - "src": "4491:328:49" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "4925:76:49", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "4935:26:49", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4947:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4958:2:49", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4943:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "4943:18:49" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "4935:4:49" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4977:9:49" - }, - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "4988:6:49" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "4970:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "4970:25:49" - }, - "nodeType": "YulExpressionStatement", - "src": "4970:25:49" - } - ] - }, - "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "4894:9:49", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "4905:6:49", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "4916:4:49", - "type": "" - } - ], - "src": "4824:177:49" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "5169:173:49", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "5179:26:49", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "5191:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5202:2:49", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "5187:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "5187:18:49" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "5179:4:49" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "5221:9:49" - }, - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "5232:6:49" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "5214:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "5214:25:49" - }, - "nodeType": "YulExpressionStatement", - "src": "5214:25:49" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "5259:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5270:2:49", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "5255:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "5255:18:49" - }, - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "5275:6:49" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "5248:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "5248:34:49" - }, - "nodeType": "YulExpressionStatement", - "src": "5248:34:49" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "5302:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5313:2:49", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "5298:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "5298:18:49" - }, - { - "arguments": [ - { - "name": "value2", - "nodeType": "YulIdentifier", - "src": "5322:6:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5330:4:49", - "type": "", - "value": "0xff" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "5318:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "5318:17:49" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "5291:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "5291:45:49" - }, - "nodeType": "YulExpressionStatement", - "src": "5291:45:49" - } - ] - }, - "name": "abi_encode_tuple_t_uint256_t_uint256_t_rational_0_by_1__to_t_uint256_t_uint256_t_uint8__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "5122:9:49", - "type": "" - }, - { - "name": "value2", - "nodeType": "YulTypedName", - "src": "5133:6:49", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "5141:6:49", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "5149:6:49", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "5160:4:49", - "type": "" - } - ], - "src": "5006:336:49" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "5504:162:49", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "5514:26:49", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "5526:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5537:2:49", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "5522:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "5522:18:49" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "5514:4:49" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "5556:9:49" - }, - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "5567:6:49" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "5549:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "5549:25:49" - }, - "nodeType": "YulExpressionStatement", - "src": "5549:25:49" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "5594:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5605:2:49", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "5590:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "5590:18:49" - }, - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "5610:6:49" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "5583:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "5583:34:49" - }, - "nodeType": "YulExpressionStatement", - "src": "5583:34:49" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "5637:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5648:2:49", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "5633:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "5633:18:49" - }, - { - "name": "value2", - "nodeType": "YulIdentifier", - "src": "5653:6:49" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "5626:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "5626:34:49" - }, - "nodeType": "YulExpressionStatement", - "src": "5626:34:49" - } - ] - }, - "name": "abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "5457:9:49", - "type": "" - }, - { - "name": "value2", - "nodeType": "YulTypedName", - "src": "5468:6:49", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "5476:6:49", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "5484:6:49", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "5495:4:49", - "type": "" - } - ], - "src": "5347:319:49" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "5824:173:49", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "5834:26:49", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "5846:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5857:2:49", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "5842:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "5842:18:49" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "5834:4:49" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "5876:9:49" - }, - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "5887:6:49" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "5869:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "5869:25:49" - }, - "nodeType": "YulExpressionStatement", - "src": "5869:25:49" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "5914:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5925:2:49", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "5910:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "5910:18:49" - }, - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "5930:6:49" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "5903:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "5903:34:49" - }, - "nodeType": "YulExpressionStatement", - "src": "5903:34:49" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "5957:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5968:2:49", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "5953:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "5953:18:49" - }, - { - "arguments": [ - { - "name": "value2", - "nodeType": "YulIdentifier", - "src": "5977:6:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5985:4:49", - "type": "", - "value": "0xff" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "5973:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "5973:17:49" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "5946:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "5946:45:49" - }, - "nodeType": "YulExpressionStatement", - "src": "5946:45:49" - } - ] - }, - "name": "abi_encode_tuple_t_uint256_t_uint256_t_uint8__to_t_uint256_t_uint256_t_uint8__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "5777:9:49", - "type": "" - }, - { - "name": "value2", - "nodeType": "YulTypedName", - "src": "5788:6:49", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "5796:6:49", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "5804:6:49", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "5815:4:49", - "type": "" - } - ], - "src": "5671:326:49" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "6099:87:49", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "6109:26:49", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "6121:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6132:2:49", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "6117:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "6117:18:49" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "6109:4:49" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "6151:9:49" - }, - { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "6166:6:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6174:4:49", - "type": "", - "value": "0xff" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "6162:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "6162:17:49" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "6144:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "6144:36:49" - }, - "nodeType": "YulExpressionStatement", - "src": "6144:36:49" - } - ] - }, - "name": "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "6068:9:49", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "6079:6:49", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "6090:4:49", - "type": "" - } - ], - "src": "6002:184:49" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "6249:71:49", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "data", - "nodeType": "YulIdentifier", - "src": "6266:4:49" - }, - { - "name": "ptr", - "nodeType": "YulIdentifier", - "src": "6272:3:49" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "6259:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "6259:17:49" - }, - "nodeType": "YulExpressionStatement", - "src": "6259:17:49" - }, - { - "nodeType": "YulAssignment", - "src": "6285:29:49", - "value": { - "arguments": [ - { - "name": "data", - "nodeType": "YulIdentifier", - "src": "6303:4:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6309:4:49", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "keccak256", - "nodeType": "YulIdentifier", - "src": "6293:9:49" - }, - "nodeType": "YulFunctionCall", - "src": "6293:21:49" - }, - "variableNames": [ - { - "name": "data", - "nodeType": "YulIdentifier", - "src": "6285:4:49" - } - ] - } - ] - }, - "name": "array_dataslot_t_string_storage", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "ptr", - "nodeType": "YulTypedName", - "src": "6232:3:49", - "type": "" - } - ], - "returnVariables": [ - { - "name": "data", - "nodeType": "YulTypedName", - "src": "6240:4:49", - "type": "" - } - ], - "src": "6191:129:49" - } - ] - }, - "contents": "{\n { }\n function abi_decode_tuple_t_struct$_ReferenceData_$8676_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 96) { revert(value0, value0) }\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, 96)\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { invalid() }\n mstore(64, newFreePtr)\n mstore(memPtr, mload(headStart))\n mstore(add(memPtr, 32), mload(add(headStart, 32)))\n mstore(add(memPtr, 64), mload(add(headStart, 64)))\n value0 := memPtr\n }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n value0 := calldataload(headStart)\n }\n function abi_encode_t_string(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n let i := end\n for { } lt(i, length) { i := add(i, 0x20) }\n {\n let _1 := 0x20\n mstore(add(add(pos, i), _1), mload(add(add(value, i), _1)))\n }\n if gt(i, length)\n {\n mstore(add(add(pos, length), 0x20), end)\n }\n end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n }\n function abi_encode_tuple_t_contract$_IStdReference_$8700__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n tail := abi_encode_t_string(value0, add(headStart, 32))\n }\n function abi_encode_tuple_t_string_storage_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n let tail_1 := add(headStart, 64)\n mstore(headStart, 64)\n let ret := tail\n let slotValue := sload(value0)\n let _1 := 1\n switch and(slotValue, _1)\n case 0 {\n mstore(tail_1, and(div(slotValue, 2), 0x7f))\n mstore(add(headStart, 96), and(slotValue, not(255)))\n ret := add(headStart, 128)\n }\n case 1 {\n let length := div(slotValue, 2)\n mstore(tail_1, length)\n let dataPos := array_dataslot_t_string_storage(value0)\n let i := tail\n for { } lt(i, length) { i := add(i, 0x20) }\n {\n mstore(add(add(headStart, i), 96), sload(dataPos))\n dataPos := add(dataPos, _1)\n }\n ret := add(add(headStart, i), 96)\n }\n mstore(add(headStart, 32), sub(ret, headStart))\n tail := abi_encode_t_string(value1, ret)\n }\n function abi_encode_tuple_t_stringliteral_579a392f3722d5ac1f7cb0ada24e2070ee442af1ba4b25c70186b6558d7af206__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 6)\n mstore(add(headStart, 64), \"CT_NEH\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_7007881aea3035103c726ad6de23cff58710f02840346b45d710ea567cec464e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 7)\n mstore(add(headStart, 64), \"BPF_TQZ\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_76dba96b4bef71a0739a205f75fa3ce7f5d7f60125954e29b5c40229e8718c49__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 6)\n mstore(add(headStart, 64), \"BPF_IP\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_78abdc1dd325317e1a3b236dcd21ae6f586aa48c5af52ad53924ac4068a35a88__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 7)\n mstore(add(headStart, 64), \"BPF_TBZ\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_b9b63a062e188cc2ae755ee9cb5205b4231032ddfc171193deac14763ce9e913__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 5)\n mstore(add(headStart, 64), \"CT_IT\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_fa617c1c9ea21235ad24126b1fa10038d761b1d0295223e172120fd1e9768188__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 5)\n mstore(add(headStart, 64), \"CT_ND\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_uint256_t_uint256_t_rational_0_by_1__to_t_uint256_t_uint256_t_uint8__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), and(value2, 0xff))\n }\n function abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), value2)\n }\n function abi_encode_tuple_t_uint256_t_uint256_t_uint8__to_t_uint256_t_uint256_t_uint8__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), and(value2, 0xff))\n }\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n function array_dataslot_t_string_storage(ptr) -> data\n {\n mstore(data, ptr)\n data := keccak256(data, 0x20)\n }\n}", - "id": 49, - "language": "Yul", - "name": "#utility.yul" - } - ], - "immutableReferences": {}, - "linkReferences": {}, - "object": "608060405234801561001057600080fd5b50600436106100935760003560e01c8063a2e6204511610066578063a2e620451461010d578063aed3aff714610117578063cdf456e11461011f578063e757223014610134578063f06a1e131461014757610093565b80631d1a111a14610098578063252c09d7146100c1578063313ce567146100e35780635368945b146100f8575b600080fd5b6100ab6100a6366004610b52565b61014f565b6040516100b89190610d39565b60405180910390f35b6100d46100cf366004610b52565b610185565b6040516100b893929190610d5b565b6100eb6101ad565b6040516100b89190610d71565b6101006101b2565b6040516100b89190610bb5565b6101156101c2565b005b6100eb6101e3565b6101276101ed565b6040516100b89190610bc9565b6100ab610142366004610b52565b61027c565b6101276102a9565b60008061015a6102ce565b90508261016957519050610180565b61017c83826000015183602001516103e8565b9150505b919050565b600081610100811061019657600080fd5b600302018054600182015460029092015490925083565b601290565b610304546001600160a01b031681565b60006101cc6102ce565b90506101e08160000151826020015161048d565b50565b6103005460ff1681565b610303805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156102745780601f1061024957610100808354040283529160200191610274565b820191906000526020600020905b81548152906001019060200180831161025757829003601f168201915b505050505081565b6000806102876102ce565b90508261029657519050610180565b61017c838260000151836020015161063a565b604051806040016040528060038152602001621554d160ea1b81525081565b3b151590565b6102d6610adc565b6103045460408051808201825260038152621554d160ea1b6020820152905163195556f360e21b81526000926001600160a01b0316916365555bcc916103229161030391600401610bdc565b60606040518083038186803b15801561033a57600080fd5b505afa15801561034e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103729190610afd565b905060008160400151116103a15760405162461bcd60e51b815260040161039890610c99565b60405180910390fd5b60008160200151116103c55760405162461bcd60e51b815260040161039890610cda565b80516103e35760405162461bcd60e51b815260040161039890610cba565b905090565b61030254600090600160a01b900469ffffffffffffffffffff16841461041a57610413848484610675565b9050610486565b610302546001600160a01b031661042f61080c565b141561043f575061030154610486565b610449838361048d565b61045161080c565b61030280546001600160a01b0319166001600160a01b039290921691909117905561047d848484610675565b61030181905590505b9392505050565b6103005460ff161580156104a15750600254155b1561050d57604080516060810182528381526000602082018190529082018390528381556001819055600283905590517f5f4a9a1b73bee700ca1fb203bb004bcc0a7eca48af3f147b24dcf5bf4bf3c00b916105009185918591610d42565b60405180910390a1610636565b61030054600090819060ff16610100811061052457fe5b604080516060810182526003929092029290920180548252600181015460208301526002015491810182905291508210156105715760405162461bcd60e51b815260040161039890610cfb565b610300805460ff198116600160ff928316018216179182905560408381015181516060810183528781528551602080880151938903918202909301928201929092529182018690529290916000911661010081106105cb57fe5b825160039190910291909101908155602082015160018201556040918201516002909101556103005490517f5f4a9a1b73bee700ca1fb203bb004bcc0a7eca48af3f147b24dcf5bf4bf3c00b9161062b918791879160ff90911690610d42565b60405180910390a150505b5050565b610302546000906001600160a01b031661065261080c565b1415610662575061030154610486565b61066d848484610675565b949350505050565b610300546000908190819060ff16610100811061068e57fe5b60030201604051806060016040529081600082015481526020016001820154815260200160028201548152505090508060000151600014156106e25760405162461bcd60e51b815260040161039890610d1a565b60006106ec61080c565b905060006106fa8288610810565b905060008061070883610872565b9092509050600061075c610751610729610722888c610810565b8c906109c2565b61074b6107438a604001518d61081090919063ffffffff16565b8a51906109c2565b90610a1b565b602088015190610a1b565b905060008360400151851161077e5783604001519450836020015190506107ed565b8483604001511161079c5782604001519450826020015190506107ed565b60008460400151846040015103905060008560400151870390506107e8610751836107e2846107dc8b602001518b6020015161081090919063ffffffff16565b906109c2565b90610a75565b925050505b6107fd8587036107e28484610810565b9b9a5050505050505050505050565b4290565b600082821115610867576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b508082035b92915050565b61087a610adc565b610882610adc565b6103005460ff16600080610100815b81811015610904578760008660ff1661010081106108ab57fe5b6003020160020154116108f55760008560ff1661010081106108c957fe5b6003020160020154600014156108e757846001019350839250610904565b849350836001019250610904565b60001990940193600101610891565b818114156109245760405162461bcd60e51b815260040161039890610c79565b60008460ff16610100811061093557fe5b600302016040518060600160405290816000820154815260200160018201548152602001600282015481525050965060008360ff16610100811061097557fe5b60030201604051806060016040529081600082015481526020016001820154815260200160028201548152505095508660400151866040015110156109b8578695505b5050505050915091565b6000826109d15750600061086c565b828202828482816109de57fe5b04146104865760405162461bcd60e51b8152600401808060200182810382526021815260200180610d8c6021913960400191505060405180910390fd5b600082820183811015610486576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000808211610acb576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381610ad457fe5b049392505050565b60405180606001604052806000815260200160008152602001600081525090565b600060608284031215610b0e578081fd5b6040516060810181811067ffffffffffffffff82111715610b2b57fe5b80604052508251815260208301516020820152604083015160408201528091505092915050565b600060208284031215610b63578081fd5b5035919050565b60008151808452815b81811015610b8f57602081850181015186830182015201610b73565b81811115610ba05782602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b6000602082526104866020830184610b6a565b60006040820160408352818554600180821660008114610c035760018114610c2157610c5a565b60028304607f16855260ff1983166060880152608087019350610c5a565b60028304808652610c318a610d7f565b875b82811015610c505781548a82016060015290840190602001610c33565b8901606001955050505b5050508381036020850152610c6f8186610b6a565b9695505050505050565b602080825260069082015265086a8be9c8a960d31b604082015260600190565b6020808252600790820152662128232faa28ad60c91b604082015260600190565b60208082526006908201526504250465f49560d41b604082015260600190565b6020808252600790820152662128232faa212d60c91b604082015260600190565b60208082526005908201526410d517d25560da1b604082015260600190565b60208082526005908201526410d517d39160da1b604082015260600190565b90815260200190565b928352602083019190915260ff16604082015260600190565b9283526020830191909152604082015260600190565b60ff91909116815260200190565b6000908152602090209056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220efe5a99f67f0638e4f5978f3d9253913a108623974dd30e8541181ca03c24e9564736f6c63430007060033", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x93 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA2E62045 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA2E62045 EQ PUSH2 0x10D JUMPI DUP1 PUSH4 0xAED3AFF7 EQ PUSH2 0x117 JUMPI DUP1 PUSH4 0xCDF456E1 EQ PUSH2 0x11F JUMPI DUP1 PUSH4 0xE7572230 EQ PUSH2 0x134 JUMPI DUP1 PUSH4 0xF06A1E13 EQ PUSH2 0x147 JUMPI PUSH2 0x93 JUMP JUMPDEST DUP1 PUSH4 0x1D1A111A EQ PUSH2 0x98 JUMPI DUP1 PUSH4 0x252C09D7 EQ PUSH2 0xC1 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0xE3 JUMPI DUP1 PUSH4 0x5368945B EQ PUSH2 0xF8 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xAB PUSH2 0xA6 CALLDATASIZE PUSH1 0x4 PUSH2 0xB52 JUMP JUMPDEST PUSH2 0x14F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB8 SWAP2 SWAP1 PUSH2 0xD39 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xD4 PUSH2 0xCF CALLDATASIZE PUSH1 0x4 PUSH2 0xB52 JUMP JUMPDEST PUSH2 0x185 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB8 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xD5B JUMP JUMPDEST PUSH2 0xEB PUSH2 0x1AD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB8 SWAP2 SWAP1 PUSH2 0xD71 JUMP JUMPDEST PUSH2 0x100 PUSH2 0x1B2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB8 SWAP2 SWAP1 PUSH2 0xBB5 JUMP JUMPDEST PUSH2 0x115 PUSH2 0x1C2 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xEB PUSH2 0x1E3 JUMP JUMPDEST PUSH2 0x127 PUSH2 0x1ED JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xB8 SWAP2 SWAP1 PUSH2 0xBC9 JUMP JUMPDEST PUSH2 0xAB PUSH2 0x142 CALLDATASIZE PUSH1 0x4 PUSH2 0xB52 JUMP JUMPDEST PUSH2 0x27C JUMP JUMPDEST PUSH2 0x127 PUSH2 0x2A9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x15A PUSH2 0x2CE JUMP JUMPDEST SWAP1 POP DUP3 PUSH2 0x169 JUMPI MLOAD SWAP1 POP PUSH2 0x180 JUMP JUMPDEST PUSH2 0x17C DUP4 DUP3 PUSH1 0x0 ADD MLOAD DUP4 PUSH1 0x20 ADD MLOAD PUSH2 0x3E8 JUMP JUMPDEST SWAP2 POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x100 DUP2 LT PUSH2 0x196 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 MUL ADD DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP3 POP DUP4 JUMP JUMPDEST PUSH1 0x12 SWAP1 JUMP JUMPDEST PUSH2 0x304 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1CC PUSH2 0x2CE JUMP JUMPDEST SWAP1 POP PUSH2 0x1E0 DUP2 PUSH1 0x0 ADD MLOAD DUP3 PUSH1 0x20 ADD MLOAD PUSH2 0x48D JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x300 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH2 0x303 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x274 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x249 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x274 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x257 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x287 PUSH2 0x2CE JUMP JUMPDEST SWAP1 POP DUP3 PUSH2 0x296 JUMPI MLOAD SWAP1 POP PUSH2 0x180 JUMP JUMPDEST PUSH2 0x17C DUP4 DUP3 PUSH1 0x0 ADD MLOAD DUP4 PUSH1 0x20 ADD MLOAD PUSH2 0x63A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0x1554D1 PUSH1 0xEA SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH2 0x2D6 PUSH2 0xADC JUMP JUMPDEST PUSH2 0x304 SLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x3 DUP2 MSTORE PUSH3 0x1554D1 PUSH1 0xEA SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 MLOAD PUSH4 0x195556F3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x0 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 PUSH4 0x65555BCC SWAP2 PUSH2 0x322 SWAP2 PUSH2 0x303 SWAP2 PUSH1 0x4 ADD PUSH2 0xBDC JUMP JUMPDEST PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x33A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x34E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x372 SWAP2 SWAP1 PUSH2 0xAFD JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x40 ADD MLOAD GT PUSH2 0x3A1 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x398 SWAP1 PUSH2 0xC99 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x20 ADD MLOAD GT PUSH2 0x3C5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x398 SWAP1 PUSH2 0xCDA JUMP JUMPDEST DUP1 MLOAD PUSH2 0x3E3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x398 SWAP1 PUSH2 0xCBA JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x302 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH10 0xFFFFFFFFFFFFFFFFFFFF AND DUP5 EQ PUSH2 0x41A JUMPI PUSH2 0x413 DUP5 DUP5 DUP5 PUSH2 0x675 JUMP JUMPDEST SWAP1 POP PUSH2 0x486 JUMP JUMPDEST PUSH2 0x302 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x42F PUSH2 0x80C JUMP JUMPDEST EQ ISZERO PUSH2 0x43F JUMPI POP PUSH2 0x301 SLOAD PUSH2 0x486 JUMP JUMPDEST PUSH2 0x449 DUP4 DUP4 PUSH2 0x48D JUMP JUMPDEST PUSH2 0x451 PUSH2 0x80C JUMP JUMPDEST PUSH2 0x302 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x47D DUP5 DUP5 DUP5 PUSH2 0x675 JUMP JUMPDEST PUSH2 0x301 DUP2 SWAP1 SSTORE SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x300 SLOAD PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x4A1 JUMPI POP PUSH1 0x2 SLOAD ISZERO JUMPDEST ISZERO PUSH2 0x50D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE DUP4 DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP1 DUP3 ADD DUP4 SWAP1 MSTORE DUP4 DUP2 SSTORE PUSH1 0x1 DUP2 SWAP1 SSTORE PUSH1 0x2 DUP4 SWAP1 SSTORE SWAP1 MLOAD PUSH32 0x5F4A9A1B73BEE700CA1FB203BB004BCC0A7ECA48AF3F147B24DCF5BF4BF3C00B SWAP2 PUSH2 0x500 SWAP2 DUP6 SWAP2 DUP6 SWAP2 PUSH2 0xD42 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH2 0x636 JUMP JUMPDEST PUSH2 0x300 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0xFF AND PUSH2 0x100 DUP2 LT PUSH2 0x524 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x3 SWAP3 SWAP1 SWAP3 MUL SWAP3 SWAP1 SWAP3 ADD DUP1 SLOAD DUP3 MSTORE PUSH1 0x1 DUP2 ADD SLOAD PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x2 ADD SLOAD SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE SWAP2 POP DUP3 LT ISZERO PUSH2 0x571 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x398 SWAP1 PUSH2 0xCFB JUMP JUMPDEST PUSH2 0x300 DUP1 SLOAD PUSH1 0xFF NOT DUP2 AND PUSH1 0x1 PUSH1 0xFF SWAP3 DUP4 AND ADD DUP3 AND OR SWAP2 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP4 DUP2 ADD MLOAD DUP2 MLOAD PUSH1 0x60 DUP2 ADD DUP4 MSTORE DUP8 DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 DUP1 DUP9 ADD MLOAD SWAP4 DUP10 SUB SWAP2 DUP3 MUL SWAP1 SWAP4 ADD SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP2 DUP3 ADD DUP7 SWAP1 MSTORE SWAP3 SWAP1 SWAP2 PUSH1 0x0 SWAP2 AND PUSH2 0x100 DUP2 LT PUSH2 0x5CB JUMPI INVALID JUMPDEST DUP3 MLOAD PUSH1 0x3 SWAP2 SWAP1 SWAP2 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 DUP2 SSTORE PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x1 DUP3 ADD SSTORE PUSH1 0x40 SWAP2 DUP3 ADD MLOAD PUSH1 0x2 SWAP1 SWAP2 ADD SSTORE PUSH2 0x300 SLOAD SWAP1 MLOAD PUSH32 0x5F4A9A1B73BEE700CA1FB203BB004BCC0A7ECA48AF3F147B24DCF5BF4BF3C00B SWAP2 PUSH2 0x62B SWAP2 DUP8 SWAP2 DUP8 SWAP2 PUSH1 0xFF SWAP1 SWAP2 AND SWAP1 PUSH2 0xD42 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x302 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x652 PUSH2 0x80C JUMP JUMPDEST EQ ISZERO PUSH2 0x662 JUMPI POP PUSH2 0x301 SLOAD PUSH2 0x486 JUMP JUMPDEST PUSH2 0x66D DUP5 DUP5 DUP5 PUSH2 0x675 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x300 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP2 SWAP1 PUSH1 0xFF AND PUSH2 0x100 DUP2 LT PUSH2 0x68E JUMPI INVALID JUMPDEST PUSH1 0x3 MUL ADD PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD SLOAD DUP2 MSTORE POP POP SWAP1 POP DUP1 PUSH1 0x0 ADD MLOAD PUSH1 0x0 EQ ISZERO PUSH2 0x6E2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x398 SWAP1 PUSH2 0xD1A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6EC PUSH2 0x80C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x6FA DUP3 DUP9 PUSH2 0x810 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x708 DUP4 PUSH2 0x872 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 PUSH2 0x75C PUSH2 0x751 PUSH2 0x729 PUSH2 0x722 DUP9 DUP13 PUSH2 0x810 JUMP JUMPDEST DUP13 SWAP1 PUSH2 0x9C2 JUMP JUMPDEST PUSH2 0x74B PUSH2 0x743 DUP11 PUSH1 0x40 ADD MLOAD DUP14 PUSH2 0x810 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP11 MLOAD SWAP1 PUSH2 0x9C2 JUMP JUMPDEST SWAP1 PUSH2 0xA1B JUMP JUMPDEST PUSH1 0x20 DUP9 ADD MLOAD SWAP1 PUSH2 0xA1B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 PUSH1 0x40 ADD MLOAD DUP6 GT PUSH2 0x77E JUMPI DUP4 PUSH1 0x40 ADD MLOAD SWAP5 POP DUP4 PUSH1 0x20 ADD MLOAD SWAP1 POP PUSH2 0x7ED JUMP JUMPDEST DUP5 DUP4 PUSH1 0x40 ADD MLOAD GT PUSH2 0x79C JUMPI DUP3 PUSH1 0x40 ADD MLOAD SWAP5 POP DUP3 PUSH1 0x20 ADD MLOAD SWAP1 POP PUSH2 0x7ED JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x40 ADD MLOAD DUP5 PUSH1 0x40 ADD MLOAD SUB SWAP1 POP PUSH1 0x0 DUP6 PUSH1 0x40 ADD MLOAD DUP8 SUB SWAP1 POP PUSH2 0x7E8 PUSH2 0x751 DUP4 PUSH2 0x7E2 DUP5 PUSH2 0x7DC DUP12 PUSH1 0x20 ADD MLOAD DUP12 PUSH1 0x20 ADD MLOAD PUSH2 0x810 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH2 0x9C2 JUMP JUMPDEST SWAP1 PUSH2 0xA75 JUMP JUMPDEST SWAP3 POP POP POP JUMPDEST PUSH2 0x7FD DUP6 DUP8 SUB PUSH2 0x7E2 DUP5 DUP5 PUSH2 0x810 JUMP JUMPDEST SWAP12 SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST TIMESTAMP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 GT ISZERO PUSH2 0x867 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP DUP1 DUP3 SUB JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x87A PUSH2 0xADC JUMP JUMPDEST PUSH2 0x882 PUSH2 0xADC JUMP JUMPDEST PUSH2 0x300 SLOAD PUSH1 0xFF AND PUSH1 0x0 DUP1 PUSH2 0x100 DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x904 JUMPI DUP8 PUSH1 0x0 DUP7 PUSH1 0xFF AND PUSH2 0x100 DUP2 LT PUSH2 0x8AB JUMPI INVALID JUMPDEST PUSH1 0x3 MUL ADD PUSH1 0x2 ADD SLOAD GT PUSH2 0x8F5 JUMPI PUSH1 0x0 DUP6 PUSH1 0xFF AND PUSH2 0x100 DUP2 LT PUSH2 0x8C9 JUMPI INVALID JUMPDEST PUSH1 0x3 MUL ADD PUSH1 0x2 ADD SLOAD PUSH1 0x0 EQ ISZERO PUSH2 0x8E7 JUMPI DUP5 PUSH1 0x1 ADD SWAP4 POP DUP4 SWAP3 POP PUSH2 0x904 JUMP JUMPDEST DUP5 SWAP4 POP DUP4 PUSH1 0x1 ADD SWAP3 POP PUSH2 0x904 JUMP JUMPDEST PUSH1 0x0 NOT SWAP1 SWAP5 ADD SWAP4 PUSH1 0x1 ADD PUSH2 0x891 JUMP JUMPDEST DUP2 DUP2 EQ ISZERO PUSH2 0x924 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x398 SWAP1 PUSH2 0xC79 JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH1 0xFF AND PUSH2 0x100 DUP2 LT PUSH2 0x935 JUMPI INVALID JUMPDEST PUSH1 0x3 MUL ADD PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD SLOAD DUP2 MSTORE POP POP SWAP7 POP PUSH1 0x0 DUP4 PUSH1 0xFF AND PUSH2 0x100 DUP2 LT PUSH2 0x975 JUMPI INVALID JUMPDEST PUSH1 0x3 MUL ADD PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD SLOAD DUP2 MSTORE POP POP SWAP6 POP DUP7 PUSH1 0x40 ADD MLOAD DUP7 PUSH1 0x40 ADD MLOAD LT ISZERO PUSH2 0x9B8 JUMPI DUP7 SWAP6 POP JUMPDEST POP POP POP POP POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x9D1 JUMPI POP PUSH1 0x0 PUSH2 0x86C JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x9DE JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x486 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xD8C PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x486 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0xACB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 DUP4 DUP2 PUSH2 0xAD4 JUMPI INVALID JUMPDEST DIV SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB0E JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x60 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0xB2B JUMPI INVALID JUMPDEST DUP1 PUSH1 0x40 MSTORE POP DUP3 MLOAD DUP2 MSTORE PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x40 DUP3 ADD MSTORE DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB63 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xB8F JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0xB73 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0xBA0 JUMPI DUP3 PUSH1 0x20 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x486 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xB6A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD PUSH1 0x40 DUP4 MSTORE DUP2 DUP6 SLOAD PUSH1 0x1 DUP1 DUP3 AND PUSH1 0x0 DUP2 EQ PUSH2 0xC03 JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0xC21 JUMPI PUSH2 0xC5A JUMP JUMPDEST PUSH1 0x2 DUP4 DIV PUSH1 0x7F AND DUP6 MSTORE PUSH1 0xFF NOT DUP4 AND PUSH1 0x60 DUP9 ADD MSTORE PUSH1 0x80 DUP8 ADD SWAP4 POP PUSH2 0xC5A JUMP JUMPDEST PUSH1 0x2 DUP4 DIV DUP1 DUP7 MSTORE PUSH2 0xC31 DUP11 PUSH2 0xD7F JUMP JUMPDEST DUP8 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0xC50 JUMPI DUP2 SLOAD DUP11 DUP3 ADD PUSH1 0x60 ADD MSTORE SWAP1 DUP5 ADD SWAP1 PUSH1 0x20 ADD PUSH2 0xC33 JUMP JUMPDEST DUP10 ADD PUSH1 0x60 ADD SWAP6 POP POP POP JUMPDEST POP POP POP DUP4 DUP2 SUB PUSH1 0x20 DUP6 ADD MSTORE PUSH2 0xC6F DUP2 DUP7 PUSH2 0xB6A JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x6 SWAP1 DUP3 ADD MSTORE PUSH6 0x86A8BE9C8A9 PUSH1 0xD3 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x7 SWAP1 DUP3 ADD MSTORE PUSH7 0x2128232FAA28AD PUSH1 0xC9 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x6 SWAP1 DUP3 ADD MSTORE PUSH6 0x4250465F495 PUSH1 0xD4 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x7 SWAP1 DUP3 ADD MSTORE PUSH7 0x2128232FAA212D PUSH1 0xC9 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x5 SWAP1 DUP3 ADD MSTORE PUSH5 0x10D517D255 PUSH1 0xDA SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x5 SWAP1 DUP3 ADD MSTORE PUSH5 0x10D517D391 PUSH1 0xDA SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xFF AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0xFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 SWAP1 JUMP INVALID MSTORE8 PUSH2 0x6665 0x4D PUSH2 0x7468 GASPRICE KECCAK256 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F77A26469706673582212 KECCAK256 0xEF 0xE5 0xA9 SWAP16 PUSH8 0xF0638E4F5978F3D9 0x25 CODECOPY SGT LOG1 ADDMOD PUSH3 0x3974DD ADDRESS 0xE8 SLOAD GT DUP2 0xCA SUB 0xC2 0x4E SWAP6 PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ", - "sourceMap": "409:2394:36:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1244:330;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;735:36:48;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;1994:250:36:-;;;:::i;:::-;;;;;;;:::i;615:27::-;;;:::i;:::-;;;;;;;:::i;1071:167::-;;;:::i;:::-;;778:36:48;;;:::i;586:23:36:-;;;:::i;:::-;;;;;;;:::i;1616:336::-;;;;;;:::i;:::-;;:::i;537:42::-;;;:::i;1244:330::-;1308:7;1327:49;1379:19;:17;:19::i;:::-;1327:71;-1:-1:-1;1412:13:36;1408:70;;1448:19;;-1:-1:-1;1441:26:36;;1408:70;1494:73;1505:8;1515:14;:19;;;1536:14;:30;;;1494:10;:73::i;:::-;1487:80;;;1244:330;;;;:::o;735:36:48:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;735:36:48;:::o;1994:250:36:-;2235:2;1994:250;:::o;615:27::-;;;-1:-1:-1;;;;;615:27:36;;:::o;1071:167::-;1108:43;1154:19;:17;:19::i;:::-;1108:65;;1183:48;1191:8;:13;;;1206:8;:24;;;1183:7;:48::i;:::-;1071:167;:::o;778:36:48:-;;;;;;:::o;586:23:36:-;;;;;;;;;;;;;;;-1:-1:-1;;586:23:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1616:336::-;1682:7;1701:49;1753:19;:17;:19::i;:::-;1701:71;-1:-1:-1;1786:13:36;1782:70;;1822:19;;-1:-1:-1;1815:26:36;;1782:70;1868:77;1883:8;1893:14;:19;;;1914:14;:30;;;1868:14;:77::i;537:42::-;;;;;;;;;;;;;;-1:-1:-1;;;537:42:36;;;;:::o;726:413:2:-;1086:20;1124:8;;;726:413::o;2286:515:36:-;2338:34;;:::i;:::-;2430:6;;2465:11;;;;;;;;;;;-1:-1:-1;;;2465:11:36;;;;2430:47;;-1:-1:-1;;;2430:47:36;;2384:43;;-1:-1:-1;;;;;2430:6:36;;:23;;:47;;2454:9;;2430:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2384:93;;2571:1;2543:8;:25;;;:29;2535:49;;;;-1:-1:-1;;;2535:49:36;;;;;;;:::i;:::-;;;;;;;;;2676:1;2649:8;:24;;;:28;2641:48;;;;-1:-1:-1;;;2641:48:36;;;;;;;:::i;:::-;2740:13;;2732:36;;;;-1:-1:-1;;;2732:36:36;;;;;;;:::i;:::-;2786:8;-1:-1:-1;2286:515:36;:::o;382:813:47:-;659:9;;529:7;;-1:-1:-1;;;659:9:47;;;;:21;;655:125;;703:66;723:8;733:11;746:22;703:19;:66::i;:::-;696:73;;;;655:125;903:14;;-1:-1:-1;;;;;903:14:47;882:17;:15;:17::i;:::-;:35;878:84;;;-1:-1:-1;940:11:47;;933:18;;878:84;972:44;980:11;993:22;972:7;:44::i;:::-;1051:17;:15;:17::i;:::-;1026:14;:43;;-1:-1:-1;;;;;;1026:43:47;-1:-1:-1;;;;;1026:43:47;;;;;;;;;;1093:66;1113:8;1123:11;1136:22;1093:19;:66::i;:::-;1079:11;:80;;;;-1:-1:-1;382:813:47;;;;;;:::o;821:1362:48:-;943:23;;;;:28;:62;;;;-1:-1:-1;975:25:48;;:30;943:62;939:276;;;1039:82;;;;;;;;;;;-1:-1:-1;1039:82:48;;;;;;;;;;;;1021:100;;;;;;;;;;;1140:44;;;;;;1039:82;;;;1140:44;:::i;:::-;;;;;;;;1198:7;;939:276;1490:23;;1440:34;;;;1490:23;;;1477:37;;;;;;1440:74;;;;;;;;1477:37;;;;;;;;;1440:74;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1532:49:48;;;1524:67;;;;-1:-1:-1;;;1524:67:48;;;;;;;:::i;:::-;1742:23;:25;;-1:-1:-1;;1742:25:48;;;;;;;;;;;;;;;1823;;;;;1898:196;;;;;;;;;;1976:21;;1898:196;1941:31;;;;1800:48;;;1976:35;;;1941:71;;;1898:196;;;;;;;;;;;;;1800:48;1898:196;;-1:-1:-1;;1871:23:48;1742:25;1858:37;;;;;;:236;;:37;;;;;;;;;:236;;;;;;;;;;;;;;;;;;;;;2152:23;;2110:66;;;;;;2123:5;;2130:20;;2152:23;;;;;2110:66;:::i;:::-;;;;;;;;821:1362;;;;;:::o;1201:340:47:-;1393:14;;1349:7;;-1:-1:-1;;;;;1393:14:47;1372:17;:15;:17::i;:::-;:35;1368:84;;;-1:-1:-1;1430:11:47;;1423:18;;1368:84;1468:66;1488:8;1498:11;1511:22;1468:19;:66::i;:::-;1461:73;1201:340;-1:-1:-1;;;;1201:340:47:o;2189:2495:48:-;2413:23;;2342:7;;;;;;2413:23;;;2400:37;;;;;;;;;2361:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2451:17;:23;;;2478:1;2451:28;2447:104;;;2525:15;;-1:-1:-1;;;2525:15:48;;;;;;;:::i;2447:104::-;2561:24;2588:17;:15;:17::i;:::-;2561:44;-1:-1:-1;2615:23:48;2641:30;2561:44;2662:8;2641:20;:30::i;:::-;2615:56;;2682:29;2713:28;2745:44;2773:15;2745:27;:44::i;:::-;2681:108;;-1:-1:-1;2681:108:48;-1:-1:-1;2799:30:48;2844:260;2899:191;3011:61;3027:44;:16;3048:22;3027:20;:44::i;:::-;3011:11;;:15;:61::i;:::-;2900:84;2928:55;2955:17;:27;;;2928:22;:26;;:55;;;;:::i;:::-;2900:23;;;:27;:84::i;:::-;2899:90;;:191::i;:::-;2844:33;;;;;:37;:260::i;:::-;2799:305;;3568:29;3702:10;:20;;;3683:15;:39;3679:892;;3756:10;:20;;;3738:38;;3814:10;:26;;;3790:50;;3679:892;;;3961:15;3938:9;:19;;;:38;3934:637;;4010:9;:19;;;3992:37;;4067:9;:25;;;4043:49;;3934:637;;;4163:28;4216:10;:20;;;4194:9;:19;;;:42;4163:73;;4250:23;4294:10;:20;;;4276:15;:38;4250:64;;4352:208;4400:146;4508:20;4401:80;4465:15;4402:57;4432:10;:26;;;4402:9;:25;;;:29;;:57;;;;:::i;:::-;4401:63;;:80::i;:::-;4400:86;;:146::i;4352:208::-;4328:232;;3934:637;;;4588:89;4642:34;;;4588:49;:22;4615:21;4588:26;:49::i;:89::-;4581:96;2189:2495;-1:-1:-1;;;;;;;;;;;2189:2495:48:o;101:301:39:-;380:15;101:301;:::o;3136:155:1:-;3194:7;3226:1;3221;:6;;3213:49;;;;;-1:-1:-1;;;3213:49:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3279:5:1;;;3136:155;;;;;:::o;4690:1637:48:-;4799:29;;:::i;:::-;4830:28;;:::i;:::-;4888:23;;;;4874:11;;4888:23;4874:11;5089:574;5105:14;5101:1;:18;5089:574;;;5177:15;5144:12;5157:5;5144:19;;;;;;;;;;;;:29;;;:48;5140:492;;5352:12;5365:5;5352:19;;;;;;;;;;;;:29;;;5385:1;5352:34;5348:152;;;5445:5;5453:1;5445:9;5427:27;;;5410:44;;5476:5;;5348:152;5535:5;5517:23;;5575:15;5593:1;5575:19;5558:36;;5612:5;;5140:492;-1:-1:-1;;5645:7:48;;;;;5121:3;5089:574;;;5729:14;5724:1;:19;5720:115;;;5808:16;;-1:-1:-1;;;5808:16:48;;;;;;;:::i;5720:115::-;5858:12;5871:15;5858:29;;;;;;;;;;;;5845:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5909:12;5922:14;5909:28;;;;;;;;;;;;5897:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6252:10;:20;;;6230:9;:19;;;:42;6226:95;;;6300:10;6288:22;;6226:95;4690:1637;;;;;;;;:::o;3538:215:1:-;3596:7;3619:6;3615:20;;-1:-1:-1;3634:1:1;3627:8;;3615:20;3657:5;;;3661:1;3657;:5;:1;3680:5;;;;;:10;3672:56;;;;-1:-1:-1;;;3672:56:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2690:175;2748:7;2779:5;;;2802:6;;;;2794:46;;;;;-1:-1:-1;;;2794:46:1;;;;;;;;;;;;;;;;;;;;;;;;;;;4217:150;4275:7;4306:1;4302;:5;4294:44;;;;;-1:-1:-1;;;4294:44:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;4359:1;4355;:5;;;;;;;4217:150;-1:-1:-1;;;4217:150:1:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:567:49:-;;168:2;156:9;147:7;143:23;139:32;136:2;;;189:6;181;174:22;136:2;227;221:9;269:2;261:6;257:15;338:6;326:10;323:22;302:18;290:10;287:34;284:62;281:2;;;349:9;281:2;380:10;376:2;369:22;;421:9;415:16;407:6;400:32;486:2;475:9;471:18;465:25;460:2;452:6;448:15;441:50;545:2;534:9;530:18;524:25;519:2;511:6;507:15;500:50;569:6;559:16;;;126:455;;;;:::o;586:190::-;;698:2;686:9;677:7;673:23;669:32;666:2;;;719:6;711;704:22;666:2;-1:-1:-1;747:23:49;;656:120;-1:-1:-1;656:120:49:o;781:478::-;;863:5;857:12;890:6;885:3;878:19;915:3;927:162;941:6;938:1;935:13;927:162;;;1003:4;1059:13;;;1055:22;;1049:29;1031:11;;;1027:20;;1020:59;956:12;927:162;;;1107:6;1104:1;1101:13;1098:2;;;1173:3;1166:4;1157:6;1152:3;1148:16;1144:27;1137:40;1098:2;-1:-1:-1;1241:2:49;1220:15;-1:-1:-1;;1216:29:49;1207:39;;;;1248:4;1203:50;;833:426;-1:-1:-1;;833:426:49:o;1264:225::-;-1:-1:-1;;;;;1450:32:49;;;;1432:51;;1420:2;1405:18;;1387:102::o;1494:222::-;;1643:2;1632:9;1625:21;1663:47;1706:2;1695:9;1691:18;1683:6;1663:47;:::i;1721:1094::-;;1926:2;1915:9;1911:18;1956:2;1945:9;1938:21;1979:4;2015:6;2009:13;2041:1;2073:2;2062:9;2058:18;2090:1;2085:179;;;;2278:1;2273:431;;;;2051:653;;2085:179;2140:1;2125:17;;2144:4;2121:28;2106:44;;-1:-1:-1;;2190:24:49;;2185:2;2170:18;;2163:52;2250:3;2235:19;;;-1:-1:-1;2085:179:49;;2273:431;2323:1;2312:9;2308:17;2353:6;2345;2338:22;2388:39;2420:6;2388:39;:::i;:::-;2449:4;2466:182;2480:6;2477:1;2474:13;2466:182;;;2575:14;;2551:17;;;2570:2;2547:26;2540:50;2618:16;;;;2502:4;2495:12;2466:182;;;2672:17;;2691:2;2668:26;;-1:-1:-1;;;2051:653:49;;;;2749:9;2744:3;2740:19;2735:2;2724:9;2720:18;2713:47;2777:32;2805:3;2797:6;2777:32;:::i;:::-;2769:40;1887:928;-1:-1:-1;;;;;;1887:928:49:o;2820:329::-;3022:2;3004:21;;;3061:1;3041:18;;;3034:29;-1:-1:-1;;;3094:2:49;3079:18;;3072:36;3140:2;3125:18;;2994:155::o;3154:330::-;3356:2;3338:21;;;3395:1;3375:18;;;3368:29;-1:-1:-1;;;3428:2:49;3413:18;;3406:37;3475:2;3460:18;;3328:156::o;3489:329::-;3691:2;3673:21;;;3730:1;3710:18;;;3703:29;-1:-1:-1;;;3763:2:49;3748:18;;3741:36;3809:2;3794:18;;3663:155::o;3823:330::-;4025:2;4007:21;;;4064:1;4044:18;;;4037:29;-1:-1:-1;;;4097:2:49;4082:18;;4075:37;4144:2;4129:18;;3997:156::o;4158:328::-;4360:2;4342:21;;;4399:1;4379:18;;;4372:29;-1:-1:-1;;;4432:2:49;4417:18;;4410:35;4477:2;4462:18;;4332:154::o;4491:328::-;4693:2;4675:21;;;4732:1;4712:18;;;4705:29;-1:-1:-1;;;4765:2:49;4750:18;;4743:35;4810:2;4795:18;;4665:154::o;4824:177::-;4970:25;;;4958:2;4943:18;;4925:76::o;5006:336::-;5214:25;;;5270:2;5255:18;;5248:34;;;;5330:4;5318:17;5313:2;5298:18;;5291:45;5202:2;5187:18;;5169:173::o;5347:319::-;5549:25;;;5605:2;5590:18;;5583:34;;;;5648:2;5633:18;;5626:34;5537:2;5522:18;;5504:162::o;6002:184::-;6174:4;6162:17;;;;6144:36;;6132:2;6117:18;;6099:87::o;6191:129::-;;6259:17;;;6309:4;6293:21;;;6249:71::o" - }, - "methodIdentifiers": { - "QUOTE_ASSET()": "f06a1e13", - "baseAsset()": "cdf456e1", - "cacheTwap(uint256)": "1d1a111a", - "currentObservationIndex()": "aed3aff7", - "decimals()": "313ce567", - "getPrice(uint256)": "e7572230", - "observations(uint256)": "252c09d7", - "stdRef()": "5368945b", - "update()": "a2e62045" - } - }, - "storageLayout": { - "storage": [ - { - "astId": 9238, - "contract": "contracts/BandPriceFeed.sol:BandPriceFeed", - "label": "observations", - "offset": 0, - "slot": "0", - "type": "t_array(t_struct(Observation)9226_storage)256_storage" - }, - { - "astId": 9240, - "contract": "contracts/BandPriceFeed.sol:BandPriceFeed", - "label": "currentObservationIndex", - "offset": 0, - "slot": "768", - "type": "t_uint8" - }, - { - "astId": 9112, - "contract": "contracts/BandPriceFeed.sol:BandPriceFeed", - "label": "_cachedTwap", - "offset": 0, - "slot": "769", - "type": "t_uint256" - }, - { - "astId": 9114, - "contract": "contracts/BandPriceFeed.sol:BandPriceFeed", - "label": "_lastUpdatedAt", - "offset": 0, - "slot": "770", - "type": "t_uint160" - }, - { - "astId": 9116, - "contract": "contracts/BandPriceFeed.sol:BandPriceFeed", - "label": "_interval", - "offset": 20, - "slot": "770", - "type": "t_uint80" - }, - { - "astId": 7961, - "contract": "contracts/BandPriceFeed.sol:BandPriceFeed", - "label": "baseAsset", - "offset": 0, - "slot": "771", - "type": "t_string_storage" - }, - { - "astId": 7963, - "contract": "contracts/BandPriceFeed.sol:BandPriceFeed", - "label": "stdRef", - "offset": 0, - "slot": "772", - "type": "t_contract(IStdReference)8700" - } - ], - "types": { - "t_array(t_struct(Observation)9226_storage)256_storage": { - "base": "t_struct(Observation)9226_storage", - "encoding": "inplace", - "label": "struct CumulativeTwap.Observation[256]", - "numberOfBytes": "24576" - }, - "t_contract(IStdReference)8700": { - "encoding": "inplace", - "label": "contract IStdReference", - "numberOfBytes": "20" - }, - "t_string_storage": { - "encoding": "bytes", - "label": "string", - "numberOfBytes": "32" - }, - "t_struct(Observation)9226_storage": { - "encoding": "inplace", - "label": "struct CumulativeTwap.Observation", - "members": [ - { - "astId": 9221, - "contract": "contracts/BandPriceFeed.sol:BandPriceFeed", - "label": "price", - "offset": 0, - "slot": "0", - "type": "t_uint256" - }, - { - "astId": 9223, - "contract": "contracts/BandPriceFeed.sol:BandPriceFeed", - "label": "priceCumulative", - "offset": 0, - "slot": "1", - "type": "t_uint256" - }, - { - "astId": 9225, - "contract": "contracts/BandPriceFeed.sol:BandPriceFeed", - "label": "timestamp", - "offset": 0, - "slot": "2", - "type": "t_uint256" - } - ], - "numberOfBytes": "96" - }, - "t_uint160": { - "encoding": "inplace", - "label": "uint160", - "numberOfBytes": "20" - }, - "t_uint256": { - "encoding": "inplace", - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint8": { - "encoding": "inplace", - "label": "uint8", - "numberOfBytes": "1" - }, - "t_uint80": { - "encoding": "inplace", - "label": "uint80", - "numberOfBytes": "10" - } - } - } - } - }, - "contracts/ChainlinkPriceFeed.sol": { - "ChainlinkPriceFeed": { - "abi": [ - { - "inputs": [ - { - "internalType": "contract AggregatorV3Interface", - "name": "aggregator", - "type": "address" - }, - { - "internalType": "uint80", - "name": "cacheTwapInterval", - "type": "uint80" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "price", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint8", - "name": "indexAt", - "type": "uint8" - } - ], - "name": "PriceUpdated", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "interval", - "type": "uint256" - } - ], - "name": "cacheTwap", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "currentObservationIndex", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "decimals", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "interval", - "type": "uint256" - } - ], - "name": "getPrice", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "observations", - "outputs": [ - { - "internalType": "uint256", - "name": "price", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "priceCumulative", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "update", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "evm": { - "bytecode": { - "generatedSources": [], - "linkReferences": {}, - "object": "60a060405234801561001057600080fd5b50604051610e28380380610e288339818101604052604081101561003357600080fd5b5080516020918201516103028054600160a01b600160f01b031916600160a01b6001600160501b03841602179055909161007f906001600160a01b038416906100d0811b61028d17901c565b6100ba576040805162461bcd60e51b81526020600482015260076024820152664350465f414e4360c81b604482015290519081900360640190fd5b5060601b6001600160601b0319166080526100d6565b3b151590565b60805160601c610d2661010260003980610199528061029e528061065252806107185250610d266000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c80631d1a111a14610067578063252c09d714610096578063313ce567146100d1578063a2e62045146100ef578063aed3aff7146100f9578063e757223014610101575b600080fd5b6100846004803603602081101561007d57600080fd5b503561011e565b60408051918252519081900360200190f35b6100b3600480360360208110156100ac57600080fd5b503561016d565b60408051938452602084019290925282820152519081900360600190f35b6100d9610195565b6040805160ff9092168252519081900360200190f35b6100f7610221565b005b6100d961023f565b6100846004803603602081101561011757600080fd5b5035610249565b60008060008061012c610293565b925092509250846000148061014857506001600160501b038316155b15610157575091506101689050565b61016285838361036a565b93505050505b919050565b600081610100811061017e57600080fd5b600302018054600182015460029092015490925083565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156101f057600080fd5b505afa158015610204573d6000803e3d6000fd5b505050506040513d602081101561021a57600080fd5b5051905090565b60008061022c610293565b925092505061023b828261040c565b5050565b6103005460ff1681565b600080600080610257610293565b925092509250846000148061027357506001600160501b038316155b15610282575091506101689050565b6101628583836105c1565b3b151590565b6000806000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a06040518083038186803b1580156102f557600080fd5b505afa158015610309573d6000803e3d6000fd5b505050506040513d60a081101561031f57600080fd5b508051602082015160609092015191965093508592509050600082121561035e57610349836105fc565b61035560018403610647565b90965090935090505b91945090915050909192565b61030254600090600160a01b90046001600160501b03168414610399576103928484846107d0565b9050610405565b610302546001600160a01b03166103ae610967565b14156103be575061030154610405565b6103c8838361040c565b6103d0610967565b61030280546001600160a01b0319166001600160a01b03929092169190911790556103fc8484846107d0565b61030181905590505b9392505050565b6103005460ff161580156104205750600254155b1561048c57604080516060810182528381526000602082018190529082018390528381556001819055600283905590517f5f4a9a1b73bee700ca1fb203bb004bcc0a7eca48af3f147b24dcf5bf4bf3c00b9161047f9185918591610cb6565b60405180910390a161023b565b61030054600090819060ff1661010081106104a357fe5b604080516060810182526003929092029290920180548252600181015460208301526002015491810182905291508210156104f95760405162461bcd60e51b81526004016104f090610c78565b60405180910390fd5b610300805460ff198116600160ff9283160182161791829055604083810151815160608101835287815285516020808801519389039182029093019282019290925291820186905292909160009116610100811061055357fe5b825160039190910291909101908155602082015160018201556040918201516002909101556103005490517f5f4a9a1b73bee700ca1fb203bb004bcc0a7eca48af3f147b24dcf5bf4bf3c00b916105b3918791879160ff90911690610cb6565b60405180910390a150505050565b610302546000906001600160a01b03166105d9610967565b14156105e9575061030154610405565b6105f48484846107d0565b949350505050565b6000816001600160501b031611610644576040805162461bcd60e51b8152602060048201526007602482015266086a08cbe9c8a960cb1b604482015290519081900360640190fd5b50565b6000806000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639a6fc8f5886040518263ffffffff1660e01b815260040180826001600160501b0316815260200191505060a06040518083038186803b1580156106bd57600080fd5b505afa1580156106d1573d6000803e3d6000fd5b505050506040513d60a08110156106e757600080fd5b508051602082015160609092015190945090925090505b60008212156107c357610710836105fc565b6001830392507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639a6fc8f5846040518263ffffffff1660e01b815260040180826001600160501b0316815260200191505060a06040518083038186803b15801561078357600080fd5b505afa158015610797573d6000803e3d6000fd5b505050506040513d60a08110156107ad57600080fd5b50602081015160609091015190925090506106fe565b9196909550909350915050565b610300546000908190819060ff1661010081106107e957fe5b600302016040518060600160405290816000820154815260200160018201548152602001600282015481525050905080600001516000141561083d5760405162461bcd60e51b81526004016104f090610c97565b6000610847610967565b90506000610855828861096b565b9050600080610863836109cd565b909250905060006108b76108ac61088461087d888c61096b565b8c90610b1d565b6108a661089e8a604001518d61096b90919063ffffffff16565b8a5190610b1d565b90610b76565b602088015190610b76565b90506000836040015185116108d9578360400151945083602001519050610948565b848360400151116108f7578260400151945082602001519050610948565b60008460400151846040015103905060008560400151870390506109436108ac8361093d846109378b602001518b6020015161096b90919063ffffffff16565b90610b1d565b90610bd0565b925050505b61095885870361093d848461096b565b9b9a5050505050505050505050565b4290565b6000828211156109c2576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b508082035b92915050565b6109d5610c37565b6109dd610c37565b6103005460ff16600080610100815b81811015610a5f578760008660ff166101008110610a0657fe5b600302016002015411610a505760008560ff166101008110610a2457fe5b600302016002015460001415610a4257846001019350839250610a5f565b849350836001019250610a5f565b600019909401936001016109ec565b81811415610a7f5760405162461bcd60e51b81526004016104f090610c58565b60008460ff166101008110610a9057fe5b600302016040518060600160405290816000820154815260200160018201548152602001600282015481525050965060008360ff166101008110610ad057fe5b6003020160405180606001604052908160008201548152602001600182015481526020016002820154815250509550866040015186604001511015610b13578695505b5050505050915091565b600082610b2c575060006109c7565b82820282848281610b3957fe5b04146104055760405162461bcd60e51b8152600401808060200182810382526021815260200180610cd06021913960400191505060405180910390fd5b600082820183811015610405576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000808211610c26576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381610c2f57fe5b049392505050565b60405180606001604052806000815260200160008152602001600081525090565b602080825260069082015265086a8be9c8a960d31b604082015260600190565b60208082526005908201526410d517d25560da1b604082015260600190565b60208082526005908201526410d517d39160da1b604082015260600190565b928352602083019190915260ff1660408201526060019056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220f12ba8f3839146b970608a5fdcace0064204f48bdf5d884aa9ae72a3e1110d0764736f6c63430007060033", - "opcodes": "PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xE28 CODESIZE SUB DUP1 PUSH2 0xE28 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD MLOAD PUSH2 0x302 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL PUSH1 0x1 PUSH1 0xF0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0xA0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB DUP5 AND MUL OR SWAP1 SSTORE SWAP1 SWAP2 PUSH2 0x7F SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH2 0xD0 DUP2 SHL PUSH2 0x28D OR SWAP1 SHR JUMP JUMPDEST PUSH2 0xBA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x7 PUSH1 0x24 DUP3 ADD MSTORE PUSH7 0x4350465F414E43 PUSH1 0xC8 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP PUSH1 0x60 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT AND PUSH1 0x80 MSTORE PUSH2 0xD6 JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH2 0xD26 PUSH2 0x102 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x199 MSTORE DUP1 PUSH2 0x29E MSTORE DUP1 PUSH2 0x652 MSTORE DUP1 PUSH2 0x718 MSTORE POP PUSH2 0xD26 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x62 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1D1A111A EQ PUSH2 0x67 JUMPI DUP1 PUSH4 0x252C09D7 EQ PUSH2 0x96 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0xD1 JUMPI DUP1 PUSH4 0xA2E62045 EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0xAED3AFF7 EQ PUSH2 0xF9 JUMPI DUP1 PUSH4 0xE7572230 EQ PUSH2 0x101 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x84 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x11E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xB3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x16D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST PUSH2 0xD9 PUSH2 0x195 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xF7 PUSH2 0x221 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xD9 PUSH2 0x23F JUMP JUMPDEST PUSH2 0x84 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x117 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x249 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x12C PUSH2 0x293 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP DUP5 PUSH1 0x0 EQ DUP1 PUSH2 0x148 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB DUP4 AND ISZERO JUMPDEST ISZERO PUSH2 0x157 JUMPI POP SWAP2 POP PUSH2 0x168 SWAP1 POP JUMP JUMPDEST PUSH2 0x162 DUP6 DUP4 DUP4 PUSH2 0x36A JUMP JUMPDEST SWAP4 POP POP POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x100 DUP2 LT PUSH2 0x17E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 MUL ADD DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP3 POP DUP4 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x313CE567 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x204 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x21A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x22C PUSH2 0x293 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP PUSH2 0x23B DUP3 DUP3 PUSH2 0x40C JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x300 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x257 PUSH2 0x293 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP DUP5 PUSH1 0x0 EQ DUP1 PUSH2 0x273 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB DUP4 AND ISZERO JUMPDEST ISZERO PUSH2 0x282 JUMPI POP SWAP2 POP PUSH2 0x168 SWAP1 POP JUMP JUMPDEST PUSH2 0x162 DUP6 DUP4 DUP4 PUSH2 0x5C1 JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFEAF968C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0xA0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x309 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x31F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x60 SWAP1 SWAP3 ADD MLOAD SWAP2 SWAP7 POP SWAP4 POP DUP6 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 SLT ISZERO PUSH2 0x35E JUMPI PUSH2 0x349 DUP4 PUSH2 0x5FC JUMP JUMPDEST PUSH2 0x355 PUSH1 0x1 DUP5 SUB PUSH2 0x647 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP1 SWAP4 POP SWAP1 POP JUMPDEST SWAP2 SWAP5 POP SWAP1 SWAP2 POP POP SWAP1 SWAP2 SWAP3 JUMP JUMPDEST PUSH2 0x302 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB AND DUP5 EQ PUSH2 0x399 JUMPI PUSH2 0x392 DUP5 DUP5 DUP5 PUSH2 0x7D0 JUMP JUMPDEST SWAP1 POP PUSH2 0x405 JUMP JUMPDEST PUSH2 0x302 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3AE PUSH2 0x967 JUMP JUMPDEST EQ ISZERO PUSH2 0x3BE JUMPI POP PUSH2 0x301 SLOAD PUSH2 0x405 JUMP JUMPDEST PUSH2 0x3C8 DUP4 DUP4 PUSH2 0x40C JUMP JUMPDEST PUSH2 0x3D0 PUSH2 0x967 JUMP JUMPDEST PUSH2 0x302 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x3FC DUP5 DUP5 DUP5 PUSH2 0x7D0 JUMP JUMPDEST PUSH2 0x301 DUP2 SWAP1 SSTORE SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x300 SLOAD PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x420 JUMPI POP PUSH1 0x2 SLOAD ISZERO JUMPDEST ISZERO PUSH2 0x48C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE DUP4 DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP1 DUP3 ADD DUP4 SWAP1 MSTORE DUP4 DUP2 SSTORE PUSH1 0x1 DUP2 SWAP1 SSTORE PUSH1 0x2 DUP4 SWAP1 SSTORE SWAP1 MLOAD PUSH32 0x5F4A9A1B73BEE700CA1FB203BB004BCC0A7ECA48AF3F147B24DCF5BF4BF3C00B SWAP2 PUSH2 0x47F SWAP2 DUP6 SWAP2 DUP6 SWAP2 PUSH2 0xCB6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH2 0x23B JUMP JUMPDEST PUSH2 0x300 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0xFF AND PUSH2 0x100 DUP2 LT PUSH2 0x4A3 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x3 SWAP3 SWAP1 SWAP3 MUL SWAP3 SWAP1 SWAP3 ADD DUP1 SLOAD DUP3 MSTORE PUSH1 0x1 DUP2 ADD SLOAD PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x2 ADD SLOAD SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE SWAP2 POP DUP3 LT ISZERO PUSH2 0x4F9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4F0 SWAP1 PUSH2 0xC78 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x300 DUP1 SLOAD PUSH1 0xFF NOT DUP2 AND PUSH1 0x1 PUSH1 0xFF SWAP3 DUP4 AND ADD DUP3 AND OR SWAP2 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP4 DUP2 ADD MLOAD DUP2 MLOAD PUSH1 0x60 DUP2 ADD DUP4 MSTORE DUP8 DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 DUP1 DUP9 ADD MLOAD SWAP4 DUP10 SUB SWAP2 DUP3 MUL SWAP1 SWAP4 ADD SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP2 DUP3 ADD DUP7 SWAP1 MSTORE SWAP3 SWAP1 SWAP2 PUSH1 0x0 SWAP2 AND PUSH2 0x100 DUP2 LT PUSH2 0x553 JUMPI INVALID JUMPDEST DUP3 MLOAD PUSH1 0x3 SWAP2 SWAP1 SWAP2 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 DUP2 SSTORE PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x1 DUP3 ADD SSTORE PUSH1 0x40 SWAP2 DUP3 ADD MLOAD PUSH1 0x2 SWAP1 SWAP2 ADD SSTORE PUSH2 0x300 SLOAD SWAP1 MLOAD PUSH32 0x5F4A9A1B73BEE700CA1FB203BB004BCC0A7ECA48AF3F147B24DCF5BF4BF3C00B SWAP2 PUSH2 0x5B3 SWAP2 DUP8 SWAP2 DUP8 SWAP2 PUSH1 0xFF SWAP1 SWAP2 AND SWAP1 PUSH2 0xCB6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH2 0x302 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x5D9 PUSH2 0x967 JUMP JUMPDEST EQ ISZERO PUSH2 0x5E9 JUMPI POP PUSH2 0x301 SLOAD PUSH2 0x405 JUMP JUMPDEST PUSH2 0x5F4 DUP5 DUP5 DUP5 PUSH2 0x7D0 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB AND GT PUSH2 0x644 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x7 PUSH1 0x24 DUP3 ADD MSTORE PUSH7 0x86A08CBE9C8A9 PUSH1 0xCB SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x9A6FC8F5 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0xA0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6D1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x6E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x60 SWAP1 SWAP3 ADD MLOAD SWAP1 SWAP5 POP SWAP1 SWAP3 POP SWAP1 POP JUMPDEST PUSH1 0x0 DUP3 SLT ISZERO PUSH2 0x7C3 JUMPI PUSH2 0x710 DUP4 PUSH2 0x5FC JUMP JUMPDEST PUSH1 0x1 DUP4 SUB SWAP3 POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x9A6FC8F5 DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0xA0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x783 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x797 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x7AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x60 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x6FE JUMP JUMPDEST SWAP2 SWAP7 SWAP1 SWAP6 POP SWAP1 SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH2 0x300 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP2 SWAP1 PUSH1 0xFF AND PUSH2 0x100 DUP2 LT PUSH2 0x7E9 JUMPI INVALID JUMPDEST PUSH1 0x3 MUL ADD PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD SLOAD DUP2 MSTORE POP POP SWAP1 POP DUP1 PUSH1 0x0 ADD MLOAD PUSH1 0x0 EQ ISZERO PUSH2 0x83D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4F0 SWAP1 PUSH2 0xC97 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x847 PUSH2 0x967 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x855 DUP3 DUP9 PUSH2 0x96B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x863 DUP4 PUSH2 0x9CD JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 PUSH2 0x8B7 PUSH2 0x8AC PUSH2 0x884 PUSH2 0x87D DUP9 DUP13 PUSH2 0x96B JUMP JUMPDEST DUP13 SWAP1 PUSH2 0xB1D JUMP JUMPDEST PUSH2 0x8A6 PUSH2 0x89E DUP11 PUSH1 0x40 ADD MLOAD DUP14 PUSH2 0x96B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP11 MLOAD SWAP1 PUSH2 0xB1D JUMP JUMPDEST SWAP1 PUSH2 0xB76 JUMP JUMPDEST PUSH1 0x20 DUP9 ADD MLOAD SWAP1 PUSH2 0xB76 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 PUSH1 0x40 ADD MLOAD DUP6 GT PUSH2 0x8D9 JUMPI DUP4 PUSH1 0x40 ADD MLOAD SWAP5 POP DUP4 PUSH1 0x20 ADD MLOAD SWAP1 POP PUSH2 0x948 JUMP JUMPDEST DUP5 DUP4 PUSH1 0x40 ADD MLOAD GT PUSH2 0x8F7 JUMPI DUP3 PUSH1 0x40 ADD MLOAD SWAP5 POP DUP3 PUSH1 0x20 ADD MLOAD SWAP1 POP PUSH2 0x948 JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x40 ADD MLOAD DUP5 PUSH1 0x40 ADD MLOAD SUB SWAP1 POP PUSH1 0x0 DUP6 PUSH1 0x40 ADD MLOAD DUP8 SUB SWAP1 POP PUSH2 0x943 PUSH2 0x8AC DUP4 PUSH2 0x93D DUP5 PUSH2 0x937 DUP12 PUSH1 0x20 ADD MLOAD DUP12 PUSH1 0x20 ADD MLOAD PUSH2 0x96B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH2 0xB1D JUMP JUMPDEST SWAP1 PUSH2 0xBD0 JUMP JUMPDEST SWAP3 POP POP POP JUMPDEST PUSH2 0x958 DUP6 DUP8 SUB PUSH2 0x93D DUP5 DUP5 PUSH2 0x96B JUMP JUMPDEST SWAP12 SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST TIMESTAMP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 GT ISZERO PUSH2 0x9C2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP DUP1 DUP3 SUB JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x9D5 PUSH2 0xC37 JUMP JUMPDEST PUSH2 0x9DD PUSH2 0xC37 JUMP JUMPDEST PUSH2 0x300 SLOAD PUSH1 0xFF AND PUSH1 0x0 DUP1 PUSH2 0x100 DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xA5F JUMPI DUP8 PUSH1 0x0 DUP7 PUSH1 0xFF AND PUSH2 0x100 DUP2 LT PUSH2 0xA06 JUMPI INVALID JUMPDEST PUSH1 0x3 MUL ADD PUSH1 0x2 ADD SLOAD GT PUSH2 0xA50 JUMPI PUSH1 0x0 DUP6 PUSH1 0xFF AND PUSH2 0x100 DUP2 LT PUSH2 0xA24 JUMPI INVALID JUMPDEST PUSH1 0x3 MUL ADD PUSH1 0x2 ADD SLOAD PUSH1 0x0 EQ ISZERO PUSH2 0xA42 JUMPI DUP5 PUSH1 0x1 ADD SWAP4 POP DUP4 SWAP3 POP PUSH2 0xA5F JUMP JUMPDEST DUP5 SWAP4 POP DUP4 PUSH1 0x1 ADD SWAP3 POP PUSH2 0xA5F JUMP JUMPDEST PUSH1 0x0 NOT SWAP1 SWAP5 ADD SWAP4 PUSH1 0x1 ADD PUSH2 0x9EC JUMP JUMPDEST DUP2 DUP2 EQ ISZERO PUSH2 0xA7F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4F0 SWAP1 PUSH2 0xC58 JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH1 0xFF AND PUSH2 0x100 DUP2 LT PUSH2 0xA90 JUMPI INVALID JUMPDEST PUSH1 0x3 MUL ADD PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD SLOAD DUP2 MSTORE POP POP SWAP7 POP PUSH1 0x0 DUP4 PUSH1 0xFF AND PUSH2 0x100 DUP2 LT PUSH2 0xAD0 JUMPI INVALID JUMPDEST PUSH1 0x3 MUL ADD PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD SLOAD DUP2 MSTORE POP POP SWAP6 POP DUP7 PUSH1 0x40 ADD MLOAD DUP7 PUSH1 0x40 ADD MLOAD LT ISZERO PUSH2 0xB13 JUMPI DUP7 SWAP6 POP JUMPDEST POP POP POP POP POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0xB2C JUMPI POP PUSH1 0x0 PUSH2 0x9C7 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0xB39 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x405 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xCD0 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x405 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0xC26 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 DUP4 DUP2 PUSH2 0xC2F JUMPI INVALID JUMPDEST DIV SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x6 SWAP1 DUP3 ADD MSTORE PUSH6 0x86A8BE9C8A9 PUSH1 0xD3 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x5 SWAP1 DUP3 ADD MSTORE PUSH5 0x10D517D255 PUSH1 0xDA SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x5 SWAP1 DUP3 ADD MSTORE PUSH5 0x10D517D391 PUSH1 0xDA SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xFF AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP INVALID MSTORE8 PUSH2 0x6665 0x4D PUSH2 0x7468 GASPRICE KECCAK256 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F77A26469706673582212 KECCAK256 CALL 0x2B 0xA8 RETURN DUP4 SWAP2 CHAINID 0xB9 PUSH17 0x608A5FDCACE0064204F48BDF5D884AA9AE PUSH19 0xA3E1110D0764736F6C63430007060033000000 ", - "sourceMap": "407:2656:37:-:0;;;571:261;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;571:261:37;;;;;;;349:9:47;:20;;-1:-1:-1;;;;;;;;349:20:47;-1:-1:-1;;;;;;;;349:20:47;;;;;;571:261:37;;746:32:::1;::::0;-1:-1:-1;;;;;746:30:37;::::1;::::0;::::1;::::0;::::1;;;:32:::0;::::1;:::i;:::-;738:52;;;::::0;;-1:-1:-1;;;738:52:37;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;738:52:37;;;;;;;;;;;;;::::1;;-1:-1:-1::0;801:24:37::1;::::0;-1:-1:-1;;;;;;801:24:37;::::1;::::0;407:2656;;726:413:2;1086:20;1124:8;;;726:413::o;407:2656:37:-;;;;;;;;;;;;" - }, - "deployedBytecode": { - "generatedSources": [ - { - "ast": { - "nodeType": "YulBlock", - "src": "0:1683:49", - "statements": [ - { - "nodeType": "YulBlock", - "src": "6:3:49", - "statements": [] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "188:155:49", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "205:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "216:2:49", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "198:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "198:21:49" - }, - "nodeType": "YulExpressionStatement", - "src": "198:21:49" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "239:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "250:2:49", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "235:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "235:18:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "255:1:49", - "type": "", - "value": "6" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "228:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "228:29:49" - }, - "nodeType": "YulExpressionStatement", - "src": "228:29:49" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "277:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "288:2:49", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "273:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "273:18:49" - }, - { - "kind": "string", - "nodeType": "YulLiteral", - "src": "293:8:49", - "type": "", - "value": "CT_NEH" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "266:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "266:36:49" - }, - "nodeType": "YulExpressionStatement", - "src": "266:36:49" - }, - { - "nodeType": "YulAssignment", - "src": "311:26:49", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "323:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "334:2:49", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "319:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "319:18:49" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "311:4:49" - } - ] - } - ] - }, - "name": "abi_encode_tuple_t_stringliteral_579a392f3722d5ac1f7cb0ada24e2070ee442af1ba4b25c70186b6558d7af206__to_t_string_memory_ptr__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "165:9:49", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "179:4:49", - "type": "" - } - ], - "src": "14:329:49" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "522:154:49", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "539:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "550:2:49", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "532:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "532:21:49" - }, - "nodeType": "YulExpressionStatement", - "src": "532:21:49" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "573:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "584:2:49", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "569:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "569:18:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "589:1:49", - "type": "", - "value": "5" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "562:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "562:29:49" - }, - "nodeType": "YulExpressionStatement", - "src": "562:29:49" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "611:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "622:2:49", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "607:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "607:18:49" - }, - { - "kind": "string", - "nodeType": "YulLiteral", - "src": "627:7:49", - "type": "", - "value": "CT_IT" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "600:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "600:35:49" - }, - "nodeType": "YulExpressionStatement", - "src": "600:35:49" - }, - { - "nodeType": "YulAssignment", - "src": "644:26:49", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "656:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "667:2:49", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "652:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "652:18:49" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "644:4:49" - } - ] - } - ] - }, - "name": "abi_encode_tuple_t_stringliteral_b9b63a062e188cc2ae755ee9cb5205b4231032ddfc171193deac14763ce9e913__to_t_string_memory_ptr__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "499:9:49", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "513:4:49", - "type": "" - } - ], - "src": "348:328:49" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "855:154:49", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "872:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "883:2:49", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "865:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "865:21:49" - }, - "nodeType": "YulExpressionStatement", - "src": "865:21:49" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "906:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "917:2:49", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "902:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "902:18:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "922:1:49", - "type": "", - "value": "5" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "895:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "895:29:49" - }, - "nodeType": "YulExpressionStatement", - "src": "895:29:49" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "944:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "955:2:49", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "940:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "940:18:49" - }, - { - "kind": "string", - "nodeType": "YulLiteral", - "src": "960:7:49", - "type": "", - "value": "CT_ND" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "933:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "933:35:49" - }, - "nodeType": "YulExpressionStatement", - "src": "933:35:49" - }, - { - "nodeType": "YulAssignment", - "src": "977:26:49", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "989:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1000:2:49", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "985:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "985:18:49" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "977:4:49" - } - ] - } - ] - }, - "name": "abi_encode_tuple_t_stringliteral_fa617c1c9ea21235ad24126b1fa10038d761b1d0295223e172120fd1e9768188__to_t_string_memory_ptr__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "832:9:49", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "846:4:49", - "type": "" - } - ], - "src": "681:328:49" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "1177:173:49", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "1187:26:49", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1199:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1210:2:49", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1195:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "1195:18:49" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "1187:4:49" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1229:9:49" - }, - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "1240:6:49" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "1222:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "1222:25:49" - }, - "nodeType": "YulExpressionStatement", - "src": "1222:25:49" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1267:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1278:2:49", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1263:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "1263:18:49" - }, - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "1283:6:49" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "1256:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "1256:34:49" - }, - "nodeType": "YulExpressionStatement", - "src": "1256:34:49" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1310:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1321:2:49", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1306:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "1306:18:49" - }, - { - "arguments": [ - { - "name": "value2", - "nodeType": "YulIdentifier", - "src": "1330:6:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1338:4:49", - "type": "", - "value": "0xff" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "1326:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "1326:17:49" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "1299:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "1299:45:49" - }, - "nodeType": "YulExpressionStatement", - "src": "1299:45:49" - } - ] - }, - "name": "abi_encode_tuple_t_uint256_t_uint256_t_rational_0_by_1__to_t_uint256_t_uint256_t_uint8__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "1130:9:49", - "type": "" - }, - { - "name": "value2", - "nodeType": "YulTypedName", - "src": "1141:6:49", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "1149:6:49", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "1157:6:49", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "1168:4:49", - "type": "" - } - ], - "src": "1014:336:49" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "1508:173:49", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "1518:26:49", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1530:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1541:2:49", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1526:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "1526:18:49" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "1518:4:49" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1560:9:49" - }, - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "1571:6:49" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "1553:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "1553:25:49" - }, - "nodeType": "YulExpressionStatement", - "src": "1553:25:49" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1598:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1609:2:49", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1594:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "1594:18:49" - }, - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "1614:6:49" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "1587:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "1587:34:49" - }, - "nodeType": "YulExpressionStatement", - "src": "1587:34:49" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1641:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1652:2:49", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1637:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "1637:18:49" - }, - { - "arguments": [ - { - "name": "value2", - "nodeType": "YulIdentifier", - "src": "1661:6:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1669:4:49", - "type": "", - "value": "0xff" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "1657:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "1657:17:49" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "1630:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "1630:45:49" - }, - "nodeType": "YulExpressionStatement", - "src": "1630:45:49" - } - ] - }, - "name": "abi_encode_tuple_t_uint256_t_uint256_t_uint8__to_t_uint256_t_uint256_t_uint8__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "1461:9:49", - "type": "" - }, - { - "name": "value2", - "nodeType": "YulTypedName", - "src": "1472:6:49", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "1480:6:49", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "1488:6:49", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "1499:4:49", - "type": "" - } - ], - "src": "1355:326:49" - } - ] - }, - "contents": "{\n { }\n function abi_encode_tuple_t_stringliteral_579a392f3722d5ac1f7cb0ada24e2070ee442af1ba4b25c70186b6558d7af206__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 6)\n mstore(add(headStart, 64), \"CT_NEH\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_b9b63a062e188cc2ae755ee9cb5205b4231032ddfc171193deac14763ce9e913__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 5)\n mstore(add(headStart, 64), \"CT_IT\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_stringliteral_fa617c1c9ea21235ad24126b1fa10038d761b1d0295223e172120fd1e9768188__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 5)\n mstore(add(headStart, 64), \"CT_ND\")\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_uint256_t_uint256_t_rational_0_by_1__to_t_uint256_t_uint256_t_uint8__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), and(value2, 0xff))\n }\n function abi_encode_tuple_t_uint256_t_uint256_t_uint8__to_t_uint256_t_uint256_t_uint8__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), and(value2, 0xff))\n }\n}", - "id": 49, - "language": "Yul", - "name": "#utility.yul" - } - ], - "immutableReferences": { - "8152": [ - { - "length": 32, - "start": 409 - }, - { - "length": 32, - "start": 670 - }, - { - "length": 32, - "start": 1618 - }, - { - "length": 32, - "start": 1816 - } - ] - }, - "linkReferences": {}, - "object": "608060405234801561001057600080fd5b50600436106100625760003560e01c80631d1a111a14610067578063252c09d714610096578063313ce567146100d1578063a2e62045146100ef578063aed3aff7146100f9578063e757223014610101575b600080fd5b6100846004803603602081101561007d57600080fd5b503561011e565b60408051918252519081900360200190f35b6100b3600480360360208110156100ac57600080fd5b503561016d565b60408051938452602084019290925282820152519081900360600190f35b6100d9610195565b6040805160ff9092168252519081900360200190f35b6100f7610221565b005b6100d961023f565b6100846004803603602081101561011757600080fd5b5035610249565b60008060008061012c610293565b925092509250846000148061014857506001600160501b038316155b15610157575091506101689050565b61016285838361036a565b93505050505b919050565b600081610100811061017e57600080fd5b600302018054600182015460029092015490925083565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156101f057600080fd5b505afa158015610204573d6000803e3d6000fd5b505050506040513d602081101561021a57600080fd5b5051905090565b60008061022c610293565b925092505061023b828261040c565b5050565b6103005460ff1681565b600080600080610257610293565b925092509250846000148061027357506001600160501b038316155b15610282575091506101689050565b6101628583836105c1565b3b151590565b6000806000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a06040518083038186803b1580156102f557600080fd5b505afa158015610309573d6000803e3d6000fd5b505050506040513d60a081101561031f57600080fd5b508051602082015160609092015191965093508592509050600082121561035e57610349836105fc565b61035560018403610647565b90965090935090505b91945090915050909192565b61030254600090600160a01b90046001600160501b03168414610399576103928484846107d0565b9050610405565b610302546001600160a01b03166103ae610967565b14156103be575061030154610405565b6103c8838361040c565b6103d0610967565b61030280546001600160a01b0319166001600160a01b03929092169190911790556103fc8484846107d0565b61030181905590505b9392505050565b6103005460ff161580156104205750600254155b1561048c57604080516060810182528381526000602082018190529082018390528381556001819055600283905590517f5f4a9a1b73bee700ca1fb203bb004bcc0a7eca48af3f147b24dcf5bf4bf3c00b9161047f9185918591610cb6565b60405180910390a161023b565b61030054600090819060ff1661010081106104a357fe5b604080516060810182526003929092029290920180548252600181015460208301526002015491810182905291508210156104f95760405162461bcd60e51b81526004016104f090610c78565b60405180910390fd5b610300805460ff198116600160ff9283160182161791829055604083810151815160608101835287815285516020808801519389039182029093019282019290925291820186905292909160009116610100811061055357fe5b825160039190910291909101908155602082015160018201556040918201516002909101556103005490517f5f4a9a1b73bee700ca1fb203bb004bcc0a7eca48af3f147b24dcf5bf4bf3c00b916105b3918791879160ff90911690610cb6565b60405180910390a150505050565b610302546000906001600160a01b03166105d9610967565b14156105e9575061030154610405565b6105f48484846107d0565b949350505050565b6000816001600160501b031611610644576040805162461bcd60e51b8152602060048201526007602482015266086a08cbe9c8a960cb1b604482015290519081900360640190fd5b50565b6000806000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639a6fc8f5886040518263ffffffff1660e01b815260040180826001600160501b0316815260200191505060a06040518083038186803b1580156106bd57600080fd5b505afa1580156106d1573d6000803e3d6000fd5b505050506040513d60a08110156106e757600080fd5b508051602082015160609092015190945090925090505b60008212156107c357610710836105fc565b6001830392507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639a6fc8f5846040518263ffffffff1660e01b815260040180826001600160501b0316815260200191505060a06040518083038186803b15801561078357600080fd5b505afa158015610797573d6000803e3d6000fd5b505050506040513d60a08110156107ad57600080fd5b50602081015160609091015190925090506106fe565b9196909550909350915050565b610300546000908190819060ff1661010081106107e957fe5b600302016040518060600160405290816000820154815260200160018201548152602001600282015481525050905080600001516000141561083d5760405162461bcd60e51b81526004016104f090610c97565b6000610847610967565b90506000610855828861096b565b9050600080610863836109cd565b909250905060006108b76108ac61088461087d888c61096b565b8c90610b1d565b6108a661089e8a604001518d61096b90919063ffffffff16565b8a5190610b1d565b90610b76565b602088015190610b76565b90506000836040015185116108d9578360400151945083602001519050610948565b848360400151116108f7578260400151945082602001519050610948565b60008460400151846040015103905060008560400151870390506109436108ac8361093d846109378b602001518b6020015161096b90919063ffffffff16565b90610b1d565b90610bd0565b925050505b61095885870361093d848461096b565b9b9a5050505050505050505050565b4290565b6000828211156109c2576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b508082035b92915050565b6109d5610c37565b6109dd610c37565b6103005460ff16600080610100815b81811015610a5f578760008660ff166101008110610a0657fe5b600302016002015411610a505760008560ff166101008110610a2457fe5b600302016002015460001415610a4257846001019350839250610a5f565b849350836001019250610a5f565b600019909401936001016109ec565b81811415610a7f5760405162461bcd60e51b81526004016104f090610c58565b60008460ff166101008110610a9057fe5b600302016040518060600160405290816000820154815260200160018201548152602001600282015481525050965060008360ff166101008110610ad057fe5b6003020160405180606001604052908160008201548152602001600182015481526020016002820154815250509550866040015186604001511015610b13578695505b5050505050915091565b600082610b2c575060006109c7565b82820282848281610b3957fe5b04146104055760405162461bcd60e51b8152600401808060200182810382526021815260200180610cd06021913960400191505060405180910390fd5b600082820183811015610405576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000808211610c26576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381610c2f57fe5b049392505050565b60405180606001604052806000815260200160008152602001600081525090565b602080825260069082015265086a8be9c8a960d31b604082015260600190565b60208082526005908201526410d517d25560da1b604082015260600190565b60208082526005908201526410d517d39160da1b604082015260600190565b928352602083019190915260ff1660408201526060019056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220f12ba8f3839146b970608a5fdcace0064204f48bdf5d884aa9ae72a3e1110d0764736f6c63430007060033", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x62 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1D1A111A EQ PUSH2 0x67 JUMPI DUP1 PUSH4 0x252C09D7 EQ PUSH2 0x96 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0xD1 JUMPI DUP1 PUSH4 0xA2E62045 EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0xAED3AFF7 EQ PUSH2 0xF9 JUMPI DUP1 PUSH4 0xE7572230 EQ PUSH2 0x101 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x84 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x11E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xB3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x16D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST PUSH2 0xD9 PUSH2 0x195 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xF7 PUSH2 0x221 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xD9 PUSH2 0x23F JUMP JUMPDEST PUSH2 0x84 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x117 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x249 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x12C PUSH2 0x293 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP DUP5 PUSH1 0x0 EQ DUP1 PUSH2 0x148 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB DUP4 AND ISZERO JUMPDEST ISZERO PUSH2 0x157 JUMPI POP SWAP2 POP PUSH2 0x168 SWAP1 POP JUMP JUMPDEST PUSH2 0x162 DUP6 DUP4 DUP4 PUSH2 0x36A JUMP JUMPDEST SWAP4 POP POP POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x100 DUP2 LT PUSH2 0x17E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 MUL ADD DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP3 POP DUP4 JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x313CE567 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x204 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x21A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x22C PUSH2 0x293 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP PUSH2 0x23B DUP3 DUP3 PUSH2 0x40C JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x300 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x257 PUSH2 0x293 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP DUP5 PUSH1 0x0 EQ DUP1 PUSH2 0x273 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB DUP4 AND ISZERO JUMPDEST ISZERO PUSH2 0x282 JUMPI POP SWAP2 POP PUSH2 0x168 SWAP1 POP JUMP JUMPDEST PUSH2 0x162 DUP6 DUP4 DUP4 PUSH2 0x5C1 JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xFEAF968C PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0xA0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x309 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x31F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x60 SWAP1 SWAP3 ADD MLOAD SWAP2 SWAP7 POP SWAP4 POP DUP6 SWAP3 POP SWAP1 POP PUSH1 0x0 DUP3 SLT ISZERO PUSH2 0x35E JUMPI PUSH2 0x349 DUP4 PUSH2 0x5FC JUMP JUMPDEST PUSH2 0x355 PUSH1 0x1 DUP5 SUB PUSH2 0x647 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP1 SWAP4 POP SWAP1 POP JUMPDEST SWAP2 SWAP5 POP SWAP1 SWAP2 POP POP SWAP1 SWAP2 SWAP3 JUMP JUMPDEST PUSH2 0x302 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB AND DUP5 EQ PUSH2 0x399 JUMPI PUSH2 0x392 DUP5 DUP5 DUP5 PUSH2 0x7D0 JUMP JUMPDEST SWAP1 POP PUSH2 0x405 JUMP JUMPDEST PUSH2 0x302 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3AE PUSH2 0x967 JUMP JUMPDEST EQ ISZERO PUSH2 0x3BE JUMPI POP PUSH2 0x301 SLOAD PUSH2 0x405 JUMP JUMPDEST PUSH2 0x3C8 DUP4 DUP4 PUSH2 0x40C JUMP JUMPDEST PUSH2 0x3D0 PUSH2 0x967 JUMP JUMPDEST PUSH2 0x302 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x3FC DUP5 DUP5 DUP5 PUSH2 0x7D0 JUMP JUMPDEST PUSH2 0x301 DUP2 SWAP1 SSTORE SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x300 SLOAD PUSH1 0xFF AND ISZERO DUP1 ISZERO PUSH2 0x420 JUMPI POP PUSH1 0x2 SLOAD ISZERO JUMPDEST ISZERO PUSH2 0x48C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE DUP4 DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP1 DUP3 ADD DUP4 SWAP1 MSTORE DUP4 DUP2 SSTORE PUSH1 0x1 DUP2 SWAP1 SSTORE PUSH1 0x2 DUP4 SWAP1 SSTORE SWAP1 MLOAD PUSH32 0x5F4A9A1B73BEE700CA1FB203BB004BCC0A7ECA48AF3F147B24DCF5BF4BF3C00B SWAP2 PUSH2 0x47F SWAP2 DUP6 SWAP2 DUP6 SWAP2 PUSH2 0xCB6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH2 0x23B JUMP JUMPDEST PUSH2 0x300 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0xFF AND PUSH2 0x100 DUP2 LT PUSH2 0x4A3 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x3 SWAP3 SWAP1 SWAP3 MUL SWAP3 SWAP1 SWAP3 ADD DUP1 SLOAD DUP3 MSTORE PUSH1 0x1 DUP2 ADD SLOAD PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x2 ADD SLOAD SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE SWAP2 POP DUP3 LT ISZERO PUSH2 0x4F9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4F0 SWAP1 PUSH2 0xC78 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x300 DUP1 SLOAD PUSH1 0xFF NOT DUP2 AND PUSH1 0x1 PUSH1 0xFF SWAP3 DUP4 AND ADD DUP3 AND OR SWAP2 DUP3 SWAP1 SSTORE PUSH1 0x40 DUP4 DUP2 ADD MLOAD DUP2 MLOAD PUSH1 0x60 DUP2 ADD DUP4 MSTORE DUP8 DUP2 MSTORE DUP6 MLOAD PUSH1 0x20 DUP1 DUP9 ADD MLOAD SWAP4 DUP10 SUB SWAP2 DUP3 MUL SWAP1 SWAP4 ADD SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP2 DUP3 ADD DUP7 SWAP1 MSTORE SWAP3 SWAP1 SWAP2 PUSH1 0x0 SWAP2 AND PUSH2 0x100 DUP2 LT PUSH2 0x553 JUMPI INVALID JUMPDEST DUP3 MLOAD PUSH1 0x3 SWAP2 SWAP1 SWAP2 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 DUP2 SSTORE PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x1 DUP3 ADD SSTORE PUSH1 0x40 SWAP2 DUP3 ADD MLOAD PUSH1 0x2 SWAP1 SWAP2 ADD SSTORE PUSH2 0x300 SLOAD SWAP1 MLOAD PUSH32 0x5F4A9A1B73BEE700CA1FB203BB004BCC0A7ECA48AF3F147B24DCF5BF4BF3C00B SWAP2 PUSH2 0x5B3 SWAP2 DUP8 SWAP2 DUP8 SWAP2 PUSH1 0xFF SWAP1 SWAP2 AND SWAP1 PUSH2 0xCB6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH2 0x302 SLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x5D9 PUSH2 0x967 JUMP JUMPDEST EQ ISZERO PUSH2 0x5E9 JUMPI POP PUSH2 0x301 SLOAD PUSH2 0x405 JUMP JUMPDEST PUSH2 0x5F4 DUP5 DUP5 DUP5 PUSH2 0x7D0 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB AND GT PUSH2 0x644 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x7 PUSH1 0x24 DUP3 ADD MSTORE PUSH7 0x86A08CBE9C8A9 PUSH1 0xCB SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x9A6FC8F5 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0xA0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x6D1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x6E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x60 SWAP1 SWAP3 ADD MLOAD SWAP1 SWAP5 POP SWAP1 SWAP3 POP SWAP1 POP JUMPDEST PUSH1 0x0 DUP3 SLT ISZERO PUSH2 0x7C3 JUMPI PUSH2 0x710 DUP4 PUSH2 0x5FC JUMP JUMPDEST PUSH1 0x1 DUP4 SUB SWAP3 POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x9A6FC8F5 DUP5 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0xA0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x783 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x797 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x7AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x60 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x6FE JUMP JUMPDEST SWAP2 SWAP7 SWAP1 SWAP6 POP SWAP1 SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH2 0x300 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP2 SWAP1 PUSH1 0xFF AND PUSH2 0x100 DUP2 LT PUSH2 0x7E9 JUMPI INVALID JUMPDEST PUSH1 0x3 MUL ADD PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD SLOAD DUP2 MSTORE POP POP SWAP1 POP DUP1 PUSH1 0x0 ADD MLOAD PUSH1 0x0 EQ ISZERO PUSH2 0x83D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4F0 SWAP1 PUSH2 0xC97 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x847 PUSH2 0x967 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x855 DUP3 DUP9 PUSH2 0x96B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x863 DUP4 PUSH2 0x9CD JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x0 PUSH2 0x8B7 PUSH2 0x8AC PUSH2 0x884 PUSH2 0x87D DUP9 DUP13 PUSH2 0x96B JUMP JUMPDEST DUP13 SWAP1 PUSH2 0xB1D JUMP JUMPDEST PUSH2 0x8A6 PUSH2 0x89E DUP11 PUSH1 0x40 ADD MLOAD DUP14 PUSH2 0x96B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP11 MLOAD SWAP1 PUSH2 0xB1D JUMP JUMPDEST SWAP1 PUSH2 0xB76 JUMP JUMPDEST PUSH1 0x20 DUP9 ADD MLOAD SWAP1 PUSH2 0xB76 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP4 PUSH1 0x40 ADD MLOAD DUP6 GT PUSH2 0x8D9 JUMPI DUP4 PUSH1 0x40 ADD MLOAD SWAP5 POP DUP4 PUSH1 0x20 ADD MLOAD SWAP1 POP PUSH2 0x948 JUMP JUMPDEST DUP5 DUP4 PUSH1 0x40 ADD MLOAD GT PUSH2 0x8F7 JUMPI DUP3 PUSH1 0x40 ADD MLOAD SWAP5 POP DUP3 PUSH1 0x20 ADD MLOAD SWAP1 POP PUSH2 0x948 JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x40 ADD MLOAD DUP5 PUSH1 0x40 ADD MLOAD SUB SWAP1 POP PUSH1 0x0 DUP6 PUSH1 0x40 ADD MLOAD DUP8 SUB SWAP1 POP PUSH2 0x943 PUSH2 0x8AC DUP4 PUSH2 0x93D DUP5 PUSH2 0x937 DUP12 PUSH1 0x20 ADD MLOAD DUP12 PUSH1 0x20 ADD MLOAD PUSH2 0x96B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH2 0xB1D JUMP JUMPDEST SWAP1 PUSH2 0xBD0 JUMP JUMPDEST SWAP3 POP POP POP JUMPDEST PUSH2 0x958 DUP6 DUP8 SUB PUSH2 0x93D DUP5 DUP5 PUSH2 0x96B JUMP JUMPDEST SWAP12 SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST TIMESTAMP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 GT ISZERO PUSH2 0x9C2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP DUP1 DUP3 SUB JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x9D5 PUSH2 0xC37 JUMP JUMPDEST PUSH2 0x9DD PUSH2 0xC37 JUMP JUMPDEST PUSH2 0x300 SLOAD PUSH1 0xFF AND PUSH1 0x0 DUP1 PUSH2 0x100 DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xA5F JUMPI DUP8 PUSH1 0x0 DUP7 PUSH1 0xFF AND PUSH2 0x100 DUP2 LT PUSH2 0xA06 JUMPI INVALID JUMPDEST PUSH1 0x3 MUL ADD PUSH1 0x2 ADD SLOAD GT PUSH2 0xA50 JUMPI PUSH1 0x0 DUP6 PUSH1 0xFF AND PUSH2 0x100 DUP2 LT PUSH2 0xA24 JUMPI INVALID JUMPDEST PUSH1 0x3 MUL ADD PUSH1 0x2 ADD SLOAD PUSH1 0x0 EQ ISZERO PUSH2 0xA42 JUMPI DUP5 PUSH1 0x1 ADD SWAP4 POP DUP4 SWAP3 POP PUSH2 0xA5F JUMP JUMPDEST DUP5 SWAP4 POP DUP4 PUSH1 0x1 ADD SWAP3 POP PUSH2 0xA5F JUMP JUMPDEST PUSH1 0x0 NOT SWAP1 SWAP5 ADD SWAP4 PUSH1 0x1 ADD PUSH2 0x9EC JUMP JUMPDEST DUP2 DUP2 EQ ISZERO PUSH2 0xA7F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x4F0 SWAP1 PUSH2 0xC58 JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH1 0xFF AND PUSH2 0x100 DUP2 LT PUSH2 0xA90 JUMPI INVALID JUMPDEST PUSH1 0x3 MUL ADD PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD SLOAD DUP2 MSTORE POP POP SWAP7 POP PUSH1 0x0 DUP4 PUSH1 0xFF AND PUSH2 0x100 DUP2 LT PUSH2 0xAD0 JUMPI INVALID JUMPDEST PUSH1 0x3 MUL ADD PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE SWAP1 DUP2 PUSH1 0x0 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 DUP3 ADD SLOAD DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x2 DUP3 ADD SLOAD DUP2 MSTORE POP POP SWAP6 POP DUP7 PUSH1 0x40 ADD MLOAD DUP7 PUSH1 0x40 ADD MLOAD LT ISZERO PUSH2 0xB13 JUMPI DUP7 SWAP6 POP JUMPDEST POP POP POP POP POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0xB2C JUMPI POP PUSH1 0x0 PUSH2 0x9C7 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0xB39 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x405 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xCD0 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x405 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0xC26 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP2 DUP4 DUP2 PUSH2 0xC2F JUMPI INVALID JUMPDEST DIV SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x6 SWAP1 DUP3 ADD MSTORE PUSH6 0x86A8BE9C8A9 PUSH1 0xD3 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x5 SWAP1 DUP3 ADD MSTORE PUSH5 0x10D517D255 PUSH1 0xDA SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x5 SWAP1 DUP3 ADD MSTORE PUSH5 0x10D517D391 PUSH1 0xDA SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xFF AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP INVALID MSTORE8 PUSH2 0x6665 0x4D PUSH2 0x7468 GASPRICE KECCAK256 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F77A26469706673582212 KECCAK256 CALL 0x2B 0xA8 RETURN DUP4 SWAP2 CHAINID 0xB9 PUSH17 0x608A5FDCACE0064204F48BDF5D884AA9AE PUSH19 0xA3E1110D0764736F6C63430007060033000000 ", - "sourceMap": "407:2656:37:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1048:327;;;;;;;;;;;;;;;;-1:-1:-1;1048:327:37;;:::i;:::-;;;;;;;;;;;;;;;;735:36:48;;;;;;;;;;;;;;;;-1:-1:-1;735:36:48;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;1381:105:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;878:164;;;:::i;:::-;;778:36:48;;;:::i;1492:336:37:-;;;;;;;;;;;;;;;;-1:-1:-1;1492:336:37;;:::i;1048:327::-;1112:7;1132:12;1146:19;1167:23;1194:21;:19;:21::i;:::-;1131:84;;;;;;1230:8;1242:1;1230:13;:27;;;-1:-1:-1;;;;;;1247:10:37;;;1230:27;1226:76;;;-1:-1:-1;1280:11:37;-1:-1:-1;1273:18:37;;-1:-1:-1;1273:18:37;1226:76;1318:50;1329:8;1339:11;1352:15;1318:10;:50::i;:::-;1311:57;;;;;1048:327;;;;:::o;735:36:48:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;735:36:48;:::o;1381:105:37:-;1433:5;1457:11;-1:-1:-1;;;;;1457:20:37;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1457:22:37;;-1:-1:-1;1381:105:37;:::o;878:164::-;918:19;939:23;966:21;:19;:21::i;:::-;915:72;;;;;998:37;1006:11;1019:15;998:7;:37::i;:::-;878:164;;:::o;778:36:48:-;;;;;;:::o;1492:336:37:-;1560:7;1580:12;1594:19;1615:23;1642:21;:19;:21::i;:::-;1579:84;;;;;;1678:8;1690:1;1678:13;:27;;;-1:-1:-1;;;;;;1695:10:37;;;1678:27;1674:76;;;-1:-1:-1;1728:11:37;-1:-1:-1;1721:18:37;;-1:-1:-1;1721:18:37;1674:76;1767:54;1782:8;1792:11;1805:15;1767:14;:54::i;726:413:2:-;1086:20;1124:8;;;726:413::o;1834:532:37:-;1924:6;1944:18;1976:7;2009:12;2023:18;2045:23;2074:11;-1:-1:-1;;;;;2074:27:37;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2074:29:37;;;;;;;;;;;;;-1:-1:-1;2074:29:37;-1:-1:-1;2074:29:37;;-1:-1:-1;2074:29:37;-1:-1:-1;2174:1:37;2160:15;;2156:151;;;2191:28;2213:5;2191:21;:28::i;:::-;2272:24;2294:1;2286:5;:9;2272:13;:24::i;:::-;2233:63;;-1:-1:-1;2233:63:37;;-1:-1:-1;2233:63:37;-1:-1:-1;2156:151:37;2324:5;;-1:-1:-1;2343:15:37;;-1:-1:-1;;1834:532:37;;;:::o;382:813:47:-;659:9;;529:7;;-1:-1:-1;;;659:9:47;;-1:-1:-1;;;;;659:9:47;:21;;655:125;;703:66;723:8;733:11;746:22;703:19;:66::i;:::-;696:73;;;;655:125;903:14;;-1:-1:-1;;;;;903:14:47;882:17;:15;:17::i;:::-;:35;878:84;;;-1:-1:-1;940:11:47;;933:18;;878:84;972:44;980:11;993:22;972:7;:44::i;:::-;1051:17;:15;:17::i;:::-;1026:14;:43;;-1:-1:-1;;;;;;1026:43:47;-1:-1:-1;;;;;1026:43:47;;;;;;;;;;1093:66;1113:8;1123:11;1136:22;1093:19;:66::i;:::-;1079:11;:80;;;;-1:-1:-1;382:813:47;;;;;;:::o;821:1362:48:-;943:23;;;;:28;:62;;;;-1:-1:-1;975:25:48;;:30;943:62;939:276;;;1039:82;;;;;;;;;;;-1:-1:-1;1039:82:48;;;;;;;;;;;;1021:100;;;;;;;;;;;1140:44;;;;;;1039:82;;;;1140:44;:::i;:::-;;;;;;;;1198:7;;939:276;1490:23;;1440:34;;;;1490:23;;;1477:37;;;;;;1440:74;;;;;;;;1477:37;;;;;;;;;1440:74;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1532:49:48;;;1524:67;;;;-1:-1:-1;;;1524:67:48;;;;;;;:::i;:::-;;;;;;;;;1742:23;:25;;-1:-1:-1;;1742:25:48;;;;;;;;;;;;;;;1823;;;;;1898:196;;;;;;;;;;1976:21;;1898:196;1941:31;;;;1800:48;;;1976:35;;;1941:71;;;1898:196;;;;;;;;;;;;;1800:48;1898:196;;-1:-1:-1;;1871:23:48;1742:25;1858:37;;;;;;:236;;:37;;;;;;;;;:236;;;;;;;;;;;;;;;;;;;;;2152:23;;2110:66;;;;;;2123:5;;2130:20;;2152:23;;;;;2110:66;:::i;:::-;;;;;;;;821:1362;;;;:::o;1201:340:47:-;1393:14;;1349:7;;-1:-1:-1;;;;;1393:14:47;1372:17;:15;:17::i;:::-;:35;1368:84;;;-1:-1:-1;1430:11:47;;1423:18;;1368:84;1468:66;1488:8;1498:11;1511:22;1468:19;:66::i;:::-;1461:73;1201:340;-1:-1:-1;;;;1201:340:47:o;2917:144:37:-;3041:1;3032:6;-1:-1:-1;;;;;3032:10:37;;3024:30;;;;;-1:-1:-1;;;3024:30:37;;;;;;;;;;;;-1:-1:-1;;;3024:30:37;;;;;;;;;;;;;;;2917:144;:::o;2372:539::-;2469:6;2489:7;2510;2543:12;2557:18;2579:23;2608:11;-1:-1:-1;;;;;2608:24:37;;2633:6;2608:32;;;;;;;;;;;;;-1:-1:-1;;;;;2608:32:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2608:32:37;;;;;;;;;;;;;-1:-1:-1;2608:32:37;;-1:-1:-1;2608:32:37;-1:-1:-1;2650:192:37;2671:1;2657:11;:15;2650:192;;;2688:28;2710:5;2688:21;:28::i;:::-;2746:1;2738:5;:9;2730:17;;2800:11;-1:-1:-1;;;;;2800:24:37;;2825:5;2800:31;;;;;;;;;;;;;-1:-1:-1;;;;;2800:31:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2800:31:37;;;;;;;;;;;-1:-1:-1;2800:31:37;-1:-1:-1;2650:192:37;;;2859:5;;2874:11;;-1:-1:-1;2859:5:37;;-1:-1:-1;2372:539:37;-1:-1:-1;;2372:539:37:o;2189:2495:48:-;2413:23;;2342:7;;;;;;2413:23;;;2400:37;;;;;;;;;2361:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2451:17;:23;;;2478:1;2451:28;2447:104;;;2525:15;;-1:-1:-1;;;2525:15:48;;;;;;;:::i;2447:104::-;2561:24;2588:17;:15;:17::i;:::-;2561:44;-1:-1:-1;2615:23:48;2641:30;2561:44;2662:8;2641:20;:30::i;:::-;2615:56;;2682:29;2713:28;2745:44;2773:15;2745:27;:44::i;:::-;2681:108;;-1:-1:-1;2681:108:48;-1:-1:-1;2799:30:48;2844:260;2899:191;3011:61;3027:44;:16;3048:22;3027:20;:44::i;:::-;3011:11;;:15;:61::i;:::-;2900:84;2928:55;2955:17;:27;;;2928:22;:26;;:55;;;;:::i;:::-;2900:23;;;:27;:84::i;:::-;2899:90;;:191::i;:::-;2844:33;;;;;:37;:260::i;:::-;2799:305;;3568:29;3702:10;:20;;;3683:15;:39;3679:892;;3756:10;:20;;;3738:38;;3814:10;:26;;;3790:50;;3679:892;;;3961:15;3938:9;:19;;;:38;3934:637;;4010:9;:19;;;3992:37;;4067:9;:25;;;4043:49;;3934:637;;;4163:28;4216:10;:20;;;4194:9;:19;;;:42;4163:73;;4250:23;4294:10;:20;;;4276:15;:38;4250:64;;4352:208;4400:146;4508:20;4401:80;4465:15;4402:57;4432:10;:26;;;4402:9;:25;;;:29;;:57;;;;:::i;:::-;4401:63;;:80::i;:::-;4400:86;;:146::i;4352:208::-;4328:232;;3934:637;;;4588:89;4642:34;;;4588:49;:22;4615:21;4588:26;:49::i;:89::-;4581:96;2189:2495;-1:-1:-1;;;;;;;;;;;2189:2495:48:o;101:301:39:-;380:15;101:301;:::o;3136:155:1:-;3194:7;3226:1;3221;:6;;3213:49;;;;;-1:-1:-1;;;3213:49:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3279:5:1;;;3136:155;;;;;:::o;4690:1637:48:-;4799:29;;:::i;:::-;4830:28;;:::i;:::-;4888:23;;;;4874:11;;4888:23;4874:11;5089:574;5105:14;5101:1;:18;5089:574;;;5177:15;5144:12;5157:5;5144:19;;;;;;;;;;;;:29;;;:48;5140:492;;5352:12;5365:5;5352:19;;;;;;;;;;;;:29;;;5385:1;5352:34;5348:152;;;5445:5;5453:1;5445:9;5427:27;;;5410:44;;5476:5;;5348:152;5535:5;5517:23;;5575:15;5593:1;5575:19;5558:36;;5612:5;;5140:492;-1:-1:-1;;5645:7:48;;;;;5121:3;5089:574;;;5729:14;5724:1;:19;5720:115;;;5808:16;;-1:-1:-1;;;5808:16:48;;;;;;;:::i;5720:115::-;5858:12;5871:15;5858:29;;;;;;;;;;;;5845:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5909:12;5922:14;5909:28;;;;;;;;;;;;5897:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6252:10;:20;;;6230:9;:19;;;:42;6226:95;;;6300:10;6288:22;;6226:95;4690:1637;;;;;;;;:::o;3538:215:1:-;3596:7;3619:6;3615:20;;-1:-1:-1;3634:1:1;3627:8;;3615:20;3657:5;;;3661:1;3657;:5;:1;3680:5;;;;;:10;3672:56;;;;-1:-1:-1;;;3672:56:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2690:175;2748:7;2779:5;;;2802:6;;;;2794:46;;;;;-1:-1:-1;;;2794:46:1;;;;;;;;;;;;;;;;;;;;;;;;;;;4217:150;4275:7;4306:1;4302;:5;4294:44;;;;;-1:-1:-1;;;4294:44:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;4359:1;4355;:5;;;;;;;4217:150;-1:-1:-1;;;4217:150:1:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:329:49:-;216:2;198:21;;;255:1;235:18;;;228:29;-1:-1:-1;;;288:2:49;273:18;;266:36;334:2;319:18;;188:155::o;348:328::-;550:2;532:21;;;589:1;569:18;;;562:29;-1:-1:-1;;;622:2:49;607:18;;600:35;667:2;652:18;;522:154::o;681:328::-;883:2;865:21;;;922:1;902:18;;;895:29;-1:-1:-1;;;955:2:49;940:18;;933:35;1000:2;985:18;;855:154::o;1014:336::-;1222:25;;;1278:2;1263:18;;1256:34;;;;1338:4;1326:17;1321:2;1306:18;;1299:45;1210:2;1195:18;;1177:173::o" - }, - "methodIdentifiers": { - "cacheTwap(uint256)": "1d1a111a", - "currentObservationIndex()": "aed3aff7", - "decimals()": "313ce567", - "getPrice(uint256)": "e7572230", - "observations(uint256)": "252c09d7", - "update()": "a2e62045" - } - }, - "storageLayout": { - "storage": [ - { - "astId": 9238, - "contract": "contracts/ChainlinkPriceFeed.sol:ChainlinkPriceFeed", - "label": "observations", - "offset": 0, - "slot": "0", - "type": "t_array(t_struct(Observation)9226_storage)256_storage" - }, - { - "astId": 9240, - "contract": "contracts/ChainlinkPriceFeed.sol:ChainlinkPriceFeed", - "label": "currentObservationIndex", - "offset": 0, - "slot": "768", - "type": "t_uint8" - }, - { - "astId": 9112, - "contract": "contracts/ChainlinkPriceFeed.sol:ChainlinkPriceFeed", - "label": "_cachedTwap", - "offset": 0, - "slot": "769", - "type": "t_uint256" - }, - { - "astId": 9114, - "contract": "contracts/ChainlinkPriceFeed.sol:ChainlinkPriceFeed", - "label": "_lastUpdatedAt", - "offset": 0, - "slot": "770", - "type": "t_uint160" - }, - { - "astId": 9116, - "contract": "contracts/ChainlinkPriceFeed.sol:ChainlinkPriceFeed", - "label": "_interval", - "offset": 20, - "slot": "770", - "type": "t_uint80" - } - ], - "types": { - "t_array(t_struct(Observation)9226_storage)256_storage": { - "base": "t_struct(Observation)9226_storage", - "encoding": "inplace", - "label": "struct CumulativeTwap.Observation[256]", - "numberOfBytes": "24576" - }, - "t_struct(Observation)9226_storage": { - "encoding": "inplace", - "label": "struct CumulativeTwap.Observation", - "members": [ - { - "astId": 9221, - "contract": "contracts/ChainlinkPriceFeed.sol:ChainlinkPriceFeed", - "label": "price", - "offset": 0, - "slot": "0", - "type": "t_uint256" - }, - { - "astId": 9223, - "contract": "contracts/ChainlinkPriceFeed.sol:ChainlinkPriceFeed", - "label": "priceCumulative", - "offset": 0, - "slot": "1", - "type": "t_uint256" - }, - { - "astId": 9225, - "contract": "contracts/ChainlinkPriceFeed.sol:ChainlinkPriceFeed", - "label": "timestamp", - "offset": 0, - "slot": "2", - "type": "t_uint256" - } - ], - "numberOfBytes": "96" - }, - "t_uint160": { - "encoding": "inplace", - "label": "uint160", - "numberOfBytes": "20" - }, - "t_uint256": { - "encoding": "inplace", - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint8": { - "encoding": "inplace", - "label": "uint8", - "numberOfBytes": "1" - }, - "t_uint80": { - "encoding": "inplace", - "label": "uint80", - "numberOfBytes": "10" - } - } - } - } - }, - "contracts/EmergencyPriceFeed.sol": { - "EmergencyPriceFeed": { - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "poolArg", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "interval", - "type": "uint256" - } - ], - "name": "cacheTwap", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "decimals", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "interval", - "type": "uint256" - } - ], - "name": "getPrice", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "pool", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "evm": { - "bytecode": { - "generatedSources": [ - { - "ast": { - "nodeType": "YulBlock", - "src": "0:662:49", - "statements": [ - { - "nodeType": "YulBlock", - "src": "6:3:49", - "statements": [] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "95:229:49", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "141:26:49", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "150:6:49" - }, - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "158:6:49" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "143:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "143:22:49" - }, - "nodeType": "YulExpressionStatement", - "src": "143:22:49" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "116:7:49" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "125:9:49" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "112:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "112:23:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "137:2:49", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "108:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "108:32:49" - }, - "nodeType": "YulIf", - "src": "105:2:49" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "176:29:49", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "195:9:49" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "189:5:49" - }, - "nodeType": "YulFunctionCall", - "src": "189:16:49" - }, - "variables": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "180:5:49", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "268:26:49", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "277:6:49" - }, - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "285:6:49" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "270:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "270:22:49" - }, - "nodeType": "YulExpressionStatement", - "src": "270:22:49" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "227:5:49" - }, - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "238:5:49" - }, - { - "arguments": [ - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "253:3:49", - "type": "", - "value": "160" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "258:1:49", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "249:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "249:11:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "262:1:49", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "245:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "245:19:49" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "234:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "234:31:49" - } - ], - "functionName": { - "name": "eq", - "nodeType": "YulIdentifier", - "src": "224:2:49" - }, - "nodeType": "YulFunctionCall", - "src": "224:42:49" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "217:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "217:50:49" - }, - "nodeType": "YulIf", - "src": "214:2:49" - }, - { - "nodeType": "YulAssignment", - "src": "303:15:49", - "value": { - "name": "value", - "nodeType": "YulIdentifier", - "src": "313:5:49" - }, - "variableNames": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "303:6:49" - } - ] - } - ] - }, - "name": "abi_decode_tuple_t_address_fromMemory", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "61:9:49", - "type": "" - }, - { - "name": "dataEnd", - "nodeType": "YulTypedName", - "src": "72:7:49", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "84:6:49", - "type": "" - } - ], - "src": "14:310:49" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "503:157:49", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "520:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "531:2:49", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "513:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "513:21:49" - }, - "nodeType": "YulExpressionStatement", - "src": "513:21:49" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "554:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "565:2:49", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "550:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "550:18:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "570:1:49", - "type": "", - "value": "8" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "543:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "543:29:49" - }, - "nodeType": "YulExpressionStatement", - "src": "543:29:49" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "592:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "603:2:49", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "588:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "588:18:49" - }, - { - "kind": "string", - "nodeType": "YulLiteral", - "src": "608:10:49", - "type": "", - "value": "EPF_EANC" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "581:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "581:38:49" - }, - "nodeType": "YulExpressionStatement", - "src": "581:38:49" - }, - { - "nodeType": "YulAssignment", - "src": "628:26:49", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "640:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "651:2:49", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "636:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "636:18:49" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "628:4:49" - } - ] - } - ] - }, - "name": "abi_encode_tuple_t_stringliteral_447492cad80d8a0cb85741c2e8b9f696f44a5554c155d021135870315881a1cd__to_t_string_memory_ptr__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "480:9:49", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "494:4:49", - "type": "" - } - ], - "src": "329:331:49" - } - ] - }, - "contents": "{\n { }\n function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n let value := mload(headStart)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(value0, value0) }\n value0 := value\n }\n function abi_encode_tuple_t_stringliteral_447492cad80d8a0cb85741c2e8b9f696f44a5554c155d021135870315881a1cd__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 8)\n mstore(add(headStart, 64), \"EPF_EANC\")\n tail := add(headStart, 96)\n }\n}", - "id": 49, - "language": "Yul", - "name": "#utility.yul" - } - ], - "linkReferences": {}, - "object": "608060405234801561001057600080fd5b50604051610b80380380610b8083398101604081905261002f9161009b565b61004b816001600160a01b031661009560201b6101011760201c565b6100705760405162461bcd60e51b8152600401610067906100c9565b60405180910390fd5b600080546001600160a01b0319166001600160a01b03929092169190911790556100eb565b3b151590565b6000602082840312156100ac578081fd5b81516001600160a01b03811681146100c2578182fd5b9392505050565b6020808252600890820152674550465f45414e4360c01b604082015260600190565b610a86806100fa6000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806316f0115b146100515780631d1a111a1461006f578063313ce5671461008f578063e7572230146100a4575b600080fd5b6100596100b7565b6040516100669190610953565b60405180910390f35b61008261007d36600461093b565b6100c6565b60405161006691906109f7565b6100976100cc565b6040516100669190610a00565b6100826100b236600461093b565b6100d1565b6000546001600160a01b031681565b50600090565b601290565b6000806100ed6100e86100e385610107565b610136565b610320565b90506100f881610340565b9150505b919050565b3b151590565b8063ffffffff811681146100fc5760405162461bcd60e51b815260040161012d906109b1565b60405180910390fd5b6000600a8263ffffffff1610156101de5760008060009054906101000a90046001600160a01b03166001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561019657600080fd5b505afa1580156101aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101ce919061089f565b509496506100fc95505050505050565b604080516002808252606082018352600092602083019080368337019050509050828160008151811061020d57fe5b602002602001019063ffffffff16908163ffffffff168152505060008160018151811061023657fe5b63ffffffff909216602092830291909101909101526000805460405163883bdbfd60e01b81526001600160a01b039091169063883bdbfd9061027c908590600401610967565b60006040518083038186803b15801561029457600080fd5b505afa1580156102a8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526102d091908101906107d7565b5090506103188463ffffffff16826000815181106102ea57fe5b6020026020010151836001815181106102ff57fe5b60200260200101510360060b8161031257fe5b05610359565b949350505050565b600061033a6001600160a01b03831680600160601b61068b565b92915050565b600061033a82670de0b6b3a7640000600160601b61068b565b60008060008360020b12610370578260020b610378565b8260020b6000035b9050620d89e88111156103b6576040805162461bcd60e51b81526020600482015260016024820152601560fa1b604482015290519081900360640190fd5b6000600182166103ca57600160801b6103dc565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615610410576ffff97272373d413259a46990580e213a0260801c5b600482161561042f576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b600882161561044e576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b601082161561046d576fffcb9843d60f6159c9db58835c9266440260801c5b602082161561048c576fff973b41fa98c081472e6896dfb254c00260801c5b60408216156104ab576fff2ea16466c96a3843ec78b326b528610260801c5b60808216156104ca576ffe5dee046a99a2a811c461f1969c30530260801c5b6101008216156104ea576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b61020082161561050a576ff987a7253ac413176f2b074cf7815e540260801c5b61040082161561052a576ff3392b0822b70005940c7a398e4b70f30260801c5b61080082161561054a576fe7159475a2c29b7443b29c7fa6e889d90260801c5b61100082161561056a576fd097f3bdfd2022b8845ad8f792aa58250260801c5b61200082161561058a576fa9f746462d870fdf8a65dc1f90e061e50260801c5b6140008216156105aa576f70d869a156d2a1b890bb3df62baf32f70260801c5b6180008216156105ca576f31be135f97d08fd981231505542fcfa60260801c5b620100008216156105eb576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b6202000082161561060b576e5d6af8dedb81196699c329225ee6040260801c5b6204000082161561062a576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615610647576b048a170391f7dc42444e8fa20260801c5b60008460020b131561066257806000198161065e57fe5b0490505b640100000000810615610676576001610679565b60005b60ff16602082901c0192505050919050565b60008080600019858709868602925082811090839003039050806106c157600084116106b657600080fd5b508290049050610734565b8084116106cd57600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b600082601f83011261074b578081fd5b8151602061076061075b83610a32565b610a0e565b828152818101908583018385028701840188101561077c578586fd5b855b858110156107a15761078f826107ae565b8452928401929084019060010161077e565b5090979650505050505050565b80516001600160a01b03811681146100fc57600080fd5b805161ffff811681146100fc57600080fd5b600080604083850312156107e9578182fd5b825167ffffffffffffffff80821115610800578384fd5b818501915085601f830112610813578384fd5b8151602061082361075b83610a32565b82815281810190858301838502870184018b101561083f578889fd5b8896505b8487101561086f5780518060060b811461085b57898afd5b835260019690960195918301918301610843565b5091880151919650909350505080821115610888578283fd5b506108958582860161073b565b9150509250929050565b600080600080600080600060e0888a0312156108b9578283fd5b6108c2886107ae565b965060208801518060020b81146108d7578384fd5b95506108e5604089016107c5565b94506108f3606089016107c5565b9350610901608089016107c5565b925060a088015160ff81168114610916578283fd5b60c0890151909250801515811461092b578182fd5b8091505092959891949750929550565b60006020828403121561094c578081fd5b5035919050565b6001600160a01b0391909116815260200190565b6020808252825182820181905260009190848201906040850190845b818110156109a557835163ffffffff1683529284019291840191600101610983565b50909695505050505050565b60208082526026908201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360408201526532206269747360d01b606082015260800190565b90815260200190565b60ff91909116815260200190565b60405181810167ffffffffffffffff81118282101715610a2a57fe5b604052919050565b600067ffffffffffffffff821115610a4657fe5b506020908102019056fea26469706673582212200c97e0c2a98090aaccb1938319c204f72b241ea43518e257984f60669902813464736f6c63430007060033", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xB80 CODESIZE SUB DUP1 PUSH2 0xB80 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0x9B JUMP JUMPDEST PUSH2 0x4B DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x95 PUSH1 0x20 SHL PUSH2 0x101 OR PUSH1 0x20 SHR JUMP JUMPDEST PUSH2 0x70 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x67 SWAP1 PUSH2 0xC9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0xEB JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xAC JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xC2 JUMPI DUP2 DUP3 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x8 SWAP1 DUP3 ADD MSTORE PUSH8 0x4550465F45414E43 PUSH1 0xC0 SHL PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH2 0xA86 DUP1 PUSH2 0xFA PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x16F0115B EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x1D1A111A EQ PUSH2 0x6F JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x8F JUMPI DUP1 PUSH4 0xE7572230 EQ PUSH2 0xA4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x59 PUSH2 0xB7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x66 SWAP2 SWAP1 PUSH2 0x953 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x82 PUSH2 0x7D CALLDATASIZE PUSH1 0x4 PUSH2 0x93B JUMP JUMPDEST PUSH2 0xC6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x66 SWAP2 SWAP1 PUSH2 0x9F7 JUMP JUMPDEST PUSH2 0x97 PUSH2 0xCC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x66 SWAP2 SWAP1 PUSH2 0xA00 JUMP JUMPDEST PUSH2 0x82 PUSH2 0xB2 CALLDATASIZE PUSH1 0x4 PUSH2 0x93B JUMP JUMPDEST PUSH2 0xD1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST POP PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x12 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xED PUSH2 0xE8 PUSH2 0xE3 DUP6 PUSH2 0x107 JUMP JUMPDEST PUSH2 0x136 JUMP JUMPDEST PUSH2 0x320 JUMP JUMPDEST SWAP1 POP PUSH2 0xF8 DUP2 PUSH2 0x340 JUMP JUMPDEST SWAP2 POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST DUP1 PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xFC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x12D SWAP1 PUSH2 0x9B1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xA DUP3 PUSH4 0xFFFFFFFF AND LT ISZERO PUSH2 0x1DE JUMPI PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x3850C7BD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0xE0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x196 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1AA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1CE SWAP2 SWAP1 PUSH2 0x89F JUMP JUMPDEST POP SWAP5 SWAP7 POP PUSH2 0xFC SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 ADD DUP4 MSTORE PUSH1 0x0 SWAP3 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x20D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH4 0xFFFFFFFF AND SWAP1 DUP2 PUSH4 0xFFFFFFFF AND DUP2 MSTORE POP POP PUSH1 0x0 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x236 JUMPI INVALID JUMPDEST PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x883BDBFD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x883BDBFD SWAP1 PUSH2 0x27C SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x967 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x294 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2A8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x2D0 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x7D7 JUMP JUMPDEST POP SWAP1 POP PUSH2 0x318 DUP5 PUSH4 0xFFFFFFFF AND DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2EA JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP4 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x2FF JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SUB PUSH1 0x6 SIGNEXTEND DUP2 PUSH2 0x312 JUMPI INVALID JUMPDEST SDIV PUSH2 0x359 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x33A PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP1 PUSH1 0x1 PUSH1 0x60 SHL PUSH2 0x68B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x33A DUP3 PUSH8 0xDE0B6B3A7640000 PUSH1 0x1 PUSH1 0x60 SHL PUSH2 0x68B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH1 0x2 SIGNEXTEND SLT PUSH2 0x370 JUMPI DUP3 PUSH1 0x2 SIGNEXTEND PUSH2 0x378 JUMP JUMPDEST DUP3 PUSH1 0x2 SIGNEXTEND PUSH1 0x0 SUB JUMPDEST SWAP1 POP PUSH3 0xD89E8 DUP2 GT ISZERO PUSH2 0x3B6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0xFA SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 AND PUSH2 0x3CA JUMPI PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0x3DC JUMP JUMPDEST PUSH16 0xFFFCB933BD6FAD37AA2D162D1A594001 JUMPDEST PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x2 DUP3 AND ISZERO PUSH2 0x410 JUMPI PUSH16 0xFFF97272373D413259A46990580E213A MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x4 DUP3 AND ISZERO PUSH2 0x42F JUMPI PUSH16 0xFFF2E50F5F656932EF12357CF3C7FDCC MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x8 DUP3 AND ISZERO PUSH2 0x44E JUMPI PUSH16 0xFFE5CACA7E10E4E61C3624EAA0941CD0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x10 DUP3 AND ISZERO PUSH2 0x46D JUMPI PUSH16 0xFFCB9843D60F6159C9DB58835C926644 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x20 DUP3 AND ISZERO PUSH2 0x48C JUMPI PUSH16 0xFF973B41FA98C081472E6896DFB254C0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x40 DUP3 AND ISZERO PUSH2 0x4AB JUMPI PUSH16 0xFF2EA16466C96A3843EC78B326B52861 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x80 DUP3 AND ISZERO PUSH2 0x4CA JUMPI PUSH16 0xFE5DEE046A99A2A811C461F1969C3053 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x100 DUP3 AND ISZERO PUSH2 0x4EA JUMPI PUSH16 0xFCBE86C7900A88AEDCFFC83B479AA3A4 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x200 DUP3 AND ISZERO PUSH2 0x50A JUMPI PUSH16 0xF987A7253AC413176F2B074CF7815E54 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x400 DUP3 AND ISZERO PUSH2 0x52A JUMPI PUSH16 0xF3392B0822B70005940C7A398E4B70F3 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x800 DUP3 AND ISZERO PUSH2 0x54A JUMPI PUSH16 0xE7159475A2C29B7443B29C7FA6E889D9 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x1000 DUP3 AND ISZERO PUSH2 0x56A JUMPI PUSH16 0xD097F3BDFD2022B8845AD8F792AA5825 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x2000 DUP3 AND ISZERO PUSH2 0x58A JUMPI PUSH16 0xA9F746462D870FDF8A65DC1F90E061E5 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x4000 DUP3 AND ISZERO PUSH2 0x5AA JUMPI PUSH16 0x70D869A156D2A1B890BB3DF62BAF32F7 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x8000 DUP3 AND ISZERO PUSH2 0x5CA JUMPI PUSH16 0x31BE135F97D08FD981231505542FCFA6 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x10000 DUP3 AND ISZERO PUSH2 0x5EB JUMPI PUSH16 0x9AA508B5B7A84E1C677DE54F3E99BC9 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x20000 DUP3 AND ISZERO PUSH2 0x60B JUMPI PUSH15 0x5D6AF8DEDB81196699C329225EE604 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x40000 DUP3 AND ISZERO PUSH2 0x62A JUMPI PUSH14 0x2216E584F5FA1EA926041BEDFE98 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x80000 DUP3 AND ISZERO PUSH2 0x647 JUMPI PUSH12 0x48A170391F7DC42444E8FA2 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND SGT ISZERO PUSH2 0x662 JUMPI DUP1 PUSH1 0x0 NOT DUP2 PUSH2 0x65E JUMPI INVALID JUMPDEST DIV SWAP1 POP JUMPDEST PUSH5 0x100000000 DUP2 MOD ISZERO PUSH2 0x676 JUMPI PUSH1 0x1 PUSH2 0x679 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0xFF AND PUSH1 0x20 DUP3 SWAP1 SHR ADD SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH1 0x0 NOT DUP6 DUP8 MULMOD DUP7 DUP7 MUL SWAP3 POP DUP3 DUP2 LT SWAP1 DUP4 SWAP1 SUB SUB SWAP1 POP DUP1 PUSH2 0x6C1 JUMPI PUSH1 0x0 DUP5 GT PUSH2 0x6B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP3 SWAP1 DIV SWAP1 POP PUSH2 0x734 JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0x6CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP7 DUP9 MULMOD PUSH1 0x0 DUP7 DUP2 SUB DUP8 AND SWAP7 DUP8 SWAP1 DIV SWAP7 PUSH1 0x2 PUSH1 0x3 DUP10 MUL DUP2 XOR DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL SWAP1 SWAP2 SUB MUL SWAP2 DUP2 SWAP1 SUB DUP2 SWAP1 DIV PUSH1 0x1 ADD DUP7 DUP5 GT SWAP1 SWAP6 SUB SWAP5 SWAP1 SWAP5 MUL SWAP2 SWAP1 SWAP5 SUB SWAP3 SWAP1 SWAP3 DIV SWAP2 SWAP1 SWAP2 OR SWAP2 SWAP1 SWAP2 MUL SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x74B JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 PUSH2 0x760 PUSH2 0x75B DUP4 PUSH2 0xA32 JUMP JUMPDEST PUSH2 0xA0E JUMP JUMPDEST DUP3 DUP2 MSTORE DUP2 DUP2 ADD SWAP1 DUP6 DUP4 ADD DUP4 DUP6 MUL DUP8 ADD DUP5 ADD DUP9 LT ISZERO PUSH2 0x77C JUMPI DUP6 DUP7 REVERT JUMPDEST DUP6 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x7A1 JUMPI PUSH2 0x78F DUP3 PUSH2 0x7AE JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x77E JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0xFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x7E9 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x800 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x813 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 PUSH2 0x823 PUSH2 0x75B DUP4 PUSH2 0xA32 JUMP JUMPDEST DUP3 DUP2 MSTORE DUP2 DUP2 ADD SWAP1 DUP6 DUP4 ADD DUP4 DUP6 MUL DUP8 ADD DUP5 ADD DUP12 LT ISZERO PUSH2 0x83F JUMPI DUP9 DUP10 REVERT JUMPDEST DUP9 SWAP7 POP JUMPDEST DUP5 DUP8 LT ISZERO PUSH2 0x86F JUMPI DUP1 MLOAD DUP1 PUSH1 0x6 SIGNEXTEND DUP2 EQ PUSH2 0x85B JUMPI DUP10 DUP11 REVERT JUMPDEST DUP4 MSTORE PUSH1 0x1 SWAP7 SWAP1 SWAP7 ADD SWAP6 SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH2 0x843 JUMP JUMPDEST POP SWAP2 DUP9 ADD MLOAD SWAP2 SWAP7 POP SWAP1 SWAP4 POP POP POP DUP1 DUP3 GT ISZERO PUSH2 0x888 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x895 DUP6 DUP3 DUP7 ADD PUSH2 0x73B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x8B9 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x8C2 DUP9 PUSH2 0x7AE JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD MLOAD DUP1 PUSH1 0x2 SIGNEXTEND DUP2 EQ PUSH2 0x8D7 JUMPI DUP4 DUP5 REVERT JUMPDEST SWAP6 POP PUSH2 0x8E5 PUSH1 0x40 DUP10 ADD PUSH2 0x7C5 JUMP JUMPDEST SWAP5 POP PUSH2 0x8F3 PUSH1 0x60 DUP10 ADD PUSH2 0x7C5 JUMP JUMPDEST SWAP4 POP PUSH2 0x901 PUSH1 0x80 DUP10 ADD PUSH2 0x7C5 JUMP JUMPDEST SWAP3 POP PUSH1 0xA0 DUP9 ADD MLOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x916 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0xC0 DUP10 ADD MLOAD SWAP1 SWAP3 POP DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x92B JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x94C JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x9A5 JUMPI DUP4 MLOAD PUSH4 0xFFFFFFFF AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x983 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x26 SWAP1 DUP3 ADD MSTORE PUSH32 0x53616665436173743A2076616C756520646F65736E27742066697420696E2033 PUSH1 0x40 DUP3 ADD MSTORE PUSH6 0x322062697473 PUSH1 0xD0 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0xFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0xA2A JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0xA46 JUMPI INVALID JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC SWAP8 0xE0 0xC2 0xA9 DUP1 SWAP1 0xAA 0xCC 0xB1 SWAP4 DUP4 NOT 0xC2 DIV 0xF7 0x2B 0x24 0x1E LOG4 CALLDATALOAD XOR 0xE2 JUMPI SWAP9 0x4F PUSH1 0x66 SWAP10 MUL DUP2 CALLVALUE PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ", - "sourceMap": "614:2627:38:-:0;;;802:171;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;899:29;907:7;-1:-1:-1;;;;;899:27:38;;;;;;:29;;:::i;:::-;891:50;;;;-1:-1:-1;;;891:50:38;;;;;;;:::i;:::-;;;;;;;;;952:4;:14;;-1:-1:-1;;;;;;952:14:38;-1:-1:-1;;;;;952:14:38;;;;;;;;;;614:2627;;726:413:2;1086:20;1124:8;;;726:413::o;14:310:49:-;;137:2;125:9;116:7;112:23;108:32;105:2;;;158:6;150;143:22;105:2;189:16;;-1:-1:-1;;;;;234:31:49;;224:42;;214:2;;285:6;277;270:22;214:2;313:5;95:229;-1:-1:-1;;;95:229:49:o;329:331::-;531:2;513:21;;;570:1;550:18;;;543:29;-1:-1:-1;;;603:2:49;588:18;;581:38;651:2;636:18;;503:157::o;:::-;614:2627:38;;;;;;" - }, - "deployedBytecode": { - "generatedSources": [ - { - "ast": { - "nodeType": "YulBlock", - "src": "0:5679:49", - "statements": [ - { - "nodeType": "YulBlock", - "src": "6:3:49", - "statements": [] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "95:645:49", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "144:24:49", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "array", - "nodeType": "YulIdentifier", - "src": "153:5:49" - }, - { - "name": "array", - "nodeType": "YulIdentifier", - "src": "160:5:49" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "146:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "146:20:49" - }, - "nodeType": "YulExpressionStatement", - "src": "146:20:49" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "123:6:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "131:4:49", - "type": "", - "value": "0x1f" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "119:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "119:17:49" - }, - { - "name": "end", - "nodeType": "YulIdentifier", - "src": "138:3:49" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "115:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "115:27:49" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "108:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "108:35:49" - }, - "nodeType": "YulIf", - "src": "105:2:49" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "177:23:49", - "value": { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "193:6:49" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "187:5:49" - }, - "nodeType": "YulFunctionCall", - "src": "187:13:49" - }, - "variables": [ - { - "name": "_1", - "nodeType": "YulTypedName", - "src": "181:2:49", - "type": "" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "209:14:49", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "219:4:49", - "type": "", - "value": "0x20" - }, - "variables": [ - { - "name": "_2", - "nodeType": "YulTypedName", - "src": "213:2:49", - "type": "" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "232:74:49", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "302:2:49" - } - ], - "functionName": { - "name": "array_allocation_size_t_array$_t_int56_$dyn", - "nodeType": "YulIdentifier", - "src": "258:43:49" - }, - "nodeType": "YulFunctionCall", - "src": "258:47:49" - } - ], - "functionName": { - "name": "allocateMemory", - "nodeType": "YulIdentifier", - "src": "243:14:49" - }, - "nodeType": "YulFunctionCall", - "src": "243:63:49" - }, - "variables": [ - { - "name": "dst", - "nodeType": "YulTypedName", - "src": "236:3:49", - "type": "" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "315:16:49", - "value": { - "name": "dst", - "nodeType": "YulIdentifier", - "src": "328:3:49" - }, - "variables": [ - { - "name": "dst_1", - "nodeType": "YulTypedName", - "src": "319:5:49", - "type": "" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "dst", - "nodeType": "YulIdentifier", - "src": "347:3:49" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "352:2:49" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "340:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "340:15:49" - }, - "nodeType": "YulExpressionStatement", - "src": "340:15:49" - }, - { - "nodeType": "YulAssignment", - "src": "364:19:49", - "value": { - "arguments": [ - { - "name": "dst", - "nodeType": "YulIdentifier", - "src": "375:3:49" - }, - { - "name": "_2", - "nodeType": "YulIdentifier", - "src": "380:2:49" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "371:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "371:12:49" - }, - "variableNames": [ - { - "name": "dst", - "nodeType": "YulIdentifier", - "src": "364:3:49" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "392:26:49", - "value": { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "407:6:49" - }, - { - "name": "_2", - "nodeType": "YulIdentifier", - "src": "415:2:49" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "403:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "403:15:49" - }, - "variables": [ - { - "name": "src", - "nodeType": "YulTypedName", - "src": "396:3:49", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "473:24:49", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "array", - "nodeType": "YulIdentifier", - "src": "482:5:49" - }, - { - "name": "array", - "nodeType": "YulIdentifier", - "src": "489:5:49" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "475:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "475:20:49" - }, - "nodeType": "YulExpressionStatement", - "src": "475:20:49" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "441:6:49" - }, - { - "arguments": [ - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "453:2:49" - }, - { - "name": "_2", - "nodeType": "YulIdentifier", - "src": "457:2:49" - } - ], - "functionName": { - "name": "mul", - "nodeType": "YulIdentifier", - "src": "449:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "449:11:49" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "437:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "437:24:49" - }, - { - "name": "_2", - "nodeType": "YulIdentifier", - "src": "463:2:49" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "433:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "433:33:49" - }, - { - "name": "end", - "nodeType": "YulIdentifier", - "src": "468:3:49" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "430:2:49" - }, - "nodeType": "YulFunctionCall", - "src": "430:42:49" - }, - "nodeType": "YulIf", - "src": "427:2:49" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "506:14:49", - "value": { - "name": "array", - "nodeType": "YulIdentifier", - "src": "515:5:49" - }, - "variables": [ - { - "name": "i", - "nodeType": "YulTypedName", - "src": "510:1:49", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "574:137:49", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "dst", - "nodeType": "YulIdentifier", - "src": "595:3:49" - }, - { - "arguments": [ - { - "name": "src", - "nodeType": "YulIdentifier", - "src": "632:3:49" - } - ], - "functionName": { - "name": "abi_decode_t_uint160_fromMemory", - "nodeType": "YulIdentifier", - "src": "600:31:49" - }, - "nodeType": "YulFunctionCall", - "src": "600:36:49" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "588:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "588:49:49" - }, - "nodeType": "YulExpressionStatement", - "src": "588:49:49" - }, - { - "nodeType": "YulAssignment", - "src": "650:19:49", - "value": { - "arguments": [ - { - "name": "dst", - "nodeType": "YulIdentifier", - "src": "661:3:49" - }, - { - "name": "_2", - "nodeType": "YulIdentifier", - "src": "666:2:49" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "657:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "657:12:49" - }, - "variableNames": [ - { - "name": "dst", - "nodeType": "YulIdentifier", - "src": "650:3:49" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "682:19:49", - "value": { - "arguments": [ - { - "name": "src", - "nodeType": "YulIdentifier", - "src": "693:3:49" - }, - { - "name": "_2", - "nodeType": "YulIdentifier", - "src": "698:2:49" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "689:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "689:12:49" - }, - "variableNames": [ - { - "name": "src", - "nodeType": "YulIdentifier", - "src": "682:3:49" - } - ] - } - ] - }, - "condition": { - "arguments": [ - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "540:1:49" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "543:2:49" - } - ], - "functionName": { - "name": "lt", - "nodeType": "YulIdentifier", - "src": "537:2:49" - }, - "nodeType": "YulFunctionCall", - "src": "537:9:49" - }, - "nodeType": "YulForLoop", - "post": { - "nodeType": "YulBlock", - "src": "547:18:49", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "549:14:49", - "value": { - "arguments": [ - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "558:1:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "561:1:49", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "554:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "554:9:49" - }, - "variableNames": [ - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "549:1:49" - } - ] - } - ] - }, - "pre": { - "nodeType": "YulBlock", - "src": "533:3:49", - "statements": [] - }, - "src": "529:182:49" - }, - { - "nodeType": "YulAssignment", - "src": "720:14:49", - "value": { - "name": "dst_1", - "nodeType": "YulIdentifier", - "src": "729:5:49" - }, - "variableNames": [ - { - "name": "array", - "nodeType": "YulIdentifier", - "src": "720:5:49" - } - ] - } - ] - }, - "name": "abi_decode_t_array$_t_uint160_$dyn_fromMemory", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "69:6:49", - "type": "" - }, - { - "name": "end", - "nodeType": "YulTypedName", - "src": "77:3:49", - "type": "" - } - ], - "returnVariables": [ - { - "name": "array", - "nodeType": "YulTypedName", - "src": "85:5:49", - "type": "" - } - ], - "src": "14:726:49" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "807:117:49", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "817:22:49", - "value": { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "832:6:49" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "826:5:49" - }, - "nodeType": "YulFunctionCall", - "src": "826:13:49" - }, - "variableNames": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "817:5:49" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "902:16:49", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "911:1:49", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "914:1:49", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "904:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "904:12:49" - }, - "nodeType": "YulExpressionStatement", - "src": "904:12:49" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "861:5:49" - }, - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "872:5:49" - }, - { - "arguments": [ - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "887:3:49", - "type": "", - "value": "160" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "892:1:49", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "883:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "883:11:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "896:1:49", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "879:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "879:19:49" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "868:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "868:31:49" - } - ], - "functionName": { - "name": "eq", - "nodeType": "YulIdentifier", - "src": "858:2:49" - }, - "nodeType": "YulFunctionCall", - "src": "858:42:49" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "851:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "851:50:49" - }, - "nodeType": "YulIf", - "src": "848:2:49" - } - ] - }, - "name": "abi_decode_t_uint160_fromMemory", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "786:6:49", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "797:5:49", - "type": "" - } - ], - "src": "745:179:49" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "990:104:49", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "1000:22:49", - "value": { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "1015:6:49" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "1009:5:49" - }, - "nodeType": "YulFunctionCall", - "src": "1009:13:49" - }, - "variableNames": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "1000:5:49" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "1072:16:49", - "statements": [ - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1081:1:49", - "type": "", - "value": "0" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1084:1:49", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "1074:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "1074:12:49" - }, - "nodeType": "YulExpressionStatement", - "src": "1074:12:49" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "1044:5:49" - }, - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "1055:5:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1062:6:49", - "type": "", - "value": "0xffff" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "1051:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "1051:18:49" - } - ], - "functionName": { - "name": "eq", - "nodeType": "YulIdentifier", - "src": "1041:2:49" - }, - "nodeType": "YulFunctionCall", - "src": "1041:29:49" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "1034:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "1034:37:49" - }, - "nodeType": "YulIf", - "src": "1031:2:49" - } - ] - }, - "name": "abi_decode_t_uint16_fromMemory", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "969:6:49", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "980:5:49", - "type": "" - } - ], - "src": "929:165:49" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "1245:1175:49", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "1291:26:49", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "1300:6:49" - }, - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "1308:6:49" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "1293:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "1293:22:49" - }, - "nodeType": "YulExpressionStatement", - "src": "1293:22:49" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "1266:7:49" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1275:9:49" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "1262:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "1262:23:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1287:2:49", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "1258:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "1258:32:49" - }, - "nodeType": "YulIf", - "src": "1255:2:49" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "1326:30:49", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1346:9:49" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "1340:5:49" - }, - "nodeType": "YulFunctionCall", - "src": "1340:16:49" - }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "1330:6:49", - "type": "" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "1365:28:49", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1375:18:49", - "type": "", - "value": "0xffffffffffffffff" - }, - "variables": [ - { - "name": "_1", - "nodeType": "YulTypedName", - "src": "1369:2:49", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "1420:26:49", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "1429:6:49" - }, - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "1437:6:49" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "1422:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "1422:22:49" - }, - "nodeType": "YulExpressionStatement", - "src": "1422:22:49" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "1408:6:49" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "1416:2:49" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "1405:2:49" - }, - "nodeType": "YulFunctionCall", - "src": "1405:14:49" - }, - "nodeType": "YulIf", - "src": "1402:2:49" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "1455:32:49", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1469:9:49" - }, - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "1480:6:49" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1465:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "1465:22:49" - }, - "variables": [ - { - "name": "_2", - "nodeType": "YulTypedName", - "src": "1459:2:49", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "1535:26:49", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "1544:6:49" - }, - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "1552:6:49" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "1537:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "1537:22:49" - }, - "nodeType": "YulExpressionStatement", - "src": "1537:22:49" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "_2", - "nodeType": "YulIdentifier", - "src": "1514:2:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1518:4:49", - "type": "", - "value": "0x1f" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1510:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "1510:13:49" - }, - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "1525:7:49" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "1506:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "1506:27:49" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "1499:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "1499:35:49" - }, - "nodeType": "YulIf", - "src": "1496:2:49" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "1570:19:49", - "value": { - "arguments": [ - { - "name": "_2", - "nodeType": "YulIdentifier", - "src": "1586:2:49" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "1580:5:49" - }, - "nodeType": "YulFunctionCall", - "src": "1580:9:49" - }, - "variables": [ - { - "name": "_3", - "nodeType": "YulTypedName", - "src": "1574:2:49", - "type": "" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "1598:14:49", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1608:4:49", - "type": "", - "value": "0x20" - }, - "variables": [ - { - "name": "_4", - "nodeType": "YulTypedName", - "src": "1602:2:49", - "type": "" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "1621:74:49", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "_3", - "nodeType": "YulIdentifier", - "src": "1691:2:49" - } - ], - "functionName": { - "name": "array_allocation_size_t_array$_t_int56_$dyn", - "nodeType": "YulIdentifier", - "src": "1647:43:49" - }, - "nodeType": "YulFunctionCall", - "src": "1647:47:49" - } - ], - "functionName": { - "name": "allocateMemory", - "nodeType": "YulIdentifier", - "src": "1632:14:49" - }, - "nodeType": "YulFunctionCall", - "src": "1632:63:49" - }, - "variables": [ - { - "name": "dst", - "nodeType": "YulTypedName", - "src": "1625:3:49", - "type": "" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "1704:16:49", - "value": { - "name": "dst", - "nodeType": "YulIdentifier", - "src": "1717:3:49" - }, - "variables": [ - { - "name": "dst_1", - "nodeType": "YulTypedName", - "src": "1708:5:49", - "type": "" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "dst", - "nodeType": "YulIdentifier", - "src": "1736:3:49" - }, - { - "name": "_3", - "nodeType": "YulIdentifier", - "src": "1741:2:49" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "1729:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "1729:15:49" - }, - "nodeType": "YulExpressionStatement", - "src": "1729:15:49" - }, - { - "nodeType": "YulAssignment", - "src": "1753:19:49", - "value": { - "arguments": [ - { - "name": "dst", - "nodeType": "YulIdentifier", - "src": "1764:3:49" - }, - { - "name": "_4", - "nodeType": "YulIdentifier", - "src": "1769:2:49" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1760:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "1760:12:49" - }, - "variableNames": [ - { - "name": "dst", - "nodeType": "YulIdentifier", - "src": "1753:3:49" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "1781:22:49", - "value": { - "arguments": [ - { - "name": "_2", - "nodeType": "YulIdentifier", - "src": "1796:2:49" - }, - { - "name": "_4", - "nodeType": "YulIdentifier", - "src": "1800:2:49" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1792:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "1792:11:49" - }, - "variables": [ - { - "name": "src", - "nodeType": "YulTypedName", - "src": "1785:3:49", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "1858:26:49", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "1867:6:49" - }, - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "1875:6:49" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "1860:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "1860:22:49" - }, - "nodeType": "YulExpressionStatement", - "src": "1860:22:49" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "_2", - "nodeType": "YulIdentifier", - "src": "1826:2:49" - }, - { - "arguments": [ - { - "name": "_3", - "nodeType": "YulIdentifier", - "src": "1834:2:49" - }, - { - "name": "_4", - "nodeType": "YulIdentifier", - "src": "1838:2:49" - } - ], - "functionName": { - "name": "mul", - "nodeType": "YulIdentifier", - "src": "1830:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "1830:11:49" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1822:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "1822:20:49" - }, - { - "name": "_4", - "nodeType": "YulIdentifier", - "src": "1844:2:49" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1818:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "1818:29:49" - }, - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "1849:7:49" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "1815:2:49" - }, - "nodeType": "YulFunctionCall", - "src": "1815:42:49" - }, - "nodeType": "YulIf", - "src": "1812:2:49" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "1893:15:49", - "value": { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "1902:6:49" - }, - "variables": [ - { - "name": "i", - "nodeType": "YulTypedName", - "src": "1897:1:49", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "1962:224:49", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "1976:23:49", - "value": { - "arguments": [ - { - "name": "src", - "nodeType": "YulIdentifier", - "src": "1995:3:49" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "1989:5:49" - }, - "nodeType": "YulFunctionCall", - "src": "1989:10:49" - }, - "variables": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "1980:5:49", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "2055:26:49", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "2064:6:49" - }, - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "2072:6:49" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "2057:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "2057:22:49" - }, - "nodeType": "YulExpressionStatement", - "src": "2057:22:49" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "2025:5:49" - }, - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2043:1:49", - "type": "", - "value": "6" - }, - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "2046:5:49" - } - ], - "functionName": { - "name": "signextend", - "nodeType": "YulIdentifier", - "src": "2032:10:49" - }, - "nodeType": "YulFunctionCall", - "src": "2032:20:49" - } - ], - "functionName": { - "name": "eq", - "nodeType": "YulIdentifier", - "src": "2022:2:49" - }, - "nodeType": "YulFunctionCall", - "src": "2022:31:49" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "2015:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "2015:39:49" - }, - "nodeType": "YulIf", - "src": "2012:2:49" - }, - { - "expression": { - "arguments": [ - { - "name": "dst", - "nodeType": "YulIdentifier", - "src": "2101:3:49" - }, - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "2106:5:49" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "2094:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "2094:18:49" - }, - "nodeType": "YulExpressionStatement", - "src": "2094:18:49" - }, - { - "nodeType": "YulAssignment", - "src": "2125:19:49", - "value": { - "arguments": [ - { - "name": "dst", - "nodeType": "YulIdentifier", - "src": "2136:3:49" - }, - { - "name": "_4", - "nodeType": "YulIdentifier", - "src": "2141:2:49" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2132:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "2132:12:49" - }, - "variableNames": [ - { - "name": "dst", - "nodeType": "YulIdentifier", - "src": "2125:3:49" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "2157:19:49", - "value": { - "arguments": [ - { - "name": "src", - "nodeType": "YulIdentifier", - "src": "2168:3:49" - }, - { - "name": "_4", - "nodeType": "YulIdentifier", - "src": "2173:2:49" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2164:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "2164:12:49" - }, - "variableNames": [ - { - "name": "src", - "nodeType": "YulIdentifier", - "src": "2157:3:49" - } - ] - } - ] - }, - "condition": { - "arguments": [ - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "1928:1:49" - }, - { - "name": "_3", - "nodeType": "YulIdentifier", - "src": "1931:2:49" - } - ], - "functionName": { - "name": "lt", - "nodeType": "YulIdentifier", - "src": "1925:2:49" - }, - "nodeType": "YulFunctionCall", - "src": "1925:9:49" - }, - "nodeType": "YulForLoop", - "post": { - "nodeType": "YulBlock", - "src": "1935:18:49", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "1937:14:49", - "value": { - "arguments": [ - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "1946:1:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1949:1:49", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1942:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "1942:9:49" - }, - "variableNames": [ - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "1937:1:49" - } - ] - } - ] - }, - "pre": { - "nodeType": "YulBlock", - "src": "1921:3:49", - "statements": [] - }, - "src": "1917:269:49" - }, - { - "nodeType": "YulAssignment", - "src": "2195:15:49", - "value": { - "name": "dst_1", - "nodeType": "YulIdentifier", - "src": "2205:5:49" - }, - "variableNames": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "2195:6:49" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "2219:41:49", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2245:9:49" - }, - { - "name": "_4", - "nodeType": "YulIdentifier", - "src": "2256:2:49" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2241:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "2241:18:49" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "2235:5:49" - }, - "nodeType": "YulFunctionCall", - "src": "2235:25:49" - }, - "variables": [ - { - "name": "offset_1", - "nodeType": "YulTypedName", - "src": "2223:8:49", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "2289:26:49", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "2298:6:49" - }, - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "2306:6:49" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "2291:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "2291:22:49" - }, - "nodeType": "YulExpressionStatement", - "src": "2291:22:49" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "offset_1", - "nodeType": "YulIdentifier", - "src": "2275:8:49" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "2285:2:49" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "2272:2:49" - }, - "nodeType": "YulFunctionCall", - "src": "2272:16:49" - }, - "nodeType": "YulIf", - "src": "2269:2:49" - }, - { - "nodeType": "YulAssignment", - "src": "2324:90:49", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2384:9:49" - }, - { - "name": "offset_1", - "nodeType": "YulIdentifier", - "src": "2395:8:49" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2380:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "2380:24:49" - }, - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "2406:7:49" - } - ], - "functionName": { - "name": "abi_decode_t_array$_t_uint160_$dyn_fromMemory", - "nodeType": "YulIdentifier", - "src": "2334:45:49" - }, - "nodeType": "YulFunctionCall", - "src": "2334:80:49" - }, - "variableNames": [ - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "2324:6:49" - } - ] - } - ] - }, - "name": "abi_decode_tuple_t_array$_t_int56_$dyn_memory_ptrt_array$_t_uint160_$dyn_memory_ptr_fromMemory", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "1203:9:49", - "type": "" - }, - { - "name": "dataEnd", - "nodeType": "YulTypedName", - "src": "1214:7:49", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "1226:6:49", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "1234:6:49", - "type": "" - } - ], - "src": "1099:1321:49" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "2598:810:49", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "2645:26:49", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "value4", - "nodeType": "YulIdentifier", - "src": "2654:6:49" - }, - { - "name": "value4", - "nodeType": "YulIdentifier", - "src": "2662:6:49" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "2647:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "2647:22:49" - }, - "nodeType": "YulExpressionStatement", - "src": "2647:22:49" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "2619:7:49" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2628:9:49" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "2615:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "2615:23:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2640:3:49", - "type": "", - "value": "224" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "2611:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "2611:33:49" - }, - "nodeType": "YulIf", - "src": "2608:2:49" - }, - { - "nodeType": "YulAssignment", - "src": "2680:52:49", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2722:9:49" - } - ], - "functionName": { - "name": "abi_decode_t_uint160_fromMemory", - "nodeType": "YulIdentifier", - "src": "2690:31:49" - }, - "nodeType": "YulFunctionCall", - "src": "2690:42:49" - }, - "variableNames": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "2680:6:49" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "2741:38:49", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2764:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2775:2:49", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2760:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "2760:18:49" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "2754:5:49" - }, - "nodeType": "YulFunctionCall", - "src": "2754:25:49" - }, - "variables": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "2745:5:49", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "2831:26:49", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "value4", - "nodeType": "YulIdentifier", - "src": "2840:6:49" - }, - { - "name": "value4", - "nodeType": "YulIdentifier", - "src": "2848:6:49" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "2833:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "2833:22:49" - }, - "nodeType": "YulExpressionStatement", - "src": "2833:22:49" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "2801:5:49" - }, - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2819:1:49", - "type": "", - "value": "2" - }, - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "2822:5:49" - } - ], - "functionName": { - "name": "signextend", - "nodeType": "YulIdentifier", - "src": "2808:10:49" - }, - "nodeType": "YulFunctionCall", - "src": "2808:20:49" - } - ], - "functionName": { - "name": "eq", - "nodeType": "YulIdentifier", - "src": "2798:2:49" - }, - "nodeType": "YulFunctionCall", - "src": "2798:31:49" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "2791:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "2791:39:49" - }, - "nodeType": "YulIf", - "src": "2788:2:49" - }, - { - "nodeType": "YulAssignment", - "src": "2866:15:49", - "value": { - "name": "value", - "nodeType": "YulIdentifier", - "src": "2876:5:49" - }, - "variableNames": [ - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "2866:6:49" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "2890:60:49", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2935:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2946:2:49", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2931:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "2931:18:49" - } - ], - "functionName": { - "name": "abi_decode_t_uint16_fromMemory", - "nodeType": "YulIdentifier", - "src": "2900:30:49" - }, - "nodeType": "YulFunctionCall", - "src": "2900:50:49" - }, - "variableNames": [ - { - "name": "value2", - "nodeType": "YulIdentifier", - "src": "2890:6:49" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "2959:60:49", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3004:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3015:2:49", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3000:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "3000:18:49" - } - ], - "functionName": { - "name": "abi_decode_t_uint16_fromMemory", - "nodeType": "YulIdentifier", - "src": "2969:30:49" - }, - "nodeType": "YulFunctionCall", - "src": "2969:50:49" - }, - "variableNames": [ - { - "name": "value3", - "nodeType": "YulIdentifier", - "src": "2959:6:49" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "3028:61:49", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3073:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3084:3:49", - "type": "", - "value": "128" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3069:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "3069:19:49" - } - ], - "functionName": { - "name": "abi_decode_t_uint16_fromMemory", - "nodeType": "YulIdentifier", - "src": "3038:30:49" - }, - "nodeType": "YulFunctionCall", - "src": "3038:51:49" - }, - "variableNames": [ - { - "name": "value4", - "nodeType": "YulIdentifier", - "src": "3028:6:49" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "3098:41:49", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3123:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3134:3:49", - "type": "", - "value": "160" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3119:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "3119:19:49" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "3113:5:49" - }, - "nodeType": "YulFunctionCall", - "src": "3113:26:49" - }, - "variables": [ - { - "name": "value_1", - "nodeType": "YulTypedName", - "src": "3102:7:49", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "3191:26:49", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "value5", - "nodeType": "YulIdentifier", - "src": "3200:6:49" - }, - { - "name": "value5", - "nodeType": "YulIdentifier", - "src": "3208:6:49" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "3193:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "3193:22:49" - }, - "nodeType": "YulExpressionStatement", - "src": "3193:22:49" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "value_1", - "nodeType": "YulIdentifier", - "src": "3161:7:49" - }, - { - "arguments": [ - { - "name": "value_1", - "nodeType": "YulIdentifier", - "src": "3174:7:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3183:4:49", - "type": "", - "value": "0xff" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "3170:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "3170:18:49" - } - ], - "functionName": { - "name": "eq", - "nodeType": "YulIdentifier", - "src": "3158:2:49" - }, - "nodeType": "YulFunctionCall", - "src": "3158:31:49" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "3151:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "3151:39:49" - }, - "nodeType": "YulIf", - "src": "3148:2:49" - }, - { - "nodeType": "YulAssignment", - "src": "3226:17:49", - "value": { - "name": "value_1", - "nodeType": "YulIdentifier", - "src": "3236:7:49" - }, - "variableNames": [ - { - "name": "value5", - "nodeType": "YulIdentifier", - "src": "3226:6:49" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "3252:41:49", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3277:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3288:3:49", - "type": "", - "value": "192" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3273:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "3273:19:49" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "3267:5:49" - }, - "nodeType": "YulFunctionCall", - "src": "3267:26:49" - }, - "variables": [ - { - "name": "value_2", - "nodeType": "YulTypedName", - "src": "3256:7:49", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "3350:26:49", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "value6", - "nodeType": "YulIdentifier", - "src": "3359:6:49" - }, - { - "name": "value6", - "nodeType": "YulIdentifier", - "src": "3367:6:49" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "3352:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "3352:22:49" - }, - "nodeType": "YulExpressionStatement", - "src": "3352:22:49" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "value_2", - "nodeType": "YulIdentifier", - "src": "3315:7:49" - }, - { - "arguments": [ - { - "arguments": [ - { - "name": "value_2", - "nodeType": "YulIdentifier", - "src": "3338:7:49" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "3331:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "3331:15:49" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "3324:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "3324:23:49" - } - ], - "functionName": { - "name": "eq", - "nodeType": "YulIdentifier", - "src": "3312:2:49" - }, - "nodeType": "YulFunctionCall", - "src": "3312:36:49" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "3305:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "3305:44:49" - }, - "nodeType": "YulIf", - "src": "3302:2:49" - }, - { - "nodeType": "YulAssignment", - "src": "3385:17:49", - "value": { - "name": "value_2", - "nodeType": "YulIdentifier", - "src": "3395:7:49" - }, - "variableNames": [ - { - "name": "value6", - "nodeType": "YulIdentifier", - "src": "3385:6:49" - } - ] - } - ] - }, - "name": "abi_decode_tuple_t_uint160t_int24t_uint16t_uint16t_uint16t_uint8t_bool_fromMemory", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "2516:9:49", - "type": "" - }, - { - "name": "dataEnd", - "nodeType": "YulTypedName", - "src": "2527:7:49", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "2539:6:49", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "2547:6:49", - "type": "" - }, - { - "name": "value2", - "nodeType": "YulTypedName", - "src": "2555:6:49", - "type": "" - }, - { - "name": "value3", - "nodeType": "YulTypedName", - "src": "2563:6:49", - "type": "" - }, - { - "name": "value4", - "nodeType": "YulTypedName", - "src": "2571:6:49", - "type": "" - }, - { - "name": "value5", - "nodeType": "YulTypedName", - "src": "2579:6:49", - "type": "" - }, - { - "name": "value6", - "nodeType": "YulTypedName", - "src": "2587:6:49", - "type": "" - } - ], - "src": "2425:983:49" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "3483:120:49", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "3529:26:49", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "3538:6:49" - }, - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "3546:6:49" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "3531:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "3531:22:49" - }, - "nodeType": "YulExpressionStatement", - "src": "3531:22:49" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "3504:7:49" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3513:9:49" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "3500:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "3500:23:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3525:2:49", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "3496:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "3496:32:49" - }, - "nodeType": "YulIf", - "src": "3493:2:49" - }, - { - "nodeType": "YulAssignment", - "src": "3564:33:49", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3587:9:49" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "3574:12:49" - }, - "nodeType": "YulFunctionCall", - "src": "3574:23:49" - }, - "variableNames": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "3564:6:49" - } - ] - } - ] - }, - "name": "abi_decode_tuple_t_uint256", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "3449:9:49", - "type": "" - }, - { - "name": "dataEnd", - "nodeType": "YulTypedName", - "src": "3460:7:49", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "3472:6:49", - "type": "" - } - ], - "src": "3413:190:49" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "3709:102:49", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "3719:26:49", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3731:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3742:2:49", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3727:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "3727:18:49" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "3719:4:49" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3761:9:49" - }, - { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "3776:6:49" - }, - { - "arguments": [ - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3792:3:49", - "type": "", - "value": "160" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3797:1:49", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "3788:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "3788:11:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3801:1:49", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "3784:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "3784:19:49" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "3772:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "3772:32:49" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "3754:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "3754:51:49" - }, - "nodeType": "YulExpressionStatement", - "src": "3754:51:49" - } - ] - }, - "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "3678:9:49", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "3689:6:49", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "3700:4:49", - "type": "" - } - ], - "src": "3608:203:49" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "3965:501:49", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "3975:12:49", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3985:2:49", - "type": "", - "value": "32" - }, - "variables": [ - { - "name": "_1", - "nodeType": "YulTypedName", - "src": "3979:2:49", - "type": "" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "3996:32:49", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4014:9:49" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "4025:2:49" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4010:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "4010:18:49" - }, - "variables": [ - { - "name": "tail_1", - "nodeType": "YulTypedName", - "src": "4000:6:49", - "type": "" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4044:9:49" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "4055:2:49" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "4037:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "4037:21:49" - }, - "nodeType": "YulExpressionStatement", - "src": "4037:21:49" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "4067:17:49", - "value": { - "name": "tail_1", - "nodeType": "YulIdentifier", - "src": "4078:6:49" - }, - "variables": [ - { - "name": "pos", - "nodeType": "YulTypedName", - "src": "4071:3:49", - "type": "" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "4093:27:49", - "value": { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "4113:6:49" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "4107:5:49" - }, - "nodeType": "YulFunctionCall", - "src": "4107:13:49" - }, - "variables": [ - { - "name": "length", - "nodeType": "YulTypedName", - "src": "4097:6:49", - "type": "" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "tail_1", - "nodeType": "YulIdentifier", - "src": "4136:6:49" - }, - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "4144:6:49" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "4129:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "4129:22:49" - }, - "nodeType": "YulExpressionStatement", - "src": "4129:22:49" - }, - { - "nodeType": "YulAssignment", - "src": "4160:25:49", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4171:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4182:2:49", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4167:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "4167:18:49" - }, - "variableNames": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "4160:3:49" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "4194:29:49", - "value": { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "4212:6:49" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "4220:2:49" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4208:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "4208:15:49" - }, - "variables": [ - { - "name": "srcPtr", - "nodeType": "YulTypedName", - "src": "4198:6:49", - "type": "" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "4232:13:49", - "value": { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "4241:4:49" - }, - "variables": [ - { - "name": "i", - "nodeType": "YulTypedName", - "src": "4236:1:49", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "4303:137:49", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "4324:3:49" - }, - { - "arguments": [ - { - "arguments": [ - { - "name": "srcPtr", - "nodeType": "YulIdentifier", - "src": "4339:6:49" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "4333:5:49" - }, - "nodeType": "YulFunctionCall", - "src": "4333:13:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4348:10:49", - "type": "", - "value": "0xffffffff" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "4329:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "4329:30:49" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "4317:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "4317:43:49" - }, - "nodeType": "YulExpressionStatement", - "src": "4317:43:49" - }, - { - "nodeType": "YulAssignment", - "src": "4373:19:49", - "value": { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "4384:3:49" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "4389:2:49" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4380:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "4380:12:49" - }, - "variableNames": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "4373:3:49" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "4405:25:49", - "value": { - "arguments": [ - { - "name": "srcPtr", - "nodeType": "YulIdentifier", - "src": "4419:6:49" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "4427:2:49" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4415:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "4415:15:49" - }, - "variableNames": [ - { - "name": "srcPtr", - "nodeType": "YulIdentifier", - "src": "4405:6:49" - } - ] - } - ] - }, - "condition": { - "arguments": [ - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "4265:1:49" - }, - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "4268:6:49" - } - ], - "functionName": { - "name": "lt", - "nodeType": "YulIdentifier", - "src": "4262:2:49" - }, - "nodeType": "YulFunctionCall", - "src": "4262:13:49" - }, - "nodeType": "YulForLoop", - "post": { - "nodeType": "YulBlock", - "src": "4276:18:49", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "4278:14:49", - "value": { - "arguments": [ - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "4287:1:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4290:1:49", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4283:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "4283:9:49" - }, - "variableNames": [ - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "4278:1:49" - } - ] - } - ] - }, - "pre": { - "nodeType": "YulBlock", - "src": "4258:3:49", - "statements": [] - }, - "src": "4254:186:49" - }, - { - "nodeType": "YulAssignment", - "src": "4449:11:49", - "value": { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "4457:3:49" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "4449:4:49" - } - ] - } - ] - }, - "name": "abi_encode_tuple_t_array$_t_uint32_$dyn_memory_ptr__to_t_array$_t_uint32_$dyn_memory_ptr__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "3934:9:49", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "3945:6:49", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "3956:4:49", - "type": "" - } - ], - "src": "3816:650:49" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "4645:228:49", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4662:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4673:2:49", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "4655:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "4655:21:49" - }, - "nodeType": "YulExpressionStatement", - "src": "4655:21:49" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4696:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4707:2:49", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4692:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "4692:18:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4712:2:49", - "type": "", - "value": "38" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "4685:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "4685:30:49" - }, - "nodeType": "YulExpressionStatement", - "src": "4685:30:49" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4735:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4746:2:49", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4731:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "4731:18:49" - }, - { - "kind": "string", - "nodeType": "YulLiteral", - "src": "4751:34:49", - "type": "", - "value": "SafeCast: value doesn't fit in 3" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "4724:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "4724:62:49" - }, - "nodeType": "YulExpressionStatement", - "src": "4724:62:49" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4806:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4817:2:49", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4802:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "4802:18:49" - }, - { - "kind": "string", - "nodeType": "YulLiteral", - "src": "4822:8:49", - "type": "", - "value": "2 bits" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "4795:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "4795:36:49" - }, - "nodeType": "YulExpressionStatement", - "src": "4795:36:49" - }, - { - "nodeType": "YulAssignment", - "src": "4840:27:49", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4852:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4863:3:49", - "type": "", - "value": "128" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4848:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "4848:19:49" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "4840:4:49" - } - ] - } - ] - }, - "name": "abi_encode_tuple_t_stringliteral_c907489dafcfb622d3b83f2657a14d6da2f59e0de3116af0d6a80554c1a7cb19__to_t_string_memory_ptr__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "4622:9:49", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "4636:4:49", - "type": "" - } - ], - "src": "4471:402:49" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "4979:76:49", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "4989:26:49", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "5001:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5012:2:49", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4997:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "4997:18:49" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "4989:4:49" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "5031:9:49" - }, - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "5042:6:49" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "5024:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "5024:25:49" - }, - "nodeType": "YulExpressionStatement", - "src": "5024:25:49" - } - ] - }, - "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "4948:9:49", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "4959:6:49", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "4970:4:49", - "type": "" - } - ], - "src": "4878:177:49" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "5157:87:49", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "5167:26:49", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "5179:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5190:2:49", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "5175:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "5175:18:49" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "5167:4:49" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "5209:9:49" - }, - { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "5224:6:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5232:4:49", - "type": "", - "value": "0xff" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "5220:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "5220:17:49" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "5202:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "5202:36:49" - }, - "nodeType": "YulExpressionStatement", - "src": "5202:36:49" - } - ] - }, - "name": "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "5126:9:49", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "5137:6:49", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "5148:4:49", - "type": "" - } - ], - "src": "5060:184:49" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "5293:198:49", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "5303:19:49", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5319:2:49", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "5313:5:49" - }, - "nodeType": "YulFunctionCall", - "src": "5313:9:49" - }, - "variableNames": [ - { - "name": "memPtr", - "nodeType": "YulIdentifier", - "src": "5303:6:49" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "5331:35:49", - "value": { - "arguments": [ - { - "name": "memPtr", - "nodeType": "YulIdentifier", - "src": "5353:6:49" - }, - { - "name": "size", - "nodeType": "YulIdentifier", - "src": "5361:4:49" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "5349:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "5349:17:49" - }, - "variables": [ - { - "name": "newFreePtr", - "nodeType": "YulTypedName", - "src": "5335:10:49", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "5441:13:49", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "invalid", - "nodeType": "YulIdentifier", - "src": "5443:7:49" - }, - "nodeType": "YulFunctionCall", - "src": "5443:9:49" - }, - "nodeType": "YulExpressionStatement", - "src": "5443:9:49" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "newFreePtr", - "nodeType": "YulIdentifier", - "src": "5384:10:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5396:18:49", - "type": "", - "value": "0xffffffffffffffff" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "5381:2:49" - }, - "nodeType": "YulFunctionCall", - "src": "5381:34:49" - }, - { - "arguments": [ - { - "name": "newFreePtr", - "nodeType": "YulIdentifier", - "src": "5420:10:49" - }, - { - "name": "memPtr", - "nodeType": "YulIdentifier", - "src": "5432:6:49" - } - ], - "functionName": { - "name": "lt", - "nodeType": "YulIdentifier", - "src": "5417:2:49" - }, - "nodeType": "YulFunctionCall", - "src": "5417:22:49" - } - ], - "functionName": { - "name": "or", - "nodeType": "YulIdentifier", - "src": "5378:2:49" - }, - "nodeType": "YulFunctionCall", - "src": "5378:62:49" - }, - "nodeType": "YulIf", - "src": "5375:2:49" - }, - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5470:2:49", - "type": "", - "value": "64" - }, - { - "name": "newFreePtr", - "nodeType": "YulIdentifier", - "src": "5474:10:49" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "5463:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "5463:22:49" - }, - "nodeType": "YulExpressionStatement", - "src": "5463:22:49" - } - ] - }, - "name": "allocateMemory", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "size", - "nodeType": "YulTypedName", - "src": "5273:4:49", - "type": "" - } - ], - "returnVariables": [ - { - "name": "memPtr", - "nodeType": "YulTypedName", - "src": "5282:6:49", - "type": "" - } - ], - "src": "5249:242:49" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "5569:108:49", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "5613:13:49", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "invalid", - "nodeType": "YulIdentifier", - "src": "5615:7:49" - }, - "nodeType": "YulFunctionCall", - "src": "5615:9:49" - }, - "nodeType": "YulExpressionStatement", - "src": "5615:9:49" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "5585:6:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5593:18:49", - "type": "", - "value": "0xffffffffffffffff" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "5582:2:49" - }, - "nodeType": "YulFunctionCall", - "src": "5582:30:49" - }, - "nodeType": "YulIf", - "src": "5579:2:49" - }, - { - "nodeType": "YulAssignment", - "src": "5635:36:49", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "5651:6:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5659:4:49", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "mul", - "nodeType": "YulIdentifier", - "src": "5647:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "5647:17:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5666:4:49", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "5643:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "5643:28:49" - }, - "variableNames": [ - { - "name": "size", - "nodeType": "YulIdentifier", - "src": "5635:4:49" - } - ] - } - ] - }, - "name": "array_allocation_size_t_array$_t_int56_$dyn", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "length", - "nodeType": "YulTypedName", - "src": "5549:6:49", - "type": "" - } - ], - "returnVariables": [ - { - "name": "size", - "nodeType": "YulTypedName", - "src": "5560:4:49", - "type": "" - } - ], - "src": "5496:181:49" - } - ] - }, - "contents": "{\n { }\n function abi_decode_t_array$_t_uint160_$dyn_fromMemory(offset, end) -> array\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(array, array) }\n let _1 := mload(offset)\n let _2 := 0x20\n let dst := allocateMemory(array_allocation_size_t_array$_t_int56_$dyn(_1))\n let dst_1 := dst\n mstore(dst, _1)\n dst := add(dst, _2)\n let src := add(offset, _2)\n if gt(add(add(offset, mul(_1, _2)), _2), end) { revert(array, array) }\n let i := array\n for { } lt(i, _1) { i := add(i, 1) }\n {\n mstore(dst, abi_decode_t_uint160_fromMemory(src))\n dst := add(dst, _2)\n src := add(src, _2)\n }\n array := dst_1\n }\n function abi_decode_t_uint160_fromMemory(offset) -> value\n {\n value := mload(offset)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n }\n function abi_decode_t_uint16_fromMemory(offset) -> value\n {\n value := mload(offset)\n if iszero(eq(value, and(value, 0xffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_array$_t_int56_$dyn_memory_ptrt_array$_t_uint160_$dyn_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n let offset := mload(headStart)\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(value0, value0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(value0, value0) }\n let _3 := mload(_2)\n let _4 := 0x20\n let dst := allocateMemory(array_allocation_size_t_array$_t_int56_$dyn(_3))\n let dst_1 := dst\n mstore(dst, _3)\n dst := add(dst, _4)\n let src := add(_2, _4)\n if gt(add(add(_2, mul(_3, _4)), _4), dataEnd) { revert(value0, value0) }\n let i := value0\n for { } lt(i, _3) { i := add(i, 1) }\n {\n let value := mload(src)\n if iszero(eq(value, signextend(6, value))) { revert(value0, value0) }\n mstore(dst, value)\n dst := add(dst, _4)\n src := add(src, _4)\n }\n value0 := dst_1\n let offset_1 := mload(add(headStart, _4))\n if gt(offset_1, _1) { revert(value1, value1) }\n value1 := abi_decode_t_array$_t_uint160_$dyn_fromMemory(add(headStart, offset_1), dataEnd)\n }\n function abi_decode_tuple_t_uint160t_int24t_uint16t_uint16t_uint16t_uint8t_bool_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6\n {\n if slt(sub(dataEnd, headStart), 224) { revert(value4, value4) }\n value0 := abi_decode_t_uint160_fromMemory(headStart)\n let value := mload(add(headStart, 32))\n if iszero(eq(value, signextend(2, value))) { revert(value4, value4) }\n value1 := value\n value2 := abi_decode_t_uint16_fromMemory(add(headStart, 64))\n value3 := abi_decode_t_uint16_fromMemory(add(headStart, 96))\n value4 := abi_decode_t_uint16_fromMemory(add(headStart, 128))\n let value_1 := mload(add(headStart, 160))\n if iszero(eq(value_1, and(value_1, 0xff))) { revert(value5, value5) }\n value5 := value_1\n let value_2 := mload(add(headStart, 192))\n if iszero(eq(value_2, iszero(iszero(value_2)))) { revert(value6, value6) }\n value6 := value_2\n }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n value0 := calldataload(headStart)\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n function abi_encode_tuple_t_array$_t_uint32_$dyn_memory_ptr__to_t_array$_t_uint32_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n let tail_1 := add(headStart, _1)\n mstore(headStart, _1)\n let pos := tail_1\n let length := mload(value0)\n mstore(tail_1, length)\n pos := add(headStart, 64)\n let srcPtr := add(value0, _1)\n let i := tail\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), 0xffffffff))\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n tail := pos\n }\n function abi_encode_tuple_t_stringliteral_c907489dafcfb622d3b83f2657a14d6da2f59e0de3116af0d6a80554c1a7cb19__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n {\n mstore(headStart, 32)\n mstore(add(headStart, 32), 38)\n mstore(add(headStart, 64), \"SafeCast: value doesn't fit in 3\")\n mstore(add(headStart, 96), \"2 bits\")\n tail := add(headStart, 128)\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n function allocateMemory(size) -> memPtr\n {\n memPtr := mload(64)\n let newFreePtr := add(memPtr, size)\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { invalid() }\n mstore(64, newFreePtr)\n }\n function array_allocation_size_t_array$_t_int56_$dyn(length) -> size\n {\n if gt(length, 0xffffffffffffffff) { invalid() }\n size := add(mul(length, 0x20), 0x20)\n }\n}", - "id": 49, - "language": "Yul", - "name": "#utility.yul" - } - ], - "immutableReferences": {}, - "linkReferences": {}, - "object": "608060405234801561001057600080fd5b506004361061004c5760003560e01c806316f0115b146100515780631d1a111a1461006f578063313ce5671461008f578063e7572230146100a4575b600080fd5b6100596100b7565b6040516100669190610953565b60405180910390f35b61008261007d36600461093b565b6100c6565b60405161006691906109f7565b6100976100cc565b6040516100669190610a00565b6100826100b236600461093b565b6100d1565b6000546001600160a01b031681565b50600090565b601290565b6000806100ed6100e86100e385610107565b610136565b610320565b90506100f881610340565b9150505b919050565b3b151590565b8063ffffffff811681146100fc5760405162461bcd60e51b815260040161012d906109b1565b60405180910390fd5b6000600a8263ffffffff1610156101de5760008060009054906101000a90046001600160a01b03166001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561019657600080fd5b505afa1580156101aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101ce919061089f565b509496506100fc95505050505050565b604080516002808252606082018352600092602083019080368337019050509050828160008151811061020d57fe5b602002602001019063ffffffff16908163ffffffff168152505060008160018151811061023657fe5b63ffffffff909216602092830291909101909101526000805460405163883bdbfd60e01b81526001600160a01b039091169063883bdbfd9061027c908590600401610967565b60006040518083038186803b15801561029457600080fd5b505afa1580156102a8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526102d091908101906107d7565b5090506103188463ffffffff16826000815181106102ea57fe5b6020026020010151836001815181106102ff57fe5b60200260200101510360060b8161031257fe5b05610359565b949350505050565b600061033a6001600160a01b03831680600160601b61068b565b92915050565b600061033a82670de0b6b3a7640000600160601b61068b565b60008060008360020b12610370578260020b610378565b8260020b6000035b9050620d89e88111156103b6576040805162461bcd60e51b81526020600482015260016024820152601560fa1b604482015290519081900360640190fd5b6000600182166103ca57600160801b6103dc565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615610410576ffff97272373d413259a46990580e213a0260801c5b600482161561042f576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b600882161561044e576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b601082161561046d576fffcb9843d60f6159c9db58835c9266440260801c5b602082161561048c576fff973b41fa98c081472e6896dfb254c00260801c5b60408216156104ab576fff2ea16466c96a3843ec78b326b528610260801c5b60808216156104ca576ffe5dee046a99a2a811c461f1969c30530260801c5b6101008216156104ea576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b61020082161561050a576ff987a7253ac413176f2b074cf7815e540260801c5b61040082161561052a576ff3392b0822b70005940c7a398e4b70f30260801c5b61080082161561054a576fe7159475a2c29b7443b29c7fa6e889d90260801c5b61100082161561056a576fd097f3bdfd2022b8845ad8f792aa58250260801c5b61200082161561058a576fa9f746462d870fdf8a65dc1f90e061e50260801c5b6140008216156105aa576f70d869a156d2a1b890bb3df62baf32f70260801c5b6180008216156105ca576f31be135f97d08fd981231505542fcfa60260801c5b620100008216156105eb576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b6202000082161561060b576e5d6af8dedb81196699c329225ee6040260801c5b6204000082161561062a576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615610647576b048a170391f7dc42444e8fa20260801c5b60008460020b131561066257806000198161065e57fe5b0490505b640100000000810615610676576001610679565b60005b60ff16602082901c0192505050919050565b60008080600019858709868602925082811090839003039050806106c157600084116106b657600080fd5b508290049050610734565b8084116106cd57600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b600082601f83011261074b578081fd5b8151602061076061075b83610a32565b610a0e565b828152818101908583018385028701840188101561077c578586fd5b855b858110156107a15761078f826107ae565b8452928401929084019060010161077e565b5090979650505050505050565b80516001600160a01b03811681146100fc57600080fd5b805161ffff811681146100fc57600080fd5b600080604083850312156107e9578182fd5b825167ffffffffffffffff80821115610800578384fd5b818501915085601f830112610813578384fd5b8151602061082361075b83610a32565b82815281810190858301838502870184018b101561083f578889fd5b8896505b8487101561086f5780518060060b811461085b57898afd5b835260019690960195918301918301610843565b5091880151919650909350505080821115610888578283fd5b506108958582860161073b565b9150509250929050565b600080600080600080600060e0888a0312156108b9578283fd5b6108c2886107ae565b965060208801518060020b81146108d7578384fd5b95506108e5604089016107c5565b94506108f3606089016107c5565b9350610901608089016107c5565b925060a088015160ff81168114610916578283fd5b60c0890151909250801515811461092b578182fd5b8091505092959891949750929550565b60006020828403121561094c578081fd5b5035919050565b6001600160a01b0391909116815260200190565b6020808252825182820181905260009190848201906040850190845b818110156109a557835163ffffffff1683529284019291840191600101610983565b50909695505050505050565b60208082526026908201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360408201526532206269747360d01b606082015260800190565b90815260200190565b60ff91909116815260200190565b60405181810167ffffffffffffffff81118282101715610a2a57fe5b604052919050565b600067ffffffffffffffff821115610a4657fe5b506020908102019056fea26469706673582212200c97e0c2a98090aaccb1938319c204f72b241ea43518e257984f60669902813464736f6c63430007060033", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x16F0115B EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x1D1A111A EQ PUSH2 0x6F JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x8F JUMPI DUP1 PUSH4 0xE7572230 EQ PUSH2 0xA4 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x59 PUSH2 0xB7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x66 SWAP2 SWAP1 PUSH2 0x953 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x82 PUSH2 0x7D CALLDATASIZE PUSH1 0x4 PUSH2 0x93B JUMP JUMPDEST PUSH2 0xC6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x66 SWAP2 SWAP1 PUSH2 0x9F7 JUMP JUMPDEST PUSH2 0x97 PUSH2 0xCC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x66 SWAP2 SWAP1 PUSH2 0xA00 JUMP JUMPDEST PUSH2 0x82 PUSH2 0xB2 CALLDATASIZE PUSH1 0x4 PUSH2 0x93B JUMP JUMPDEST PUSH2 0xD1 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST POP PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x12 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xED PUSH2 0xE8 PUSH2 0xE3 DUP6 PUSH2 0x107 JUMP JUMPDEST PUSH2 0x136 JUMP JUMPDEST PUSH2 0x320 JUMP JUMPDEST SWAP1 POP PUSH2 0xF8 DUP2 PUSH2 0x340 JUMP JUMPDEST SWAP2 POP POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST DUP1 PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xFC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x12D SWAP1 PUSH2 0x9B1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xA DUP3 PUSH4 0xFFFFFFFF AND LT ISZERO PUSH2 0x1DE JUMPI PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x3850C7BD PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0xE0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x196 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1AA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1CE SWAP2 SWAP1 PUSH2 0x89F JUMP JUMPDEST POP SWAP5 SWAP7 POP PUSH2 0xFC SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 ADD DUP4 MSTORE PUSH1 0x0 SWAP3 PUSH1 0x20 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x20D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD SWAP1 PUSH4 0xFFFFFFFF AND SWAP1 DUP2 PUSH4 0xFFFFFFFF AND DUP2 MSTORE POP POP PUSH1 0x0 DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x236 JUMPI INVALID JUMPDEST PUSH4 0xFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x883BDBFD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH4 0x883BDBFD SWAP1 PUSH2 0x27C SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x967 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x294 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2A8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x2D0 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x7D7 JUMP JUMPDEST POP SWAP1 POP PUSH2 0x318 DUP5 PUSH4 0xFFFFFFFF AND DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2EA JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP4 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x2FF JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SUB PUSH1 0x6 SIGNEXTEND DUP2 PUSH2 0x312 JUMPI INVALID JUMPDEST SDIV PUSH2 0x359 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x33A PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP1 PUSH1 0x1 PUSH1 0x60 SHL PUSH2 0x68B JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x33A DUP3 PUSH8 0xDE0B6B3A7640000 PUSH1 0x1 PUSH1 0x60 SHL PUSH2 0x68B JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 PUSH1 0x2 SIGNEXTEND SLT PUSH2 0x370 JUMPI DUP3 PUSH1 0x2 SIGNEXTEND PUSH2 0x378 JUMP JUMPDEST DUP3 PUSH1 0x2 SIGNEXTEND PUSH1 0x0 SUB JUMPDEST SWAP1 POP PUSH3 0xD89E8 DUP2 GT ISZERO PUSH2 0x3B6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0xFA SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 AND PUSH2 0x3CA JUMPI PUSH1 0x1 PUSH1 0x80 SHL PUSH2 0x3DC JUMP JUMPDEST PUSH16 0xFFFCB933BD6FAD37AA2D162D1A594001 JUMPDEST PUSH17 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x2 DUP3 AND ISZERO PUSH2 0x410 JUMPI PUSH16 0xFFF97272373D413259A46990580E213A MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x4 DUP3 AND ISZERO PUSH2 0x42F JUMPI PUSH16 0xFFF2E50F5F656932EF12357CF3C7FDCC MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x8 DUP3 AND ISZERO PUSH2 0x44E JUMPI PUSH16 0xFFE5CACA7E10E4E61C3624EAA0941CD0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x10 DUP3 AND ISZERO PUSH2 0x46D JUMPI PUSH16 0xFFCB9843D60F6159C9DB58835C926644 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x20 DUP3 AND ISZERO PUSH2 0x48C JUMPI PUSH16 0xFF973B41FA98C081472E6896DFB254C0 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x40 DUP3 AND ISZERO PUSH2 0x4AB JUMPI PUSH16 0xFF2EA16466C96A3843EC78B326B52861 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x80 DUP3 AND ISZERO PUSH2 0x4CA JUMPI PUSH16 0xFE5DEE046A99A2A811C461F1969C3053 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x100 DUP3 AND ISZERO PUSH2 0x4EA JUMPI PUSH16 0xFCBE86C7900A88AEDCFFC83B479AA3A4 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x200 DUP3 AND ISZERO PUSH2 0x50A JUMPI PUSH16 0xF987A7253AC413176F2B074CF7815E54 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x400 DUP3 AND ISZERO PUSH2 0x52A JUMPI PUSH16 0xF3392B0822B70005940C7A398E4B70F3 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x800 DUP3 AND ISZERO PUSH2 0x54A JUMPI PUSH16 0xE7159475A2C29B7443B29C7FA6E889D9 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x1000 DUP3 AND ISZERO PUSH2 0x56A JUMPI PUSH16 0xD097F3BDFD2022B8845AD8F792AA5825 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x2000 DUP3 AND ISZERO PUSH2 0x58A JUMPI PUSH16 0xA9F746462D870FDF8A65DC1F90E061E5 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x4000 DUP3 AND ISZERO PUSH2 0x5AA JUMPI PUSH16 0x70D869A156D2A1B890BB3DF62BAF32F7 MUL PUSH1 0x80 SHR JUMPDEST PUSH2 0x8000 DUP3 AND ISZERO PUSH2 0x5CA JUMPI PUSH16 0x31BE135F97D08FD981231505542FCFA6 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x10000 DUP3 AND ISZERO PUSH2 0x5EB JUMPI PUSH16 0x9AA508B5B7A84E1C677DE54F3E99BC9 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x20000 DUP3 AND ISZERO PUSH2 0x60B JUMPI PUSH15 0x5D6AF8DEDB81196699C329225EE604 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x40000 DUP3 AND ISZERO PUSH2 0x62A JUMPI PUSH14 0x2216E584F5FA1EA926041BEDFE98 MUL PUSH1 0x80 SHR JUMPDEST PUSH3 0x80000 DUP3 AND ISZERO PUSH2 0x647 JUMPI PUSH12 0x48A170391F7DC42444E8FA2 MUL PUSH1 0x80 SHR JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x2 SIGNEXTEND SGT ISZERO PUSH2 0x662 JUMPI DUP1 PUSH1 0x0 NOT DUP2 PUSH2 0x65E JUMPI INVALID JUMPDEST DIV SWAP1 POP JUMPDEST PUSH5 0x100000000 DUP2 MOD ISZERO PUSH2 0x676 JUMPI PUSH1 0x1 PUSH2 0x679 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0xFF AND PUSH1 0x20 DUP3 SWAP1 SHR ADD SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH1 0x0 NOT DUP6 DUP8 MULMOD DUP7 DUP7 MUL SWAP3 POP DUP3 DUP2 LT SWAP1 DUP4 SWAP1 SUB SUB SWAP1 POP DUP1 PUSH2 0x6C1 JUMPI PUSH1 0x0 DUP5 GT PUSH2 0x6B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP3 SWAP1 DIV SWAP1 POP PUSH2 0x734 JUMP JUMPDEST DUP1 DUP5 GT PUSH2 0x6CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP5 DUP7 DUP9 MULMOD PUSH1 0x0 DUP7 DUP2 SUB DUP8 AND SWAP7 DUP8 SWAP1 DIV SWAP7 PUSH1 0x2 PUSH1 0x3 DUP10 MUL DUP2 XOR DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL DUP3 SUB MUL DUP1 DUP11 MUL SWAP1 SWAP2 SUB MUL SWAP2 DUP2 SWAP1 SUB DUP2 SWAP1 DIV PUSH1 0x1 ADD DUP7 DUP5 GT SWAP1 SWAP6 SUB SWAP5 SWAP1 SWAP5 MUL SWAP2 SWAP1 SWAP5 SUB SWAP3 SWAP1 SWAP3 DIV SWAP2 SWAP1 SWAP2 OR SWAP2 SWAP1 SWAP2 MUL SWAP2 POP POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x74B JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 PUSH2 0x760 PUSH2 0x75B DUP4 PUSH2 0xA32 JUMP JUMPDEST PUSH2 0xA0E JUMP JUMPDEST DUP3 DUP2 MSTORE DUP2 DUP2 ADD SWAP1 DUP6 DUP4 ADD DUP4 DUP6 MUL DUP8 ADD DUP5 ADD DUP9 LT ISZERO PUSH2 0x77C JUMPI DUP6 DUP7 REVERT JUMPDEST DUP6 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x7A1 JUMPI PUSH2 0x78F DUP3 PUSH2 0x7AE JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x77E JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0xFC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x7E9 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x800 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x813 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 PUSH2 0x823 PUSH2 0x75B DUP4 PUSH2 0xA32 JUMP JUMPDEST DUP3 DUP2 MSTORE DUP2 DUP2 ADD SWAP1 DUP6 DUP4 ADD DUP4 DUP6 MUL DUP8 ADD DUP5 ADD DUP12 LT ISZERO PUSH2 0x83F JUMPI DUP9 DUP10 REVERT JUMPDEST DUP9 SWAP7 POP JUMPDEST DUP5 DUP8 LT ISZERO PUSH2 0x86F JUMPI DUP1 MLOAD DUP1 PUSH1 0x6 SIGNEXTEND DUP2 EQ PUSH2 0x85B JUMPI DUP10 DUP11 REVERT JUMPDEST DUP4 MSTORE PUSH1 0x1 SWAP7 SWAP1 SWAP7 ADD SWAP6 SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH2 0x843 JUMP JUMPDEST POP SWAP2 DUP9 ADD MLOAD SWAP2 SWAP7 POP SWAP1 SWAP4 POP POP POP DUP1 DUP3 GT ISZERO PUSH2 0x888 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x895 DUP6 DUP3 DUP7 ADD PUSH2 0x73B JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x8B9 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x8C2 DUP9 PUSH2 0x7AE JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD MLOAD DUP1 PUSH1 0x2 SIGNEXTEND DUP2 EQ PUSH2 0x8D7 JUMPI DUP4 DUP5 REVERT JUMPDEST SWAP6 POP PUSH2 0x8E5 PUSH1 0x40 DUP10 ADD PUSH2 0x7C5 JUMP JUMPDEST SWAP5 POP PUSH2 0x8F3 PUSH1 0x60 DUP10 ADD PUSH2 0x7C5 JUMP JUMPDEST SWAP4 POP PUSH2 0x901 PUSH1 0x80 DUP10 ADD PUSH2 0x7C5 JUMP JUMPDEST SWAP3 POP PUSH1 0xA0 DUP9 ADD MLOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x916 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0xC0 DUP10 ADD MLOAD SWAP1 SWAP3 POP DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x92B JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x94C JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x9A5 JUMPI DUP4 MLOAD PUSH4 0xFFFFFFFF AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x983 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x26 SWAP1 DUP3 ADD MSTORE PUSH32 0x53616665436173743A2076616C756520646F65736E27742066697420696E2033 PUSH1 0x40 DUP3 ADD MSTORE PUSH6 0x322062697473 PUSH1 0xD0 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0xFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0xA2A JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0xA46 JUMPI INVALID JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC SWAP8 0xE0 0xC2 0xA9 DUP1 SWAP1 0xAA 0xCC 0xB1 SWAP4 DUP4 NOT 0xC2 DIV 0xF7 0x2B 0x24 0x1E LOG4 CALLDATALOAD XOR 0xE2 JUMPI SWAP9 0x4F PUSH1 0x66 SWAP10 MUL DUP2 CALLVALUE PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ", - "sourceMap": "614:2627:38:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;736:19;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;979:75;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1373:85::-;;;:::i;:::-;;;;;;;:::i;1096:235::-;;;;;;:::i;:::-;;:::i;736:19::-;;;-1:-1:-1;;;;;736:19:38;;:::o;979:75::-;-1:-1:-1;1043:7:38;;979:75::o;1373:85::-;1449:2;1373:85;:::o;1096:235::-;1164:7;1183:19;1205:71;1235:40;1255:19;1265:8;1255:9;:19::i;:::-;1235;:40::i;:::-;1205:29;:71::i;:::-;1183:93;;1293:31;1312:11;1293:18;:31::i;:::-;1286:38;;;1096:235;;;;:::o;726:413:2:-;1086:20;1124:8;;;726:413::o;2713:185:38:-;2842:5;2809:38;;;;;2800:91;;;;-1:-1:-1;;;2800:91:38;;;;;;;:::i;:::-;;;;;;;;1672:754;1745:7;1861:2;1846:12;:17;;;1842:148;;;1880:21;1932:4;;;;;;;;;-1:-1:-1;;;;;1932:4:38;-1:-1:-1;;;;;1917:26:38;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1879:66:38;;-1:-1:-1;1959:20:38;;-1:-1:-1;;;;;;1959:20:38;1842:148;2029:15;;;2042:1;2029:15;;;;;;;;1999:27;;2029:15;;;;;;;;;;-1:-1:-1;2029:15:38;1999:45;;2126:12;2109:11;2121:1;2109:14;;;;;;;;;;;;;:29;;;;;;;;;;;2165:1;2148:11;2160:1;2148:14;;;;;;;;:18;;;;:14;;;;;;;;;;;:18;2177:30;2228:4;;2213:41;;-1:-1:-1;;;2213:41:38;;-1:-1:-1;;;;;2228:4:38;;;;2213:28;;:41;;2242:11;;2213:41;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2213:41:38;;;;;;;;;;;;:::i;:::-;2176:78;;;2327:92;2405:12;2361:56;;2383:15;2399:1;2383:18;;;;;;;;;;;;;;2362:15;2378:1;2362:18;;;;;;;;;;;;;;:39;2361:56;;;;;;;;2327:27;:92::i;:::-;2320:99;1672:754;-1:-1:-1;;;;1672:754:38:o;2904:178::-;2988:7;3014:61;-1:-1:-1;;;;;3014:61:38;;;-1:-1:-1;;;3014:15:38;:61::i;:::-;3007:68;2904:178;-1:-1:-1;;2904:178:38:o;3088:151::-;3157:7;3183:49;3199:8;3209:4;-1:-1:-1;;;3183:15:38;:49::i;1355:2580:33:-;1418:20;1450:15;1475:1;1468:4;:8;;;:57;;1519:4;1512:12;;1468:57;;;1495:4;1488:12;;1487:13;;1468:57;1450:75;-1:-1:-1;637:9:33;1543:28;;;1535:42;;;;;-1:-1:-1;;;1535:42:33;;;;;;;;;;;;-1:-1:-1;;;1535:42:33;;;;;;;;;;;;;;;1588:13;1614:3;1604:13;;:93;;-1:-1:-1;;;1604:93:33;;;1625:34;1604:93;1588:109;;;-1:-1:-1;1721:3:33;1711:13;;:18;1707:83;;1748:34;1740:42;1787:3;1739:51;1707:83;1814:3;1804:13;;:18;1800:83;;1841:34;1833:42;1880:3;1832:51;1800:83;1907:3;1897:13;;:18;1893:83;;1934:34;1926:42;1973:3;1925:51;1893:83;2000:4;1990:14;;:19;1986:84;;2028:34;2020:42;2067:3;2019:51;1986:84;2094:4;2084:14;;:19;2080:84;;2122:34;2114:42;2161:3;2113:51;2080:84;2188:4;2178:14;;:19;2174:84;;2216:34;2208:42;2255:3;2207:51;2174:84;2282:4;2272:14;;:19;2268:84;;2310:34;2302:42;2349:3;2301:51;2268:84;2376:5;2366:15;;:20;2362:85;;2405:34;2397:42;2444:3;2396:51;2362:85;2471:5;2461:15;;:20;2457:85;;2500:34;2492:42;2539:3;2491:51;2457:85;2566:5;2556:15;;:20;2552:85;;2595:34;2587:42;2634:3;2586:51;2552:85;2661:5;2651:15;;:20;2647:85;;2690:34;2682:42;2729:3;2681:51;2647:85;2756:6;2746:16;;:21;2742:86;;2786:34;2778:42;2825:3;2777:51;2742:86;2852:6;2842:16;;:21;2838:86;;2882:34;2874:42;2921:3;2873:51;2838:86;2948:6;2938:16;;:21;2934:86;;2978:34;2970:42;3017:3;2969:51;2934:86;3044:6;3034:16;;:21;3030:86;;3074:34;3066:42;3113:3;3065:51;3030:86;3140:7;3130:17;;:22;3126:86;;3171:33;3163:41;3209:3;3162:50;3126:86;3236:7;3226:17;;:22;3222:85;;3267:32;3259:40;3304:3;3258:49;3222:85;3331:7;3321:17;;:22;3317:83;;3362:30;3354:38;3397:3;3353:47;3317:83;3424:7;3414:17;;:22;3410:78;;3455:25;3447:33;3485:3;3446:42;3410:78;3510:1;3503:4;:8;;;3499:47;;;3541:5;-1:-1:-1;;3521:25:33;;;;;;3513:33;;3499:47;3905:7;3896:5;:17;:22;:30;;3925:1;3896:30;;;3921:1;3896:30;3879:48;;3889:2;3880:5;:11;;3879:48;3856:72;;1355:2580;;;;;:::o;742:3776:23:-;854:14;;;-1:-1:-1;;1361:1:23;1358;1351:20;1393:9;;;;-1:-1:-1;1444:13:23;;;1428:14;;;;1424:34;;-1:-1:-1;1540:10:23;1536:179;;1588:1;1574:11;:15;1566:24;;;;;;-1:-1:-1;1641:23:23;;;;-1:-1:-1;1691:13:23;;1536:179;1842:5;1828:11;:19;1820:28;;;;;;2125:17;2201:11;2198:1;2195;2188:25;2553:12;2568;;;:26;;2688:22;;;;;3491:1;3472;:15;;3471:21;;3718:17;;;3714:21;;3707:28;3776:17;;;3772:21;;3765:28;3835:17;;;3831:21;;3824:28;3894:17;;;3890:21;;3883:28;3953:17;;;3949:21;;3942:28;4013:17;;;4009:21;;;4002:28;3060:12;;;;3056:23;;;3081:1;3052:31;2330:20;;;2319:32;;;3111:12;;;;2373:21;;;;2816:16;;;;3102:21;;;;4477:11;;;;;-1:-1:-1;;742:3776:23;;;;;;:::o;14:726:49:-;;138:3;131:4;123:6;119:17;115:27;105:2;;160:5;153;146:20;105:2;193:6;187:13;219:4;243:63;258:47;302:2;258:47;:::i;:::-;243:63;:::i;:::-;340:15;;;371:12;;;;403:15;;;449:11;;;437:24;;433:33;;430:42;-1:-1:-1;427:2:49;;;489:5;482;475:20;427:2;515:5;529:182;543:2;540:1;537:9;529:182;;;600:36;632:3;600:36;:::i;:::-;588:49;;657:12;;;;689;;;;561:1;554:9;529:182;;;-1:-1:-1;729:5:49;;95:645;-1:-1:-1;;;;;;;95:645:49:o;745:179::-;826:13;;-1:-1:-1;;;;;868:31:49;;858:42;;848:2;;914:1;911;904:12;929:165;1009:13;;1062:6;1051:18;;1041:29;;1031:2;;1084:1;1081;1074:12;1099:1321;;;1287:2;1275:9;1266:7;1262:23;1258:32;1255:2;;;1308:6;1300;1293:22;1255:2;1346:9;1340:16;1375:18;1416:2;1408:6;1405:14;1402:2;;;1437:6;1429;1422:22;1402:2;1480:6;1469:9;1465:22;1455:32;;1525:7;1518:4;1514:2;1510:13;1506:27;1496:2;;1552:6;1544;1537:22;1496:2;1586;1580:9;1608:4;1632:63;1647:47;1691:2;1647:47;:::i;1632:63::-;1729:15;;;1760:12;;;;1792:11;;;1830;;;1822:20;;1818:29;;1815:42;-1:-1:-1;1812:2:49;;;1875:6;1867;1860:22;1812:2;1902:6;1893:15;;1917:269;1931:2;1928:1;1925:9;1917:269;;;1995:3;1989:10;2046:5;2043:1;2032:20;2025:5;2022:31;2012:2;;2072:6;2064;2057:22;2012:2;2094:18;;1949:1;1942:9;;;;;2132:12;;;;2164;;1917:269;;;-1:-1:-1;2241:18:49;;;2235:25;2205:5;;-1:-1:-1;2235:25:49;;-1:-1:-1;;;2272:16:49;;;2269:2;;;2306:6;2298;2291:22;2269:2;;2334:80;2406:7;2395:8;2384:9;2380:24;2334:80;:::i;:::-;2324:90;;;1245:1175;;;;;:::o;2425:983::-;;;;;;;;2640:3;2628:9;2619:7;2615:23;2611:33;2608:2;;;2662:6;2654;2647:22;2608:2;2690:42;2722:9;2690:42;:::i;:::-;2680:52;;2775:2;2764:9;2760:18;2754:25;2822:5;2819:1;2808:20;2801:5;2798:31;2788:2;;2848:6;2840;2833:22;2788:2;2876:5;-1:-1:-1;2900:50:49;2946:2;2931:18;;2900:50;:::i;:::-;2890:60;;2969:50;3015:2;3004:9;3000:18;2969:50;:::i;:::-;2959:60;;3038:51;3084:3;3073:9;3069:19;3038:51;:::i;:::-;3028:61;;3134:3;3123:9;3119:19;3113:26;3183:4;3174:7;3170:18;3161:7;3158:31;3148:2;;3208:6;3200;3193:22;3148:2;3288:3;3273:19;;3267:26;3236:7;;-1:-1:-1;3331:15:49;;3324:23;3312:36;;3302:2;;3367:6;3359;3352:22;3302:2;3395:7;3385:17;;;2598:810;;;;;;;;;;:::o;3413:190::-;;3525:2;3513:9;3504:7;3500:23;3496:32;3493:2;;;3546:6;3538;3531:22;3493:2;-1:-1:-1;3574:23:49;;3483:120;-1:-1:-1;3483:120:49:o;3608:203::-;-1:-1:-1;;;;;3772:32:49;;;;3754:51;;3742:2;3727:18;;3709:102::o;3816:650::-;3985:2;4037:21;;;4107:13;;4010:18;;;4129:22;;;3816:650;;3985:2;4208:15;;;;4182:2;4167:18;;;3816:650;4254:186;4268:6;4265:1;4262:13;4254:186;;;4333:13;;4348:10;4329:30;4317:43;;4415:15;;;;4380:12;;;;4290:1;4283:9;4254:186;;;-1:-1:-1;4457:3:49;;3965:501;-1:-1:-1;;;;;;3965:501:49:o;4471:402::-;4673:2;4655:21;;;4712:2;4692:18;;;4685:30;4751:34;4746:2;4731:18;;4724:62;-1:-1:-1;;;4817:2:49;4802:18;;4795:36;4863:3;4848:19;;4645:228::o;4878:177::-;5024:25;;;5012:2;4997:18;;4979:76::o;5060:184::-;5232:4;5220:17;;;;5202:36;;5190:2;5175:18;;5157:87::o;5249:242::-;5319:2;5313:9;5349:17;;;5396:18;5381:34;;5417:22;;;5378:62;5375:2;;;5443:9;5375:2;5470;5463:22;5293:198;;-1:-1:-1;5293:198:49:o;5496:181::-;;5593:18;5585:6;5582:30;5579:2;;;5615:9;5579:2;-1:-1:-1;5666:4:49;5647:17;;;5643:28;;5569:108::o" - }, - "methodIdentifiers": { - "cacheTwap(uint256)": "1d1a111a", - "decimals()": "313ce567", - "getPrice(uint256)": "e7572230", - "pool()": "16f0115b" - } - }, - "storageLayout": { - "storage": [ - { - "astId": 8422, - "contract": "contracts/EmergencyPriceFeed.sol:EmergencyPriceFeed", - "label": "pool", - "offset": 0, - "slot": "0", - "type": "t_address" - } - ], - "types": { - "t_address": { - "encoding": "inplace", - "label": "address", - "numberOfBytes": "20" - } - } - } - } - }, - "contracts/base/BlockContext.sol": { - "BlockContext": { - "abi": [], - "evm": { - "bytecode": { - "generatedSources": [], - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "deployedBytecode": { - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "methodIdentifiers": {} - }, - "storageLayout": { - "storage": [], - "types": null - } - } - }, - "contracts/interface/IPriceFeed.sol": { - "IPriceFeed": { - "abi": [ - { - "inputs": [ - { - "internalType": "uint256", - "name": "interval", - "type": "uint256" - } - ], - "name": "cacheTwap", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "decimals", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "interval", - "type": "uint256" - } - ], - "name": "getPrice", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "evm": { - "bytecode": { - "generatedSources": [], - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "deployedBytecode": { - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "methodIdentifiers": { - "cacheTwap(uint256)": "1d1a111a", - "decimals()": "313ce567", - "getPrice(uint256)": "e7572230" - } - }, - "storageLayout": { - "storage": [], - "types": null - } - } - }, - "contracts/interface/bandProtocol/IStdReference.sol": { - "IStdReference": { - "abi": [ - { - "inputs": [ - { - "internalType": "string", - "name": "_base", - "type": "string" - }, - { - "internalType": "string", - "name": "_quote", - "type": "string" - } - ], - "name": "getReferenceData", - "outputs": [ - { - "components": [ - { - "internalType": "uint256", - "name": "rate", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "lastUpdatedBase", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "lastUpdatedQuote", - "type": "uint256" - } - ], - "internalType": "struct IStdReference.ReferenceData", - "name": "", - "type": "tuple" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "string[]", - "name": "_bases", - "type": "string[]" - }, - { - "internalType": "string[]", - "name": "_quotes", - "type": "string[]" - } - ], - "name": "getReferenceDataBulk", - "outputs": [ - { - "components": [ - { - "internalType": "uint256", - "name": "rate", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "lastUpdatedBase", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "lastUpdatedQuote", - "type": "uint256" - } - ], - "internalType": "struct IStdReference.ReferenceData[]", - "name": "", - "type": "tuple[]" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "evm": { - "bytecode": { - "generatedSources": [], - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "deployedBytecode": { - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "methodIdentifiers": { - "getReferenceData(string,string)": "65555bcc", - "getReferenceDataBulk(string[],string[])": "e42a071b" - } - }, - "storageLayout": { - "storage": [], - "types": null - } - } - }, - "contracts/test/TestAggregatorV3.sol": { - "TestAggregatorV3": { - "abi": [ - { - "inputs": [], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [], - "name": "decimals", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "description", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint80", - "name": "_roundId", - "type": "uint80" - } - ], - "name": "getRoundData", - "outputs": [ - { - "internalType": "uint80", - "name": "roundId", - "type": "uint80" - }, - { - "internalType": "int256", - "name": "answer", - "type": "int256" - }, - { - "internalType": "uint256", - "name": "startedAt", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "updatedAt", - "type": "uint256" - }, - { - "internalType": "uint80", - "name": "answeredInRound", - "type": "uint80" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "latestRound", - "outputs": [ - { - "internalType": "uint80", - "name": "", - "type": "uint80" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "latestRoundData", - "outputs": [ - { - "internalType": "uint80", - "name": "roundId", - "type": "uint80" - }, - { - "internalType": "int256", - "name": "answer", - "type": "int256" - }, - { - "internalType": "uint256", - "name": "startedAt", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "updatedAt", - "type": "uint256" - }, - { - "internalType": "uint80", - "name": "answeredInRound", - "type": "uint80" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint80", - "name": "", - "type": "uint80" - } - ], - "name": "roundData", - "outputs": [ - { - "internalType": "int256", - "name": "answer", - "type": "int256" - }, - { - "internalType": "uint256", - "name": "startedAt", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "updatedAt", - "type": "uint256" - }, - { - "internalType": "uint80", - "name": "answeredInRound", - "type": "uint80" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint80", - "name": "roundId", - "type": "uint80" - }, - { - "internalType": "int256", - "name": "answer", - "type": "int256" - }, - { - "internalType": "uint256", - "name": "startedAt", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "updatedAt", - "type": "uint256" - }, - { - "internalType": "uint80", - "name": "answeredInRound", - "type": "uint80" - } - ], - "name": "setRoundData", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "version", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "evm": { - "bytecode": { - "generatedSources": [], - "linkReferences": {}, - "object": "608060405234801561001057600080fd5b506103e4806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80637284e4161161005b5780637284e4161461012d5780639a6fc8f5146101aa578063bc81bae814610214578063feaf968c1461026957610088565b80631c12940a1461008d578063313ce567146100d157806354fd4d50146100ef578063668a0f0214610109575b600080fd5b6100cf600480360360a08110156100a357600080fd5b506001600160501b03813581169160208101359160408201359160608101359160809091013516610271565b005b6100d96102ed565b6040805160ff9092168252519081900360200190f35b6100f76102f2565b60408051918252519081900360200190f35b6101116102f9565b604080516001600160501b039092168252519081900360200190f35b610135610308565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561016f578181015183820152602001610157565b50505050905090810190601f16801561019c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101d0600480360360208110156101c057600080fd5b50356001600160501b031661030f565b60405180866001600160501b03168152602001858152602001848152602001838152602001826001600160501b031681526020019550505050505060405180910390f35b61023a6004803603602081101561022a57600080fd5b50356001600160501b0316610344565b604080519485526020850193909352838301919091526001600160501b03166060830152519081900360800190f35b6101d0610374565b6040805160808101825294855260208086019485528582019384526001600160501b0392831660608701908152968316600081815291829052919020945185559251600180860191909155915160028501559351600390930180549390941669ffffffffffffffffffff19938416179093558254909116179055565b600090565b6000806000fd5b6001546001600160501b031681565b6060600080fd5b6001600160501b0381811660009081526020819052604090208054600182015460028301546003909301549495919490931690565b6000602081905290815260409020805460018201546002830154600390930154919290916001600160501b031684565b600180546001600160501b03908116600081815260208190526040902080549381015460028201546003909201549295909391929091169056fea264697066735822122063b247f7a64d8308ad2d2bf0a582c9c4b532b7490d20ec452c852dbe0ad38a9264736f6c63430007060033", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3E4 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7284E416 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x7284E416 EQ PUSH2 0x12D JUMPI DUP1 PUSH4 0x9A6FC8F5 EQ PUSH2 0x1AA JUMPI DUP1 PUSH4 0xBC81BAE8 EQ PUSH2 0x214 JUMPI DUP1 PUSH4 0xFEAF968C EQ PUSH2 0x269 JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0x1C12940A EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0xD1 JUMPI DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x668A0F02 EQ PUSH2 0x109 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xCF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0xA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 SWAP1 SWAP2 ADD CALLDATALOAD AND PUSH2 0x271 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xD9 PUSH2 0x2ED JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xF7 PUSH2 0x2F2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x111 PUSH2 0x2F9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x135 PUSH2 0x308 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x16F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x157 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x19C JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1D0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB AND PUSH2 0x30F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x23A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x22A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB AND PUSH2 0x344 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP5 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP4 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB AND PUSH1 0x60 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1D0 PUSH2 0x374 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE SWAP5 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP5 DUP6 MSTORE DUP6 DUP3 ADD SWAP4 DUP5 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB SWAP3 DUP4 AND PUSH1 0x60 DUP8 ADD SWAP1 DUP2 MSTORE SWAP7 DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE SWAP2 DUP3 SWAP1 MSTORE SWAP2 SWAP1 KECCAK256 SWAP5 MLOAD DUP6 SSTORE SWAP3 MLOAD PUSH1 0x1 DUP1 DUP7 ADD SWAP2 SWAP1 SWAP2 SSTORE SWAP2 MLOAD PUSH1 0x2 DUP6 ADD SSTORE SWAP4 MLOAD PUSH1 0x3 SWAP1 SWAP4 ADD DUP1 SLOAD SWAP4 SWAP1 SWAP5 AND PUSH10 0xFFFFFFFFFFFFFFFFFFFF NOT SWAP4 DUP5 AND OR SWAP1 SWAP4 SSTORE DUP3 SLOAD SWAP1 SWAP2 AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB DUP2 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 SWAP1 SWAP4 ADD SLOAD SWAP5 SWAP6 SWAP2 SWAP5 SWAP1 SWAP4 AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP2 SWAP1 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 SWAP1 SWAP4 ADD SLOAD SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB AND DUP5 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB SWAP1 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD SWAP4 DUP2 ADD SLOAD PUSH1 0x2 DUP3 ADD SLOAD PUSH1 0x3 SWAP1 SWAP3 ADD SLOAD SWAP3 SWAP6 SWAP1 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 AND SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH4 0xB247F7A6 0x4D DUP4 ADDMOD 0xAD 0x2D 0x2B CREATE 0xA5 DUP3 0xC9 0xC4 0xB5 ORIGIN 0xB7 0x49 0xD KECCAK256 0xEC GASLIMIT 0x2C DUP6 0x2D 0xBE EXP 0xD3 DUP11 SWAP3 PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ", - "sourceMap": "178:1997:44:-:0;;;456:16;;;;;;;;;;178:1997;;;;;;" - }, - "deployedBytecode": { - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "608060405234801561001057600080fd5b50600436106100885760003560e01c80637284e4161161005b5780637284e4161461012d5780639a6fc8f5146101aa578063bc81bae814610214578063feaf968c1461026957610088565b80631c12940a1461008d578063313ce567146100d157806354fd4d50146100ef578063668a0f0214610109575b600080fd5b6100cf600480360360a08110156100a357600080fd5b506001600160501b03813581169160208101359160408201359160608101359160809091013516610271565b005b6100d96102ed565b6040805160ff9092168252519081900360200190f35b6100f76102f2565b60408051918252519081900360200190f35b6101116102f9565b604080516001600160501b039092168252519081900360200190f35b610135610308565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561016f578181015183820152602001610157565b50505050905090810190601f16801561019c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101d0600480360360208110156101c057600080fd5b50356001600160501b031661030f565b60405180866001600160501b03168152602001858152602001848152602001838152602001826001600160501b031681526020019550505050505060405180910390f35b61023a6004803603602081101561022a57600080fd5b50356001600160501b0316610344565b604080519485526020850193909352838301919091526001600160501b03166060830152519081900360800190f35b6101d0610374565b6040805160808101825294855260208086019485528582019384526001600160501b0392831660608701908152968316600081815291829052919020945185559251600180860191909155915160028501559351600390930180549390941669ffffffffffffffffffff19938416179093558254909116179055565b600090565b6000806000fd5b6001546001600160501b031681565b6060600080fd5b6001600160501b0381811660009081526020819052604090208054600182015460028301546003909301549495919490931690565b6000602081905290815260409020805460018201546002830154600390930154919290916001600160501b031684565b600180546001600160501b03908116600081815260208190526040902080549381015460028201546003909201549295909391929091169056fea264697066735822122063b247f7a64d8308ad2d2bf0a582c9c4b532b7490d20ec452c852dbe0ad38a9264736f6c63430007060033", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7284E416 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x7284E416 EQ PUSH2 0x12D JUMPI DUP1 PUSH4 0x9A6FC8F5 EQ PUSH2 0x1AA JUMPI DUP1 PUSH4 0xBC81BAE8 EQ PUSH2 0x214 JUMPI DUP1 PUSH4 0xFEAF968C EQ PUSH2 0x269 JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0x1C12940A EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0xD1 JUMPI DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x668A0F02 EQ PUSH2 0x109 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xCF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0xA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x80 SWAP1 SWAP2 ADD CALLDATALOAD AND PUSH2 0x271 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xD9 PUSH2 0x2ED JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xF7 PUSH2 0x2F2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x111 PUSH2 0x2F9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x135 PUSH2 0x308 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x16F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x157 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x19C JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1D0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB AND PUSH2 0x30F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x23A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x22A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB AND PUSH2 0x344 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP5 DUP6 MSTORE PUSH1 0x20 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP4 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB AND PUSH1 0x60 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1D0 PUSH2 0x374 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE SWAP5 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP5 DUP6 MSTORE DUP6 DUP3 ADD SWAP4 DUP5 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB SWAP3 DUP4 AND PUSH1 0x60 DUP8 ADD SWAP1 DUP2 MSTORE SWAP7 DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE SWAP2 DUP3 SWAP1 MSTORE SWAP2 SWAP1 KECCAK256 SWAP5 MLOAD DUP6 SSTORE SWAP3 MLOAD PUSH1 0x1 DUP1 DUP7 ADD SWAP2 SWAP1 SWAP2 SSTORE SWAP2 MLOAD PUSH1 0x2 DUP6 ADD SSTORE SWAP4 MLOAD PUSH1 0x3 SWAP1 SWAP4 ADD DUP1 SLOAD SWAP4 SWAP1 SWAP5 AND PUSH10 0xFFFFFFFFFFFFFFFFFFFF NOT SWAP4 DUP5 AND OR SWAP1 SWAP4 SSTORE DUP3 SLOAD SWAP1 SWAP2 AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB DUP2 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 SWAP1 SWAP4 ADD SLOAD SWAP5 SWAP6 SWAP2 SWAP5 SWAP1 SWAP4 AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP2 SWAP1 MSTORE SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 SWAP1 SWAP4 ADD SLOAD SWAP2 SWAP3 SWAP1 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB AND DUP5 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x50 SHL SUB SWAP1 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD SWAP4 DUP2 ADD SLOAD PUSH1 0x2 DUP3 ADD SLOAD PUSH1 0x3 SWAP1 SWAP3 ADD SLOAD SWAP3 SWAP6 SWAP1 SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 AND SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH4 0xB247F7A6 0x4D DUP4 ADDMOD 0xAD 0x2D 0x2B CREATE 0xA5 DUP3 0xC9 0xC4 0xB5 ORIGIN 0xB7 0x49 0xD KECCAK256 0xEC GASLIMIT 0x2C DUP6 0x2D 0xBE EXP 0xD3 DUP11 SWAP3 PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ", - "sourceMap": "178:1997:44:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;478:402;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;478:402:44;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;886:78;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1071:85;;;:::i;:::-;;;;;;;;;;;;;;;;424:25;;;:::i;:::-;;;;-1:-1:-1;;;;;424:25:44;;;;;;;;;;;;;;970:95;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1162:501;;;;;;;;;;;;;;;;-1:-1:-1;1162:501:44;-1:-1:-1;;;;;1162:501:44;;:::i;:::-;;;;;-1:-1:-1;;;;;1162:501:44;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1162:501:44;;;;;;;;;;;;;;;;;;;373:45;;;;;;;;;;;;;;;;-1:-1:-1;373:45:44;-1:-1:-1;;;;;373:45:44;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;373:45:44;;;;;;;;;;;;;;1669:504;;;:::i;478:402::-;679:163;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;679:163:44;;;;;;;;;658:18;;;-1:-1:-1;658:18:44;;;;;;;;;;:184;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;658:184:44;;;;;;;852:21;;;;;;;;478:402::o;886:78::-;938:5;886:78;:::o;1071:85::-;1122:7;1141:8;;;424:25;;;-1:-1:-1;;;;;424:25:44;;:::o;970:95::-;1025:13;1050:8;;;1162:501;-1:-1:-1;;;;;1485:19:44;;;1278:14;1485:19;;;;;;;;;;:26;;1525:29;;;;1568;;;;1611:35;;;;;1485:19;;:26;;1525:29;;1611:35;;1162:501::o;373:45::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;373:45:44;;:::o;1669:504::-;1958:11;;;-1:-1:-1;;;;;1958:11:44;;;1773:14;1983:22;;;;;;;;;;:29;;2026:32;;;;2072;;;;2118:38;;;;;1958:11;;2026:32;;2072;;2118:38;;;;1669:504::o" - }, - "methodIdentifiers": { - "decimals()": "313ce567", - "description()": "7284e416", - "getRoundData(uint80)": "9a6fc8f5", - "latestRound()": "668a0f02", - "latestRoundData()": "feaf968c", - "roundData(uint80)": "bc81bae8", - "setRoundData(uint80,int256,uint256,uint256,uint80)": "1c12940a", - "version()": "54fd4d50" - } - }, - "storageLayout": { - "storage": [ - { - "astId": 8719, - "contract": "contracts/test/TestAggregatorV3.sol:TestAggregatorV3", - "label": "roundData", - "offset": 0, - "slot": "0", - "type": "t_mapping(t_uint80,t_struct(RoundData)8715_storage)" - }, - { - "astId": 8721, - "contract": "contracts/test/TestAggregatorV3.sol:TestAggregatorV3", - "label": "latestRound", - "offset": 0, - "slot": "1", - "type": "t_uint80" - } - ], - "types": { - "t_int256": { - "encoding": "inplace", - "label": "int256", - "numberOfBytes": "32" - }, - "t_mapping(t_uint80,t_struct(RoundData)8715_storage)": { - "encoding": "mapping", - "key": "t_uint80", - "label": "mapping(uint80 => struct TestAggregatorV3.RoundData)", - "numberOfBytes": "32", - "value": "t_struct(RoundData)8715_storage" - }, - "t_struct(RoundData)8715_storage": { - "encoding": "inplace", - "label": "struct TestAggregatorV3.RoundData", - "members": [ - { - "astId": 8708, - "contract": "contracts/test/TestAggregatorV3.sol:TestAggregatorV3", - "label": "answer", - "offset": 0, - "slot": "0", - "type": "t_int256" - }, - { - "astId": 8710, - "contract": "contracts/test/TestAggregatorV3.sol:TestAggregatorV3", - "label": "startedAt", - "offset": 0, - "slot": "1", - "type": "t_uint256" - }, - { - "astId": 8712, - "contract": "contracts/test/TestAggregatorV3.sol:TestAggregatorV3", - "label": "updatedAt", - "offset": 0, - "slot": "2", - "type": "t_uint256" - }, - { - "astId": 8714, - "contract": "contracts/test/TestAggregatorV3.sol:TestAggregatorV3", - "label": "answeredInRound", - "offset": 0, - "slot": "3", - "type": "t_uint80" - } - ], - "numberOfBytes": "128" - }, - "t_uint256": { - "encoding": "inplace", - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint80": { - "encoding": "inplace", - "label": "uint80", - "numberOfBytes": "10" - } - } - } - } - }, - "contracts/test/TestPriceFeed.sol": { - "TestPriceFeed": { - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "_chainlink", - "type": "address" - }, - { - "internalType": "address", - "name": "_bandProtocol", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [], - "name": "bandProtocol", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "interval", - "type": "uint256" - } - ], - "name": "cachedBandProtocolPrice", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "interval", - "type": "uint256" - } - ], - "name": "cachedChainlinkPrice", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "chainlink", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "currentPrice", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "interval", - "type": "uint256" - } - ], - "name": "fetchBandProtocolPrice", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "interval", - "type": "uint256" - } - ], - "name": "fetchChainlinkPrice", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "interval", - "type": "uint256" - } - ], - "name": "getPrice", - "outputs": [ - { - "internalType": "uint256", - "name": "twap", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "cachedTwap", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "evm": { - "bytecode": { - "generatedSources": [], - "linkReferences": {}, - "object": "608060405234801561001057600080fd5b5060405161070e38038061070e8339818101604052604081101561003357600080fd5b508051602090910151600080546001600160a01b039384166001600160a01b03199182161790915560018054939092169216919091179055600a60025561068f8061007f6000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80639c3feeb71161005b5780639c3feeb71461010a5780639d1b464a14610112578063bd31d5861461012c578063e75722301461014957610088565b80630b2729c11461008d5780631b05d6d0146100ac5780633d9fe301146100c95780636fea6b1c146100e6575b600080fd5b6100aa600480360360208110156100a357600080fd5b503561017f565b005b6100aa600480360360208110156100c257600080fd5b503561028a565b6100aa600480360360208110156100df57600080fd5b503561037d565b6100ee61045a565b604080516001600160a01b039092168252519081900360200190f35b6100ee610469565b61011a610478565b60408051918252519081900360200190f35b6100aa6004803603602081101561014257600080fd5b503561047e565b6101666004803603602081101561015f57600080fd5b5035610557565b6040805192835260208301919091528051918290030190f35b60005b601181101561020b5760005460408051630e75722360e41b81526004810185905290516001600160a01b039092169163e757223091602480820192602092909190829003018186803b1580156101d757600080fd5b505afa1580156101eb573d6000803e3d6000fd5b505050506040513d602081101561020157600080fd5b5050600101610182565b5060005460408051630e75722360e41b81526004810184905290516001600160a01b039092169163e757223091602480820192602092909190829003018186803b15801561025857600080fd5b505afa15801561026c573d6000803e3d6000fd5b505050506040513d602081101561028257600080fd5b505160025550565b60005b6011811015610319576000805460408051630e8d088d60e11b81526004810186905290516001600160a01b0390921692631d1a111a926024808401936020939083900390910190829087803b1580156102e557600080fd5b505af11580156102f9573d6000803e3d6000fd5b505050506040513d602081101561030f57600080fd5b505060010161028d565b506000805460408051630e8d088d60e11b81526004810185905290516001600160a01b0390921692631d1a111a926024808401936020939083900390910190829087803b15801561036957600080fd5b505af115801561026c573d6000803e3d6000fd5b60005b601181101561040b5760015460408051630e8d088d60e11b81526004810185905290516001600160a01b0390921691631d1a111a916024808201926020929091908290030181600087803b1580156103d757600080fd5b505af11580156103eb573d6000803e3d6000fd5b505050506040513d602081101561040157600080fd5b5050600101610380565b5060015460408051630e8d088d60e11b81526004810184905290516001600160a01b0390921691631d1a111a916024808201926020929091908290030181600087803b15801561036957600080fd5b6001546001600160a01b031681565b6000546001600160a01b031681565b60025481565b60005b601181101561050a5760015460408051630e75722360e41b81526004810185905290516001600160a01b039092169163e757223091602480820192602092909190829003018186803b1580156104d657600080fd5b505afa1580156104ea573d6000803e3d6000fd5b505050506040513d602081101561050057600080fd5b5050600101610481565b5060015460408051630e75722360e41b81526004810184905290516001600160a01b039092169163e757223091602480820192602092909190829003018186803b15801561025857600080fd5b60015460408051630e75722360e41b815260048101849052905160009283926001600160a01b039091169163e757223091602480820192602092909190829003018186803b1580156105a857600080fd5b505afa1580156105bc573d6000803e3d6000fd5b505050506040513d60208110156105d257600080fd5b505160015460408051630e8d088d60e11b81526004810187905290519294506001600160a01b0390911691631d1a111a916024808201926020929091908290030181600087803b15801561062557600080fd5b505af1158015610639573d6000803e3d6000fd5b505050506040513d602081101561064f57600080fd5b505191939192505056fea2646970667358221220aec50ab960822f22004ef2ab8832a87e036012953b9d651119d100655828c07164736f6c63430007060033", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x70E CODESIZE SUB DUP1 PUSH2 0x70E DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP2 DUP3 AND OR SWAP1 SWAP2 SSTORE PUSH1 0x1 DUP1 SLOAD SWAP4 SWAP1 SWAP3 AND SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0xA PUSH1 0x2 SSTORE PUSH2 0x68F DUP1 PUSH2 0x7F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9C3FEEB7 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x9C3FEEB7 EQ PUSH2 0x10A JUMPI DUP1 PUSH4 0x9D1B464A EQ PUSH2 0x112 JUMPI DUP1 PUSH4 0xBD31D586 EQ PUSH2 0x12C JUMPI DUP1 PUSH4 0xE7572230 EQ PUSH2 0x149 JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0xB2729C1 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x1B05D6D0 EQ PUSH2 0xAC JUMPI DUP1 PUSH4 0x3D9FE301 EQ PUSH2 0xC9 JUMPI DUP1 PUSH4 0x6FEA6B1C EQ PUSH2 0xE6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xAA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x17F JUMP JUMPDEST STOP JUMPDEST PUSH2 0xAA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x28A JUMP JUMPDEST PUSH2 0xAA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xDF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x37D JUMP JUMPDEST PUSH2 0xEE PUSH2 0x45A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xEE PUSH2 0x469 JUMP JUMPDEST PUSH2 0x11A PUSH2 0x478 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xAA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x142 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x47E JUMP JUMPDEST PUSH2 0x166 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x15F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x557 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x11 DUP2 LT ISZERO PUSH2 0x20B JUMPI PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xE757223 PUSH1 0xE4 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xE7572230 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1EB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x201 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x182 JUMP JUMPDEST POP PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xE757223 PUSH1 0xE4 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xE7572230 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x258 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x26C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x282 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x2 SSTORE POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x11 DUP2 LT ISZERO PUSH2 0x319 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xE8D088D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP3 PUSH4 0x1D1A111A SWAP3 PUSH1 0x24 DUP1 DUP5 ADD SWAP4 PUSH1 0x20 SWAP4 SWAP1 DUP4 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP3 SWAP1 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2F9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x30F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x28D JUMP JUMPDEST POP PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xE8D088D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP3 PUSH4 0x1D1A111A SWAP3 PUSH1 0x24 DUP1 DUP5 ADD SWAP4 PUSH1 0x20 SWAP4 SWAP1 DUP4 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP3 SWAP1 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x369 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x26C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x11 DUP2 LT ISZERO PUSH2 0x40B JUMPI PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xE8D088D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x1D1A111A SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3EB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x401 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x380 JUMP JUMPDEST POP PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xE8D088D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x1D1A111A SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x369 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x11 DUP2 LT ISZERO PUSH2 0x50A JUMPI PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xE757223 PUSH1 0xE4 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xE7572230 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4EA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x500 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x481 JUMP JUMPDEST POP PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xE757223 PUSH1 0xE4 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xE7572230 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x258 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xE757223 PUSH1 0xE4 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 DUP4 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 PUSH4 0xE7572230 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5BC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xE8D088D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP8 SWAP1 MSTORE SWAP1 MLOAD SWAP3 SWAP5 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 PUSH4 0x1D1A111A SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x625 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x639 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x64F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP4 SWAP2 SWAP3 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAE 0xC5 EXP 0xB9 PUSH1 0x82 0x2F 0x22 STOP 0x4E CALLCODE 0xAB DUP9 ORIGIN 0xA8 PUSH31 0x36012953B9D651119D100655828C07164736F6C6343000706003300000000 ", - "sourceMap": "123:1775:45:-:0;;;250:159;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;250:159:45;;;;;;;315:9;:22;;-1:-1:-1;;;;;315:22:45;;;-1:-1:-1;;;;;;315:22:45;;;;;;;;347:28;;;;;;;;;;;;;;400:2;385:12;:17;123:1775;;;;;;" - }, - "deployedBytecode": { - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "608060405234801561001057600080fd5b50600436106100885760003560e01c80639c3feeb71161005b5780639c3feeb71461010a5780639d1b464a14610112578063bd31d5861461012c578063e75722301461014957610088565b80630b2729c11461008d5780631b05d6d0146100ac5780633d9fe301146100c95780636fea6b1c146100e6575b600080fd5b6100aa600480360360208110156100a357600080fd5b503561017f565b005b6100aa600480360360208110156100c257600080fd5b503561028a565b6100aa600480360360208110156100df57600080fd5b503561037d565b6100ee61045a565b604080516001600160a01b039092168252519081900360200190f35b6100ee610469565b61011a610478565b60408051918252519081900360200190f35b6100aa6004803603602081101561014257600080fd5b503561047e565b6101666004803603602081101561015f57600080fd5b5035610557565b6040805192835260208301919091528051918290030190f35b60005b601181101561020b5760005460408051630e75722360e41b81526004810185905290516001600160a01b039092169163e757223091602480820192602092909190829003018186803b1580156101d757600080fd5b505afa1580156101eb573d6000803e3d6000fd5b505050506040513d602081101561020157600080fd5b5050600101610182565b5060005460408051630e75722360e41b81526004810184905290516001600160a01b039092169163e757223091602480820192602092909190829003018186803b15801561025857600080fd5b505afa15801561026c573d6000803e3d6000fd5b505050506040513d602081101561028257600080fd5b505160025550565b60005b6011811015610319576000805460408051630e8d088d60e11b81526004810186905290516001600160a01b0390921692631d1a111a926024808401936020939083900390910190829087803b1580156102e557600080fd5b505af11580156102f9573d6000803e3d6000fd5b505050506040513d602081101561030f57600080fd5b505060010161028d565b506000805460408051630e8d088d60e11b81526004810185905290516001600160a01b0390921692631d1a111a926024808401936020939083900390910190829087803b15801561036957600080fd5b505af115801561026c573d6000803e3d6000fd5b60005b601181101561040b5760015460408051630e8d088d60e11b81526004810185905290516001600160a01b0390921691631d1a111a916024808201926020929091908290030181600087803b1580156103d757600080fd5b505af11580156103eb573d6000803e3d6000fd5b505050506040513d602081101561040157600080fd5b5050600101610380565b5060015460408051630e8d088d60e11b81526004810184905290516001600160a01b0390921691631d1a111a916024808201926020929091908290030181600087803b15801561036957600080fd5b6001546001600160a01b031681565b6000546001600160a01b031681565b60025481565b60005b601181101561050a5760015460408051630e75722360e41b81526004810185905290516001600160a01b039092169163e757223091602480820192602092909190829003018186803b1580156104d657600080fd5b505afa1580156104ea573d6000803e3d6000fd5b505050506040513d602081101561050057600080fd5b5050600101610481565b5060015460408051630e75722360e41b81526004810184905290516001600160a01b039092169163e757223091602480820192602092909190829003018186803b15801561025857600080fd5b60015460408051630e75722360e41b815260048101849052905160009283926001600160a01b039091169163e757223091602480820192602092909190829003018186803b1580156105a857600080fd5b505afa1580156105bc573d6000803e3d6000fd5b505050506040513d60208110156105d257600080fd5b505160015460408051630e8d088d60e11b81526004810187905290519294506001600160a01b0390911691631d1a111a916024808201926020929091908290030181600087803b15801561062557600080fd5b505af1158015610639573d6000803e3d6000fd5b505050506040513d602081101561064f57600080fd5b505191939192505056fea2646970667358221220aec50ab960822f22004ef2ab8832a87e036012953b9d651119d100655828c07164736f6c63430007060033", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9C3FEEB7 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x9C3FEEB7 EQ PUSH2 0x10A JUMPI DUP1 PUSH4 0x9D1B464A EQ PUSH2 0x112 JUMPI DUP1 PUSH4 0xBD31D586 EQ PUSH2 0x12C JUMPI DUP1 PUSH4 0xE7572230 EQ PUSH2 0x149 JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0xB2729C1 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x1B05D6D0 EQ PUSH2 0xAC JUMPI DUP1 PUSH4 0x3D9FE301 EQ PUSH2 0xC9 JUMPI DUP1 PUSH4 0x6FEA6B1C EQ PUSH2 0xE6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xAA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x17F JUMP JUMPDEST STOP JUMPDEST PUSH2 0xAA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x28A JUMP JUMPDEST PUSH2 0xAA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xDF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x37D JUMP JUMPDEST PUSH2 0xEE PUSH2 0x45A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xEE PUSH2 0x469 JUMP JUMPDEST PUSH2 0x11A PUSH2 0x478 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xAA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x142 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x47E JUMP JUMPDEST PUSH2 0x166 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x15F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x557 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x11 DUP2 LT ISZERO PUSH2 0x20B JUMPI PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xE757223 PUSH1 0xE4 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xE7572230 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1EB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x201 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x182 JUMP JUMPDEST POP PUSH1 0x0 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xE757223 PUSH1 0xE4 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xE7572230 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x258 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x26C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x282 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x2 SSTORE POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x11 DUP2 LT ISZERO PUSH2 0x319 JUMPI PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xE8D088D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP3 PUSH4 0x1D1A111A SWAP3 PUSH1 0x24 DUP1 DUP5 ADD SWAP4 PUSH1 0x20 SWAP4 SWAP1 DUP4 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP3 SWAP1 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2F9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x30F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x28D JUMP JUMPDEST POP PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xE8D088D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP3 PUSH4 0x1D1A111A SWAP3 PUSH1 0x24 DUP1 DUP5 ADD SWAP4 PUSH1 0x20 SWAP4 SWAP1 DUP4 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP3 SWAP1 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x369 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x26C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x11 DUP2 LT ISZERO PUSH2 0x40B JUMPI PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xE8D088D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x1D1A111A SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3EB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x401 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x380 JUMP JUMPDEST POP PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xE8D088D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0x1D1A111A SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x369 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x11 DUP2 LT ISZERO PUSH2 0x50A JUMPI PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xE757223 PUSH1 0xE4 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xE7572230 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4EA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x500 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x481 JUMP JUMPDEST POP PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xE757223 PUSH1 0xE4 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 PUSH4 0xE7572230 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x258 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xE757223 PUSH1 0xE4 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x0 SWAP3 DUP4 SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 PUSH4 0xE7572230 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5BC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0xE8D088D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP8 SWAP1 MSTORE SWAP1 MLOAD SWAP3 SWAP5 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 PUSH4 0x1D1A111A SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x625 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x639 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x64F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP4 SWAP2 SWAP3 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAE 0xC5 EXP 0xB9 PUSH1 0x82 0x2F 0x22 STOP 0x4E CALLCODE 0xAB DUP9 ORIGIN 0xA8 PUSH31 0x36012953B9D651119D100655828C07164736F6C6343000706003300000000 ", - "sourceMap": "123:1775:45:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;458:235;;;;;;;;;;;;;;;;-1:-1:-1;458:235:45;;:::i;:::-;;949:238;;;;;;;;;;;;;;;;-1:-1:-1;949:238:45;;:::i;1193:247::-;;;;;;;;;;;;;;;;-1:-1:-1;1193:247:45;;:::i;182:27::-;;;:::i;:::-;;;;-1:-1:-1;;;;;182:27:45;;;;;;;;;;;;;;152:24;;;:::i;216:27::-;;;:::i;:::-;;;;;;;;;;;;;;;;699:244;;;;;;;;;;;;;;;;-1:-1:-1;699:244:45;;:::i;1674:222::-;;;;;;;;;;;;;;;;-1:-1:-1;1674:222:45;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;458:235;529:9;524:98;548:2;544:1;:6;524:98;;;582:9;;571:40;;;-1:-1:-1;;;571:40:45;;;;;;;;;;-1:-1:-1;;;;;582:9:45;;;;571:30;;:40;;;;;;;;;;;;;;;582:9;571:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;552:3:45;;524:98;;;-1:-1:-1;657:9:45;;646:40;;;-1:-1:-1;;;646:40:45;;;;;;;;;;-1:-1:-1;;;;;657:9:45;;;;646:30;;:40;;;;;;;;;;;;;;;657:9;646:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;646:40:45;631:12;:55;-1:-1:-1;458:235:45:o;949:238::-;1021:9;1016:99;1040:2;1036:1;:6;1016:99;;;1074:9;;;1063:41;;;-1:-1:-1;;;1063:41:45;;;;;;;;;;-1:-1:-1;;;;;1074:9:45;;;;1063:31;;:41;;;;;;;;;;;;;;;;;1074:9;1063:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1044:3:45;;1016:99;;;-1:-1:-1;1150:9:45;;;1139:41;;;-1:-1:-1;;;1139:41:45;;;;;;;;;;-1:-1:-1;;;;;1150:9:45;;;;1139:31;;:41;;;;;;;;;;;;;;;;;1150:9;1139:41;;;;;;;;;;;;;;;;;;;;;;;;;;1193:247;1268:9;1263:102;1287:2;1283:1;:6;1263:102;;;1321:12;;1310:44;;;-1:-1:-1;;;1310:44:45;;;;;;;;;;-1:-1:-1;;;;;1321:12:45;;;;1310:34;;:44;;;;;;;;;;;;;;;1321:12;;1310:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1291:3:45;;1263:102;;;-1:-1:-1;1400:12:45;;1389:44;;;-1:-1:-1;;;1389:44:45;;;;;;;;;;-1:-1:-1;;;;;1400:12:45;;;;1389:34;;:44;;;;;;;;;;;;;;;1400:12;;1389:44;;;;;;;;;;182:27;;;-1:-1:-1;;;;;182:27:45;;:::o;152:24::-;;;-1:-1:-1;;;;;152:24:45;;:::o;216:27::-;;;;:::o;699:244::-;773:9;768:101;792:2;788:1;:6;768:101;;;826:12;;815:43;;;-1:-1:-1;;;815:43:45;;;;;;;;;;-1:-1:-1;;;;;826:12:45;;;;815:33;;:43;;;;;;;;;;;;;;;826:12;815:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;796:3:45;;768:101;;;-1:-1:-1;904:12:45;;893:43;;;-1:-1:-1;;;893:43:45;;;;;;;;;;-1:-1:-1;;;;;904:12:45;;;;893:33;;:43;;;;;;;;;;;;;;;904:12;893:43;;;;;;;;;;1674:222;1790:12;;1779:43;;;-1:-1:-1;;;1779:43:45;;;;;;;;;;1728:12;;;;-1:-1:-1;;;;;1790:12:45;;;;1779:33;;:43;;;;;;;;;;;;;;;1790:12;1779:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1779:43:45;1856:12;;1845:44;;;-1:-1:-1;;;1845:44:45;;;;;;;;;;1779:43;;-1:-1:-1;;;;;;1856:12:45;;;;1845:34;;:44;;;;;1779:43;;1845:44;;;;;;;;1856:12;;1845:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1845:44:45;1674:222;;1845:44;;-1:-1:-1;;1674:222:45:o" - }, - "methodIdentifiers": { - "bandProtocol()": "6fea6b1c", - "cachedBandProtocolPrice(uint256)": "3d9fe301", - "cachedChainlinkPrice(uint256)": "1b05d6d0", - "chainlink()": "9c3feeb7", - "currentPrice()": "9d1b464a", - "fetchBandProtocolPrice(uint256)": "bd31d586", - "fetchChainlinkPrice(uint256)": "0b2729c1", - "getPrice(uint256)": "e7572230" - } - }, - "storageLayout": { - "storage": [ - { - "astId": 8860, - "contract": "contracts/test/TestPriceFeed.sol:TestPriceFeed", - "label": "chainlink", - "offset": 0, - "slot": "0", - "type": "t_address" - }, - { - "astId": 8862, - "contract": "contracts/test/TestPriceFeed.sol:TestPriceFeed", - "label": "bandProtocol", - "offset": 0, - "slot": "1", - "type": "t_address" - }, - { - "astId": 8864, - "contract": "contracts/test/TestPriceFeed.sol:TestPriceFeed", - "label": "currentPrice", - "offset": 0, - "slot": "2", - "type": "t_uint256" - } - ], - "types": { - "t_address": { - "encoding": "inplace", - "label": "address", - "numberOfBytes": "20" - }, - "t_uint256": { - "encoding": "inplace", - "label": "uint256", - "numberOfBytes": "32" - } - } - } - } - }, - "contracts/test/TestStdReference.sol": { - "TestStdReference": { - "abi": [ - { - "inputs": [], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [ - { - "internalType": "string", - "name": "_base", - "type": "string" - }, - { - "internalType": "string", - "name": "_quote", - "type": "string" - } - ], - "name": "getReferenceData", - "outputs": [ - { - "components": [ - { - "internalType": "uint256", - "name": "rate", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "lastUpdatedBase", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "lastUpdatedQuote", - "type": "uint256" - } - ], - "internalType": "struct IStdReference.ReferenceData", - "name": "", - "type": "tuple" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "string[]", - "name": "_bases", - "type": "string[]" - }, - { - "internalType": "string[]", - "name": "_quotes", - "type": "string[]" - } - ], - "name": "getReferenceDataBulk", - "outputs": [ - { - "components": [ - { - "internalType": "uint256", - "name": "rate", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "lastUpdatedBase", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "lastUpdatedQuote", - "type": "uint256" - } - ], - "internalType": "struct IStdReference.ReferenceData[]", - "name": "", - "type": "tuple[]" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "refData", - "outputs": [ - { - "internalType": "uint256", - "name": "rate", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "lastUpdatedBase", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "lastUpdatedQuote", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "uint256", - "name": "rate", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "lastUpdatedBase", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "lastUpdatedQuote", - "type": "uint256" - } - ], - "internalType": "struct IStdReference.ReferenceData", - "name": "_refData", - "type": "tuple" - } - ], - "name": "setReferenceData", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "evm": { - "bytecode": { - "generatedSources": [], - "linkReferences": {}, - "object": "608060405234801561001057600080fd5b5061040d806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806365555bcc146100515780636d4d68151461007a578063dd5bed931461008f578063e42a071b146100a6575b600080fd5b61006461005f36600461027c565b6100c6565b604051610071919061038f565b60405180910390f35b61008d6100883660046102d3565b6100f7565b005b61009761010d565b6040516100719392919061039d565b6100b96100b436600461021b565b610119565b6040516100719190610341565b6100ce610120565b506040805160608101825260005481526001546020820152600254918101919091525b92915050565b8051600055602081015160015560400151600255565b60005460015460025483565b6060600080fd5b60405180606001604052806000815260200160008152602001600081525090565b600082601f830112610151578081fd5b8135602067ffffffffffffffff82111561016757fe5b61017481828402016103b3565b82815281810190858301855b858110156101a957610197898684358b01016101b6565b84529284019290840190600101610180565b5090979650505050505050565b600082601f8301126101c6578081fd5b813567ffffffffffffffff8111156101da57fe5b6101ed601f8201601f19166020016103b3565b818152846020838601011115610201578283fd5b816020850160208301379081016020019190915292915050565b6000806040838503121561022d578182fd5b823567ffffffffffffffff80821115610244578384fd5b61025086838701610141565b93506020850135915080821115610265578283fd5b5061027285828601610141565b9150509250929050565b6000806040838503121561028e578182fd5b823567ffffffffffffffff808211156102a5578384fd5b6102b1868387016101b6565b935060208501359150808211156102c6578283fd5b50610272858286016101b6565b6000606082840312156102e4578081fd5b6040516060810181811067ffffffffffffffff8211171561030157fe5b80604052508235815260208301356020820152604083013560408201528091505092915050565b8051825260208082015190830152604090810151910152565b6020808252825182820181905260009190848201906040850190845b8181101561038357610370838551610328565b928401926060929092019160010161035d565b50909695505050505050565b606081016100f18284610328565b9283526020830191909152604082015260600190565b60405181810167ffffffffffffffff811182821017156103cf57fe5b60405291905056fea26469706673582212200153473874d9f1597d91cbac5a5165e1467ab6602546135b88bfe3cda5f4d68464736f6c63430007060033", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x40D DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x65555BCC EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x6D4D6815 EQ PUSH2 0x7A JUMPI DUP1 PUSH4 0xDD5BED93 EQ PUSH2 0x8F JUMPI DUP1 PUSH4 0xE42A071B EQ PUSH2 0xA6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x64 PUSH2 0x5F CALLDATASIZE PUSH1 0x4 PUSH2 0x27C JUMP JUMPDEST PUSH2 0xC6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x71 SWAP2 SWAP1 PUSH2 0x38F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x8D PUSH2 0x88 CALLDATASIZE PUSH1 0x4 PUSH2 0x2D3 JUMP JUMPDEST PUSH2 0xF7 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x97 PUSH2 0x10D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x71 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x39D JUMP JUMPDEST PUSH2 0xB9 PUSH2 0xB4 CALLDATASIZE PUSH1 0x4 PUSH2 0x21B JUMP JUMPDEST PUSH2 0x119 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x71 SWAP2 SWAP1 PUSH2 0x341 JUMP JUMPDEST PUSH2 0xCE PUSH2 0x120 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x0 SLOAD DUP2 MSTORE PUSH1 0x1 SLOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x2 SLOAD SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x0 SSTORE PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x1 SSTORE PUSH1 0x40 ADD MLOAD PUSH1 0x2 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 SLOAD PUSH1 0x2 SLOAD DUP4 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x151 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x167 JUMPI INVALID JUMPDEST PUSH2 0x174 DUP2 DUP3 DUP5 MUL ADD PUSH2 0x3B3 JUMP JUMPDEST DUP3 DUP2 MSTORE DUP2 DUP2 ADD SWAP1 DUP6 DUP4 ADD DUP6 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x1A9 JUMPI PUSH2 0x197 DUP10 DUP7 DUP5 CALLDATALOAD DUP12 ADD ADD PUSH2 0x1B6 JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x180 JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1C6 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1DA JUMPI INVALID JUMPDEST PUSH2 0x1ED PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD PUSH2 0x3B3 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x201 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY SWAP1 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x22D JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x244 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x250 DUP7 DUP4 DUP8 ADD PUSH2 0x141 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x265 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x272 DUP6 DUP3 DUP7 ADD PUSH2 0x141 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x28E JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2A5 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x2B1 DUP7 DUP4 DUP8 ADD PUSH2 0x1B6 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x2C6 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x272 DUP6 DUP3 DUP7 ADD PUSH2 0x1B6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2E4 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x60 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x301 JUMPI INVALID JUMPDEST DUP1 PUSH1 0x40 MSTORE POP DUP3 CALLDATALOAD DUP2 MSTORE PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD CALLDATALOAD PUSH1 0x40 DUP3 ADD MSTORE DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 DUP1 DUP3 ADD MLOAD SWAP1 DUP4 ADD MSTORE PUSH1 0x40 SWAP1 DUP2 ADD MLOAD SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x383 JUMPI PUSH2 0x370 DUP4 DUP6 MLOAD PUSH2 0x328 JUMP JUMPDEST SWAP3 DUP5 ADD SWAP3 PUSH1 0x60 SWAP3 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x35D JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0xF1 DUP3 DUP5 PUSH2 0x328 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x3CF JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ADD MSTORE8 SELFBALANCE CODESIZE PUSH21 0xD9F1597D91CBAC5A5165E1467AB6602546135B88BF 0xE3 0xCD 0xA5 DELEGATECALL 0xD6 DUP5 PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ", - "sourceMap": "181:605:46:-:0;;;265:16;;;;;;;;;;181:605;;;;;;" - }, - "deployedBytecode": { - "generatedSources": [ - { - "ast": { - "nodeType": "YulBlock", - "src": "0:4877:49", - "statements": [ - { - "nodeType": "YulBlock", - "src": "6:3:49", - "statements": [] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "83:627:49", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "132:24:49", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "array", - "nodeType": "YulIdentifier", - "src": "141:5:49" - }, - { - "name": "array", - "nodeType": "YulIdentifier", - "src": "148:5:49" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "134:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "134:20:49" - }, - "nodeType": "YulExpressionStatement", - "src": "134:20:49" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "111:6:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "119:4:49", - "type": "", - "value": "0x1f" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "107:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "107:17:49" - }, - { - "name": "end", - "nodeType": "YulIdentifier", - "src": "126:3:49" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "103:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "103:27:49" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "96:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "96:35:49" - }, - "nodeType": "YulIf", - "src": "93:2:49" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "165:30:49", - "value": { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "188:6:49" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "175:12:49" - }, - "nodeType": "YulFunctionCall", - "src": "175:20:49" - }, - "variables": [ - { - "name": "_1", - "nodeType": "YulTypedName", - "src": "169:2:49", - "type": "" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "204:14:49", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "214:4:49", - "type": "", - "value": "0x20" - }, - "variables": [ - { - "name": "_2", - "nodeType": "YulTypedName", - "src": "208:2:49", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "257:13:49", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "invalid", - "nodeType": "YulIdentifier", - "src": "259:7:49" - }, - "nodeType": "YulFunctionCall", - "src": "259:9:49" - }, - "nodeType": "YulExpressionStatement", - "src": "259:9:49" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "233:2:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "237:18:49", - "type": "", - "value": "0xffffffffffffffff" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "230:2:49" - }, - "nodeType": "YulFunctionCall", - "src": "230:26:49" - }, - "nodeType": "YulIf", - "src": "227:2:49" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "279:47:49", - "value": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "313:2:49" - }, - { - "name": "_2", - "nodeType": "YulIdentifier", - "src": "317:2:49" - } - ], - "functionName": { - "name": "mul", - "nodeType": "YulIdentifier", - "src": "309:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "309:11:49" - }, - { - "name": "_2", - "nodeType": "YulIdentifier", - "src": "322:2:49" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "305:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "305:20:49" - } - ], - "functionName": { - "name": "allocateMemory", - "nodeType": "YulIdentifier", - "src": "290:14:49" - }, - "nodeType": "YulFunctionCall", - "src": "290:36:49" - }, - "variables": [ - { - "name": "dst", - "nodeType": "YulTypedName", - "src": "283:3:49", - "type": "" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "335:16:49", - "value": { - "name": "dst", - "nodeType": "YulIdentifier", - "src": "348:3:49" - }, - "variables": [ - { - "name": "dst_1", - "nodeType": "YulTypedName", - "src": "339:5:49", - "type": "" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "dst", - "nodeType": "YulIdentifier", - "src": "367:3:49" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "372:2:49" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "360:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "360:15:49" - }, - "nodeType": "YulExpressionStatement", - "src": "360:15:49" - }, - { - "nodeType": "YulAssignment", - "src": "384:19:49", - "value": { - "arguments": [ - { - "name": "dst", - "nodeType": "YulIdentifier", - "src": "395:3:49" - }, - { - "name": "_2", - "nodeType": "YulIdentifier", - "src": "400:2:49" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "391:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "391:12:49" - }, - "variableNames": [ - { - "name": "dst", - "nodeType": "YulIdentifier", - "src": "384:3:49" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "412:26:49", - "value": { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "427:6:49" - }, - { - "name": "_2", - "nodeType": "YulIdentifier", - "src": "435:2:49" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "423:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "423:15:49" - }, - "variables": [ - { - "name": "src", - "nodeType": "YulTypedName", - "src": "416:3:49", - "type": "" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "447:14:49", - "value": { - "name": "array", - "nodeType": "YulIdentifier", - "src": "456:5:49" - }, - "variables": [ - { - "name": "i", - "nodeType": "YulTypedName", - "src": "451:1:49", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "515:166:49", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "dst", - "nodeType": "YulIdentifier", - "src": "536:3:49" - }, - { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "569:6:49" - }, - { - "arguments": [ - { - "name": "src", - "nodeType": "YulIdentifier", - "src": "590:3:49" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "577:12:49" - }, - "nodeType": "YulFunctionCall", - "src": "577:17:49" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "565:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "565:30:49" - }, - { - "name": "_2", - "nodeType": "YulIdentifier", - "src": "597:2:49" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "561:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "561:39:49" - }, - { - "name": "end", - "nodeType": "YulIdentifier", - "src": "602:3:49" - } - ], - "functionName": { - "name": "abi_decode_t_string", - "nodeType": "YulIdentifier", - "src": "541:19:49" - }, - "nodeType": "YulFunctionCall", - "src": "541:65:49" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "529:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "529:78:49" - }, - "nodeType": "YulExpressionStatement", - "src": "529:78:49" - }, - { - "nodeType": "YulAssignment", - "src": "620:19:49", - "value": { - "arguments": [ - { - "name": "dst", - "nodeType": "YulIdentifier", - "src": "631:3:49" - }, - { - "name": "_2", - "nodeType": "YulIdentifier", - "src": "636:2:49" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "627:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "627:12:49" - }, - "variableNames": [ - { - "name": "dst", - "nodeType": "YulIdentifier", - "src": "620:3:49" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "652:19:49", - "value": { - "arguments": [ - { - "name": "src", - "nodeType": "YulIdentifier", - "src": "663:3:49" - }, - { - "name": "_2", - "nodeType": "YulIdentifier", - "src": "668:2:49" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "659:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "659:12:49" - }, - "variableNames": [ - { - "name": "src", - "nodeType": "YulIdentifier", - "src": "652:3:49" - } - ] - } - ] - }, - "condition": { - "arguments": [ - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "481:1:49" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "484:2:49" - } - ], - "functionName": { - "name": "lt", - "nodeType": "YulIdentifier", - "src": "478:2:49" - }, - "nodeType": "YulFunctionCall", - "src": "478:9:49" - }, - "nodeType": "YulForLoop", - "post": { - "nodeType": "YulBlock", - "src": "488:18:49", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "490:14:49", - "value": { - "arguments": [ - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "499:1:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "502:1:49", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "495:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "495:9:49" - }, - "variableNames": [ - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "490:1:49" - } - ] - } - ] - }, - "pre": { - "nodeType": "YulBlock", - "src": "474:3:49", - "statements": [] - }, - "src": "470:211:49" - }, - { - "nodeType": "YulAssignment", - "src": "690:14:49", - "value": { - "name": "dst_1", - "nodeType": "YulIdentifier", - "src": "699:5:49" - }, - "variableNames": [ - { - "name": "array", - "nodeType": "YulIdentifier", - "src": "690:5:49" - } - ] - } - ] - }, - "name": "abi_decode_t_array$_t_string_$dyn", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "57:6:49", - "type": "" - }, - { - "name": "end", - "nodeType": "YulTypedName", - "src": "65:3:49", - "type": "" - } - ], - "returnVariables": [ - { - "name": "array", - "nodeType": "YulTypedName", - "src": "73:5:49", - "type": "" - } - ], - "src": "14:696:49" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "770:488:49", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "819:24:49", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "array", - "nodeType": "YulIdentifier", - "src": "828:5:49" - }, - { - "name": "array", - "nodeType": "YulIdentifier", - "src": "835:5:49" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "821:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "821:20:49" - }, - "nodeType": "YulExpressionStatement", - "src": "821:20:49" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "798:6:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "806:4:49", - "type": "", - "value": "0x1f" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "794:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "794:17:49" - }, - { - "name": "end", - "nodeType": "YulIdentifier", - "src": "813:3:49" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "790:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "790:27:49" - } - ], - "functionName": { - "name": "iszero", - "nodeType": "YulIdentifier", - "src": "783:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "783:35:49" - }, - "nodeType": "YulIf", - "src": "780:2:49" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "852:30:49", - "value": { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "875:6:49" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "862:12:49" - }, - "nodeType": "YulFunctionCall", - "src": "862:20:49" - }, - "variables": [ - { - "name": "_1", - "nodeType": "YulTypedName", - "src": "856:2:49", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "921:13:49", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "invalid", - "nodeType": "YulIdentifier", - "src": "923:7:49" - }, - "nodeType": "YulFunctionCall", - "src": "923:9:49" - }, - "nodeType": "YulExpressionStatement", - "src": "923:9:49" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "897:2:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "901:18:49", - "type": "", - "value": "0xffffffffffffffff" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "894:2:49" - }, - "nodeType": "YulFunctionCall", - "src": "894:26:49" - }, - "nodeType": "YulIf", - "src": "891:2:49" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "943:69:49", - "value": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "985:2:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "989:4:49", - "type": "", - "value": "0x1f" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "981:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "981:13:49" - }, - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1000:2:49", - "type": "", - "value": "31" - } - ], - "functionName": { - "name": "not", - "nodeType": "YulIdentifier", - "src": "996:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "996:7:49" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "977:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "977:27:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1006:4:49", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "973:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "973:38:49" - } - ], - "functionName": { - "name": "allocateMemory", - "nodeType": "YulIdentifier", - "src": "958:14:49" - }, - "nodeType": "YulFunctionCall", - "src": "958:54:49" - }, - "variables": [ - { - "name": "array_1", - "nodeType": "YulTypedName", - "src": "947:7:49", - "type": "" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "array_1", - "nodeType": "YulIdentifier", - "src": "1028:7:49" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "1037:2:49" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "1021:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "1021:19:49" - }, - "nodeType": "YulExpressionStatement", - "src": "1021:19:49" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "1088:24:49", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "array", - "nodeType": "YulIdentifier", - "src": "1097:5:49" - }, - { - "name": "array", - "nodeType": "YulIdentifier", - "src": "1104:5:49" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "1090:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "1090:20:49" - }, - "nodeType": "YulExpressionStatement", - "src": "1090:20:49" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "1063:6:49" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "1071:2:49" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1059:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "1059:15:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1076:4:49", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1055:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "1055:26:49" - }, - { - "name": "end", - "nodeType": "YulIdentifier", - "src": "1083:3:49" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "1052:2:49" - }, - "nodeType": "YulFunctionCall", - "src": "1052:35:49" - }, - "nodeType": "YulIf", - "src": "1049:2:49" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "array_1", - "nodeType": "YulIdentifier", - "src": "1138:7:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1147:4:49", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1134:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "1134:18:49" - }, - { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "1158:6:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1166:4:49", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1154:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "1154:17:49" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "1173:2:49" - } - ], - "functionName": { - "name": "calldatacopy", - "nodeType": "YulIdentifier", - "src": "1121:12:49" - }, - "nodeType": "YulFunctionCall", - "src": "1121:55:49" - }, - "nodeType": "YulExpressionStatement", - "src": "1121:55:49" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "name": "array_1", - "nodeType": "YulIdentifier", - "src": "1200:7:49" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "1209:2:49" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1196:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "1196:16:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1214:4:49", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1192:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "1192:27:49" - }, - { - "name": "array", - "nodeType": "YulIdentifier", - "src": "1221:5:49" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "1185:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "1185:42:49" - }, - "nodeType": "YulExpressionStatement", - "src": "1185:42:49" - }, - { - "nodeType": "YulAssignment", - "src": "1236:16:49", - "value": { - "name": "array_1", - "nodeType": "YulIdentifier", - "src": "1245:7:49" - }, - "variableNames": [ - { - "name": "array", - "nodeType": "YulIdentifier", - "src": "1236:5:49" - } - ] - } - ] - }, - "name": "abi_decode_t_string", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "744:6:49", - "type": "" - }, - { - "name": "end", - "nodeType": "YulTypedName", - "src": "752:3:49", - "type": "" - } - ], - "returnVariables": [ - { - "name": "array", - "nodeType": "YulTypedName", - "src": "760:5:49", - "type": "" - } - ], - "src": "715:543:49" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "1420:498:49", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "1466:26:49", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "1475:6:49" - }, - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "1483:6:49" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "1468:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "1468:22:49" - }, - "nodeType": "YulExpressionStatement", - "src": "1468:22:49" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "1441:7:49" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1450:9:49" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "1437:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "1437:23:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1462:2:49", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "1433:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "1433:32:49" - }, - "nodeType": "YulIf", - "src": "1430:2:49" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "1501:37:49", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1528:9:49" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "1515:12:49" - }, - "nodeType": "YulFunctionCall", - "src": "1515:23:49" - }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "1505:6:49", - "type": "" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "1547:28:49", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1557:18:49", - "type": "", - "value": "0xffffffffffffffff" - }, - "variables": [ - { - "name": "_1", - "nodeType": "YulTypedName", - "src": "1551:2:49", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "1602:26:49", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "1611:6:49" - }, - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "1619:6:49" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "1604:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "1604:22:49" - }, - "nodeType": "YulExpressionStatement", - "src": "1604:22:49" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "1590:6:49" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "1598:2:49" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "1587:2:49" - }, - "nodeType": "YulFunctionCall", - "src": "1587:14:49" - }, - "nodeType": "YulIf", - "src": "1584:2:49" - }, - { - "nodeType": "YulAssignment", - "src": "1637:76:49", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1685:9:49" - }, - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "1696:6:49" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1681:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "1681:22:49" - }, - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "1705:7:49" - } - ], - "functionName": { - "name": "abi_decode_t_array$_t_string_$dyn", - "nodeType": "YulIdentifier", - "src": "1647:33:49" - }, - "nodeType": "YulFunctionCall", - "src": "1647:66:49" - }, - "variableNames": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "1637:6:49" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "1722:48:49", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1755:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1766:2:49", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1751:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "1751:18:49" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "1738:12:49" - }, - "nodeType": "YulFunctionCall", - "src": "1738:32:49" - }, - "variables": [ - { - "name": "offset_1", - "nodeType": "YulTypedName", - "src": "1726:8:49", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "1799:26:49", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "1808:6:49" - }, - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "1816:6:49" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "1801:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "1801:22:49" - }, - "nodeType": "YulExpressionStatement", - "src": "1801:22:49" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "offset_1", - "nodeType": "YulIdentifier", - "src": "1785:8:49" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "1795:2:49" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "1782:2:49" - }, - "nodeType": "YulFunctionCall", - "src": "1782:16:49" - }, - "nodeType": "YulIf", - "src": "1779:2:49" - }, - { - "nodeType": "YulAssignment", - "src": "1834:78:49", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "1882:9:49" - }, - { - "name": "offset_1", - "nodeType": "YulIdentifier", - "src": "1893:8:49" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "1878:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "1878:24:49" - }, - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "1904:7:49" - } - ], - "functionName": { - "name": "abi_decode_t_array$_t_string_$dyn", - "nodeType": "YulIdentifier", - "src": "1844:33:49" - }, - "nodeType": "YulFunctionCall", - "src": "1844:68:49" - }, - "variableNames": [ - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "1834:6:49" - } - ] - } - ] - }, - "name": "abi_decode_tuple_t_array$_t_string_memory_ptr_$dyn_memory_ptrt_array$_t_string_memory_ptr_$dyn_memory_ptr", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "1378:9:49", - "type": "" - }, - { - "name": "dataEnd", - "nodeType": "YulTypedName", - "src": "1389:7:49", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "1401:6:49", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "1409:6:49", - "type": "" - } - ], - "src": "1263:655:49" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "2030:470:49", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "2076:26:49", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "2085:6:49" - }, - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "2093:6:49" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "2078:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "2078:22:49" - }, - "nodeType": "YulExpressionStatement", - "src": "2078:22:49" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "2051:7:49" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2060:9:49" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "2047:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "2047:23:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2072:2:49", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "2043:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "2043:32:49" - }, - "nodeType": "YulIf", - "src": "2040:2:49" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "2111:37:49", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2138:9:49" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "2125:12:49" - }, - "nodeType": "YulFunctionCall", - "src": "2125:23:49" - }, - "variables": [ - { - "name": "offset", - "nodeType": "YulTypedName", - "src": "2115:6:49", - "type": "" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "2157:28:49", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2167:18:49", - "type": "", - "value": "0xffffffffffffffff" - }, - "variables": [ - { - "name": "_1", - "nodeType": "YulTypedName", - "src": "2161:2:49", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "2212:26:49", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "2221:6:49" - }, - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "2229:6:49" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "2214:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "2214:22:49" - }, - "nodeType": "YulExpressionStatement", - "src": "2214:22:49" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "2200:6:49" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "2208:2:49" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "2197:2:49" - }, - "nodeType": "YulFunctionCall", - "src": "2197:14:49" - }, - "nodeType": "YulIf", - "src": "2194:2:49" - }, - { - "nodeType": "YulAssignment", - "src": "2247:62:49", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2281:9:49" - }, - { - "name": "offset", - "nodeType": "YulIdentifier", - "src": "2292:6:49" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2277:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "2277:22:49" - }, - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "2301:7:49" - } - ], - "functionName": { - "name": "abi_decode_t_string", - "nodeType": "YulIdentifier", - "src": "2257:19:49" - }, - "nodeType": "YulFunctionCall", - "src": "2257:52:49" - }, - "variableNames": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "2247:6:49" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "2318:48:49", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2351:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2362:2:49", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2347:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "2347:18:49" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "2334:12:49" - }, - "nodeType": "YulFunctionCall", - "src": "2334:32:49" - }, - "variables": [ - { - "name": "offset_1", - "nodeType": "YulTypedName", - "src": "2322:8:49", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "2395:26:49", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "2404:6:49" - }, - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "2412:6:49" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "2397:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "2397:22:49" - }, - "nodeType": "YulExpressionStatement", - "src": "2397:22:49" - } - ] - }, - "condition": { - "arguments": [ - { - "name": "offset_1", - "nodeType": "YulIdentifier", - "src": "2381:8:49" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "2391:2:49" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "2378:2:49" - }, - "nodeType": "YulFunctionCall", - "src": "2378:16:49" - }, - "nodeType": "YulIf", - "src": "2375:2:49" - }, - { - "nodeType": "YulAssignment", - "src": "2430:64:49", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2464:9:49" - }, - { - "name": "offset_1", - "nodeType": "YulIdentifier", - "src": "2475:8:49" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2460:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "2460:24:49" - }, - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "2486:7:49" - } - ], - "functionName": { - "name": "abi_decode_t_string", - "nodeType": "YulIdentifier", - "src": "2440:19:49" - }, - "nodeType": "YulFunctionCall", - "src": "2440:54:49" - }, - "variableNames": [ - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "2430:6:49" - } - ] - } - ] - }, - "name": "abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "1988:9:49", - "type": "" - }, - { - "name": "dataEnd", - "nodeType": "YulTypedName", - "src": "1999:7:49", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "2011:6:49", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "2019:6:49", - "type": "" - } - ], - "src": "1923:577:49" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "2606:476:49", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "2652:26:49", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "2661:6:49" - }, - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "2669:6:49" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "2654:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "2654:22:49" - }, - "nodeType": "YulExpressionStatement", - "src": "2654:22:49" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "2627:7:49" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2636:9:49" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "2623:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "2623:23:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2648:2:49", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "2619:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "2619:32:49" - }, - "nodeType": "YulIf", - "src": "2616:2:49" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "2687:23:49", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2707:2:49", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "2701:5:49" - }, - "nodeType": "YulFunctionCall", - "src": "2701:9:49" - }, - "variables": [ - { - "name": "memPtr", - "nodeType": "YulTypedName", - "src": "2691:6:49", - "type": "" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "2719:33:49", - "value": { - "arguments": [ - { - "name": "memPtr", - "nodeType": "YulIdentifier", - "src": "2741:6:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2749:2:49", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2737:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "2737:15:49" - }, - "variables": [ - { - "name": "newFreePtr", - "nodeType": "YulTypedName", - "src": "2723:10:49", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "2827:13:49", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "invalid", - "nodeType": "YulIdentifier", - "src": "2829:7:49" - }, - "nodeType": "YulFunctionCall", - "src": "2829:9:49" - }, - "nodeType": "YulExpressionStatement", - "src": "2829:9:49" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "newFreePtr", - "nodeType": "YulIdentifier", - "src": "2770:10:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2782:18:49", - "type": "", - "value": "0xffffffffffffffff" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "2767:2:49" - }, - "nodeType": "YulFunctionCall", - "src": "2767:34:49" - }, - { - "arguments": [ - { - "name": "newFreePtr", - "nodeType": "YulIdentifier", - "src": "2806:10:49" - }, - { - "name": "memPtr", - "nodeType": "YulIdentifier", - "src": "2818:6:49" - } - ], - "functionName": { - "name": "lt", - "nodeType": "YulIdentifier", - "src": "2803:2:49" - }, - "nodeType": "YulFunctionCall", - "src": "2803:22:49" - } - ], - "functionName": { - "name": "or", - "nodeType": "YulIdentifier", - "src": "2764:2:49" - }, - "nodeType": "YulFunctionCall", - "src": "2764:62:49" - }, - "nodeType": "YulIf", - "src": "2761:2:49" - }, - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2856:2:49", - "type": "", - "value": "64" - }, - { - "name": "newFreePtr", - "nodeType": "YulIdentifier", - "src": "2860:10:49" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "2849:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "2849:22:49" - }, - "nodeType": "YulExpressionStatement", - "src": "2849:22:49" - }, - { - "expression": { - "arguments": [ - { - "name": "memPtr", - "nodeType": "YulIdentifier", - "src": "2887:6:49" - }, - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2908:9:49" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "2895:12:49" - }, - "nodeType": "YulFunctionCall", - "src": "2895:23:49" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "2880:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "2880:39:49" - }, - "nodeType": "YulExpressionStatement", - "src": "2880:39:49" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "memPtr", - "nodeType": "YulIdentifier", - "src": "2939:6:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2947:2:49", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2935:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "2935:15:49" - }, - { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "2969:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "2980:2:49", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "2965:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "2965:18:49" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "2952:12:49" - }, - "nodeType": "YulFunctionCall", - "src": "2952:32:49" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "2928:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "2928:57:49" - }, - "nodeType": "YulExpressionStatement", - "src": "2928:57:49" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "memPtr", - "nodeType": "YulIdentifier", - "src": "3005:6:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3013:2:49", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3001:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "3001:15:49" - }, - { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3035:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3046:2:49", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3031:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "3031:18:49" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "3018:12:49" - }, - "nodeType": "YulFunctionCall", - "src": "3018:32:49" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "2994:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "2994:57:49" - }, - "nodeType": "YulExpressionStatement", - "src": "2994:57:49" - }, - { - "nodeType": "YulAssignment", - "src": "3060:16:49", - "value": { - "name": "memPtr", - "nodeType": "YulIdentifier", - "src": "3070:6:49" - }, - "variableNames": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "3060:6:49" - } - ] - } - ] - }, - "name": "abi_decode_tuple_t_struct$_ReferenceData_$8676_memory_ptr", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "2572:9:49", - "type": "" - }, - { - "name": "dataEnd", - "nodeType": "YulTypedName", - "src": "2583:7:49", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "2595:6:49", - "type": "" - } - ], - "src": "2505:577:49" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "3147:153:49", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "3164:3:49" - }, - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "3175:5:49" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "3169:5:49" - }, - "nodeType": "YulFunctionCall", - "src": "3169:12:49" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "3157:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "3157:25:49" - }, - "nodeType": "YulExpressionStatement", - "src": "3157:25:49" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "3202:3:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3207:4:49", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3198:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "3198:14:49" - }, - { - "arguments": [ - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "3224:5:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3231:4:49", - "type": "", - "value": "0x20" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3220:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "3220:16:49" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "3214:5:49" - }, - "nodeType": "YulFunctionCall", - "src": "3214:23:49" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "3191:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "3191:47:49" - }, - "nodeType": "YulExpressionStatement", - "src": "3191:47:49" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "3258:3:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3263:4:49", - "type": "", - "value": "0x40" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3254:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "3254:14:49" - }, - { - "arguments": [ - { - "arguments": [ - { - "name": "value", - "nodeType": "YulIdentifier", - "src": "3280:5:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3287:4:49", - "type": "", - "value": "0x40" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3276:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "3276:16:49" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "3270:5:49" - }, - "nodeType": "YulFunctionCall", - "src": "3270:23:49" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "3247:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "3247:47:49" - }, - "nodeType": "YulExpressionStatement", - "src": "3247:47:49" - } - ] - }, - "name": "abi_encode_t_struct$_ReferenceData", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "value", - "nodeType": "YulTypedName", - "src": "3131:5:49", - "type": "" - }, - { - "name": "pos", - "nodeType": "YulTypedName", - "src": "3138:3:49", - "type": "" - } - ], - "src": "3087:213:49" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "3518:514:49", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "3528:12:49", - "value": { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3538:2:49", - "type": "", - "value": "32" - }, - "variables": [ - { - "name": "_1", - "nodeType": "YulTypedName", - "src": "3532:2:49", - "type": "" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "3549:32:49", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3567:9:49" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "3578:2:49" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3563:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "3563:18:49" - }, - "variables": [ - { - "name": "tail_1", - "nodeType": "YulTypedName", - "src": "3553:6:49", - "type": "" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3597:9:49" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "3608:2:49" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "3590:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "3590:21:49" - }, - "nodeType": "YulExpressionStatement", - "src": "3590:21:49" - }, - { - "nodeType": "YulVariableDeclaration", - "src": "3620:17:49", - "value": { - "name": "tail_1", - "nodeType": "YulIdentifier", - "src": "3631:6:49" - }, - "variables": [ - { - "name": "pos", - "nodeType": "YulTypedName", - "src": "3624:3:49", - "type": "" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "3646:27:49", - "value": { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "3666:6:49" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "3660:5:49" - }, - "nodeType": "YulFunctionCall", - "src": "3660:13:49" - }, - "variables": [ - { - "name": "length", - "nodeType": "YulTypedName", - "src": "3650:6:49", - "type": "" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "tail_1", - "nodeType": "YulIdentifier", - "src": "3689:6:49" - }, - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "3697:6:49" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "3682:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "3682:22:49" - }, - "nodeType": "YulExpressionStatement", - "src": "3682:22:49" - }, - { - "nodeType": "YulAssignment", - "src": "3713:25:49", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "3724:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3735:2:49", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3720:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "3720:18:49" - }, - "variableNames": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "3713:3:49" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "3747:29:49", - "value": { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "3765:6:49" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "3773:2:49" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3761:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "3761:15:49" - }, - "variables": [ - { - "name": "srcPtr", - "nodeType": "YulTypedName", - "src": "3751:6:49", - "type": "" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "3785:13:49", - "value": { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "3794:4:49" - }, - "variables": [ - { - "name": "i", - "nodeType": "YulTypedName", - "src": "3789:1:49", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "3856:150:49", - "statements": [ - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "srcPtr", - "nodeType": "YulIdentifier", - "src": "3911:6:49" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "3905:5:49" - }, - "nodeType": "YulFunctionCall", - "src": "3905:13:49" - }, - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "3920:3:49" - } - ], - "functionName": { - "name": "abi_encode_t_struct$_ReferenceData", - "nodeType": "YulIdentifier", - "src": "3870:34:49" - }, - "nodeType": "YulFunctionCall", - "src": "3870:54:49" - }, - "nodeType": "YulExpressionStatement", - "src": "3870:54:49" - }, - { - "nodeType": "YulAssignment", - "src": "3937:21:49", - "value": { - "arguments": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "3948:3:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3953:4:49", - "type": "", - "value": "0x60" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3944:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "3944:14:49" - }, - "variableNames": [ - { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "3937:3:49" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "3971:25:49", - "value": { - "arguments": [ - { - "name": "srcPtr", - "nodeType": "YulIdentifier", - "src": "3985:6:49" - }, - { - "name": "_1", - "nodeType": "YulIdentifier", - "src": "3993:2:49" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3981:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "3981:15:49" - }, - "variableNames": [ - { - "name": "srcPtr", - "nodeType": "YulIdentifier", - "src": "3971:6:49" - } - ] - } - ] - }, - "condition": { - "arguments": [ - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "3818:1:49" - }, - { - "name": "length", - "nodeType": "YulIdentifier", - "src": "3821:6:49" - } - ], - "functionName": { - "name": "lt", - "nodeType": "YulIdentifier", - "src": "3815:2:49" - }, - "nodeType": "YulFunctionCall", - "src": "3815:13:49" - }, - "nodeType": "YulForLoop", - "post": { - "nodeType": "YulBlock", - "src": "3829:18:49", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "3831:14:49", - "value": { - "arguments": [ - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "3840:1:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3843:1:49", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3836:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "3836:9:49" - }, - "variableNames": [ - { - "name": "i", - "nodeType": "YulIdentifier", - "src": "3831:1:49" - } - ] - } - ] - }, - "pre": { - "nodeType": "YulBlock", - "src": "3811:3:49", - "statements": [] - }, - "src": "3807:199:49" - }, - { - "nodeType": "YulAssignment", - "src": "4015:11:49", - "value": { - "name": "pos", - "nodeType": "YulIdentifier", - "src": "4023:3:49" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "4015:4:49" - } - ] - } - ] - }, - "name": "abi_encode_tuple_t_array$_t_struct$_ReferenceData_$8676_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_ReferenceData_$8676_memory_ptr_$dyn_memory_ptr__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "3487:9:49", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "3498:6:49", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "3509:4:49", - "type": "" - } - ], - "src": "3305:727:49" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "4200:104:49", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "4210:26:49", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4222:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4233:2:49", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4218:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "4218:18:49" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "4210:4:49" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "4280:6:49" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4288:9:49" - } - ], - "functionName": { - "name": "abi_encode_t_struct$_ReferenceData", - "nodeType": "YulIdentifier", - "src": "4245:34:49" - }, - "nodeType": "YulFunctionCall", - "src": "4245:53:49" - }, - "nodeType": "YulExpressionStatement", - "src": "4245:53:49" - } - ] - }, - "name": "abi_encode_tuple_t_struct$_ReferenceData_$8676_memory_ptr__to_t_struct$_ReferenceData_$8676_memory_ptr__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "4169:9:49", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "4180:6:49", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "4191:4:49", - "type": "" - } - ], - "src": "4037:267:49" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "4466:162:49", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "4476:26:49", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4488:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4499:2:49", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4484:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "4484:18:49" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "4476:4:49" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4518:9:49" - }, - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "4529:6:49" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "4511:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "4511:25:49" - }, - "nodeType": "YulExpressionStatement", - "src": "4511:25:49" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4556:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4567:2:49", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4552:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "4552:18:49" - }, - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "4572:6:49" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "4545:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "4545:34:49" - }, - "nodeType": "YulExpressionStatement", - "src": "4545:34:49" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "4599:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4610:2:49", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4595:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "4595:18:49" - }, - { - "name": "value2", - "nodeType": "YulIdentifier", - "src": "4615:6:49" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "4588:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "4588:34:49" - }, - "nodeType": "YulExpressionStatement", - "src": "4588:34:49" - } - ] - }, - "name": "abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "4419:9:49", - "type": "" - }, - { - "name": "value2", - "nodeType": "YulTypedName", - "src": "4430:6:49", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "4438:6:49", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "4446:6:49", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "4457:4:49", - "type": "" - } - ], - "src": "4309:319:49" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "4677:198:49", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "4687:19:49", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4703:2:49", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "4697:5:49" - }, - "nodeType": "YulFunctionCall", - "src": "4697:9:49" - }, - "variableNames": [ - { - "name": "memPtr", - "nodeType": "YulIdentifier", - "src": "4687:6:49" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "4715:35:49", - "value": { - "arguments": [ - { - "name": "memPtr", - "nodeType": "YulIdentifier", - "src": "4737:6:49" - }, - { - "name": "size", - "nodeType": "YulIdentifier", - "src": "4745:4:49" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "4733:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "4733:17:49" - }, - "variables": [ - { - "name": "newFreePtr", - "nodeType": "YulTypedName", - "src": "4719:10:49", - "type": "" - } - ] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "4825:13:49", - "statements": [ - { - "expression": { - "arguments": [], - "functionName": { - "name": "invalid", - "nodeType": "YulIdentifier", - "src": "4827:7:49" - }, - "nodeType": "YulFunctionCall", - "src": "4827:9:49" - }, - "nodeType": "YulExpressionStatement", - "src": "4827:9:49" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "newFreePtr", - "nodeType": "YulIdentifier", - "src": "4768:10:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4780:18:49", - "type": "", - "value": "0xffffffffffffffff" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "4765:2:49" - }, - "nodeType": "YulFunctionCall", - "src": "4765:34:49" - }, - { - "arguments": [ - { - "name": "newFreePtr", - "nodeType": "YulIdentifier", - "src": "4804:10:49" - }, - { - "name": "memPtr", - "nodeType": "YulIdentifier", - "src": "4816:6:49" - } - ], - "functionName": { - "name": "lt", - "nodeType": "YulIdentifier", - "src": "4801:2:49" - }, - "nodeType": "YulFunctionCall", - "src": "4801:22:49" - } - ], - "functionName": { - "name": "or", - "nodeType": "YulIdentifier", - "src": "4762:2:49" - }, - "nodeType": "YulFunctionCall", - "src": "4762:62:49" - }, - "nodeType": "YulIf", - "src": "4759:2:49" - }, - { - "expression": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4854:2:49", - "type": "", - "value": "64" - }, - { - "name": "newFreePtr", - "nodeType": "YulIdentifier", - "src": "4858:10:49" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "4847:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "4847:22:49" - }, - "nodeType": "YulExpressionStatement", - "src": "4847:22:49" - } - ] - }, - "name": "allocateMemory", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "size", - "nodeType": "YulTypedName", - "src": "4657:4:49", - "type": "" - } - ], - "returnVariables": [ - { - "name": "memPtr", - "nodeType": "YulTypedName", - "src": "4666:6:49", - "type": "" - } - ], - "src": "4633:242:49" - } - ] - }, - "contents": "{\n { }\n function abi_decode_t_array$_t_string_$dyn(offset, end) -> array\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(array, array) }\n let _1 := calldataload(offset)\n let _2 := 0x20\n if gt(_1, 0xffffffffffffffff) { invalid() }\n let dst := allocateMemory(add(mul(_1, _2), _2))\n let dst_1 := dst\n mstore(dst, _1)\n dst := add(dst, _2)\n let src := add(offset, _2)\n let i := array\n for { } lt(i, _1) { i := add(i, 1) }\n {\n mstore(dst, abi_decode_t_string(add(add(offset, calldataload(src)), _2), end))\n dst := add(dst, _2)\n src := add(src, _2)\n }\n array := dst_1\n }\n function abi_decode_t_string(offset, end) -> array\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(array, array) }\n let _1 := calldataload(offset)\n if gt(_1, 0xffffffffffffffff) { invalid() }\n let array_1 := allocateMemory(add(and(add(_1, 0x1f), not(31)), 0x20))\n mstore(array_1, _1)\n if gt(add(add(offset, _1), 0x20), end) { revert(array, array) }\n calldatacopy(add(array_1, 0x20), add(offset, 0x20), _1)\n mstore(add(add(array_1, _1), 0x20), array)\n array := array_1\n }\n function abi_decode_tuple_t_array$_t_string_memory_ptr_$dyn_memory_ptrt_array$_t_string_memory_ptr_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n let offset := calldataload(headStart)\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(value0, value0) }\n value0 := abi_decode_t_array$_t_string_$dyn(add(headStart, offset), dataEnd)\n let offset_1 := calldataload(add(headStart, 32))\n if gt(offset_1, _1) { revert(value1, value1) }\n value1 := abi_decode_t_array$_t_string_$dyn(add(headStart, offset_1), dataEnd)\n }\n function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n let offset := calldataload(headStart)\n let _1 := 0xffffffffffffffff\n if gt(offset, _1) { revert(value0, value0) }\n value0 := abi_decode_t_string(add(headStart, offset), dataEnd)\n let offset_1 := calldataload(add(headStart, 32))\n if gt(offset_1, _1) { revert(value1, value1) }\n value1 := abi_decode_t_string(add(headStart, offset_1), dataEnd)\n }\n function abi_decode_tuple_t_struct$_ReferenceData_$8676_memory_ptr(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 96) { revert(value0, value0) }\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, 96)\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { invalid() }\n mstore(64, newFreePtr)\n mstore(memPtr, calldataload(headStart))\n mstore(add(memPtr, 32), calldataload(add(headStart, 32)))\n mstore(add(memPtr, 64), calldataload(add(headStart, 64)))\n value0 := memPtr\n }\n function abi_encode_t_struct$_ReferenceData(value, pos)\n {\n mstore(pos, mload(value))\n mstore(add(pos, 0x20), mload(add(value, 0x20)))\n mstore(add(pos, 0x40), mload(add(value, 0x40)))\n }\n function abi_encode_tuple_t_array$_t_struct$_ReferenceData_$8676_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_ReferenceData_$8676_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n let tail_1 := add(headStart, _1)\n mstore(headStart, _1)\n let pos := tail_1\n let length := mload(value0)\n mstore(tail_1, length)\n pos := add(headStart, 64)\n let srcPtr := add(value0, _1)\n let i := tail\n for { } lt(i, length) { i := add(i, 1) }\n {\n abi_encode_t_struct$_ReferenceData(mload(srcPtr), pos)\n pos := add(pos, 0x60)\n srcPtr := add(srcPtr, _1)\n }\n tail := pos\n }\n function abi_encode_tuple_t_struct$_ReferenceData_$8676_memory_ptr__to_t_struct$_ReferenceData_$8676_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 96)\n abi_encode_t_struct$_ReferenceData(value0, headStart)\n }\n function abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), value2)\n }\n function allocateMemory(size) -> memPtr\n {\n memPtr := mload(64)\n let newFreePtr := add(memPtr, size)\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { invalid() }\n mstore(64, newFreePtr)\n }\n}", - "id": 49, - "language": "Yul", - "name": "#utility.yul" - } - ], - "immutableReferences": {}, - "linkReferences": {}, - "object": "608060405234801561001057600080fd5b506004361061004c5760003560e01c806365555bcc146100515780636d4d68151461007a578063dd5bed931461008f578063e42a071b146100a6575b600080fd5b61006461005f36600461027c565b6100c6565b604051610071919061038f565b60405180910390f35b61008d6100883660046102d3565b6100f7565b005b61009761010d565b6040516100719392919061039d565b6100b96100b436600461021b565b610119565b6040516100719190610341565b6100ce610120565b506040805160608101825260005481526001546020820152600254918101919091525b92915050565b8051600055602081015160015560400151600255565b60005460015460025483565b6060600080fd5b60405180606001604052806000815260200160008152602001600081525090565b600082601f830112610151578081fd5b8135602067ffffffffffffffff82111561016757fe5b61017481828402016103b3565b82815281810190858301855b858110156101a957610197898684358b01016101b6565b84529284019290840190600101610180565b5090979650505050505050565b600082601f8301126101c6578081fd5b813567ffffffffffffffff8111156101da57fe5b6101ed601f8201601f19166020016103b3565b818152846020838601011115610201578283fd5b816020850160208301379081016020019190915292915050565b6000806040838503121561022d578182fd5b823567ffffffffffffffff80821115610244578384fd5b61025086838701610141565b93506020850135915080821115610265578283fd5b5061027285828601610141565b9150509250929050565b6000806040838503121561028e578182fd5b823567ffffffffffffffff808211156102a5578384fd5b6102b1868387016101b6565b935060208501359150808211156102c6578283fd5b50610272858286016101b6565b6000606082840312156102e4578081fd5b6040516060810181811067ffffffffffffffff8211171561030157fe5b80604052508235815260208301356020820152604083013560408201528091505092915050565b8051825260208082015190830152604090810151910152565b6020808252825182820181905260009190848201906040850190845b8181101561038357610370838551610328565b928401926060929092019160010161035d565b50909695505050505050565b606081016100f18284610328565b9283526020830191909152604082015260600190565b60405181810167ffffffffffffffff811182821017156103cf57fe5b60405291905056fea26469706673582212200153473874d9f1597d91cbac5a5165e1467ab6602546135b88bfe3cda5f4d68464736f6c63430007060033", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x65555BCC EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x6D4D6815 EQ PUSH2 0x7A JUMPI DUP1 PUSH4 0xDD5BED93 EQ PUSH2 0x8F JUMPI DUP1 PUSH4 0xE42A071B EQ PUSH2 0xA6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x64 PUSH2 0x5F CALLDATASIZE PUSH1 0x4 PUSH2 0x27C JUMP JUMPDEST PUSH2 0xC6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x71 SWAP2 SWAP1 PUSH2 0x38F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x8D PUSH2 0x88 CALLDATASIZE PUSH1 0x4 PUSH2 0x2D3 JUMP JUMPDEST PUSH2 0xF7 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x97 PUSH2 0x10D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x71 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x39D JUMP JUMPDEST PUSH2 0xB9 PUSH2 0xB4 CALLDATASIZE PUSH1 0x4 PUSH2 0x21B JUMP JUMPDEST PUSH2 0x119 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x71 SWAP2 SWAP1 PUSH2 0x341 JUMP JUMPDEST PUSH2 0xCE PUSH2 0x120 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE PUSH1 0x0 SLOAD DUP2 MSTORE PUSH1 0x1 SLOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x2 SLOAD SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x0 SSTORE PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x1 SSTORE PUSH1 0x40 ADD MLOAD PUSH1 0x2 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 SLOAD PUSH1 0x2 SLOAD DUP4 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x151 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x167 JUMPI INVALID JUMPDEST PUSH2 0x174 DUP2 DUP3 DUP5 MUL ADD PUSH2 0x3B3 JUMP JUMPDEST DUP3 DUP2 MSTORE DUP2 DUP2 ADD SWAP1 DUP6 DUP4 ADD DUP6 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x1A9 JUMPI PUSH2 0x197 DUP10 DUP7 DUP5 CALLDATALOAD DUP12 ADD ADD PUSH2 0x1B6 JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x180 JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1C6 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1DA JUMPI INVALID JUMPDEST PUSH2 0x1ED PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD PUSH2 0x3B3 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x201 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY SWAP1 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x22D JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x244 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x250 DUP7 DUP4 DUP8 ADD PUSH2 0x141 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x265 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x272 DUP6 DUP3 DUP7 ADD PUSH2 0x141 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x28E JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2A5 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x2B1 DUP7 DUP4 DUP8 ADD PUSH2 0x1B6 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x2C6 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x272 DUP6 DUP3 DUP7 ADD PUSH2 0x1B6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2E4 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x60 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x301 JUMPI INVALID JUMPDEST DUP1 PUSH1 0x40 MSTORE POP DUP3 CALLDATALOAD DUP2 MSTORE PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP4 ADD CALLDATALOAD PUSH1 0x40 DUP3 ADD MSTORE DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD DUP3 MSTORE PUSH1 0x20 DUP1 DUP3 ADD MLOAD SWAP1 DUP4 ADD MSTORE PUSH1 0x40 SWAP1 DUP2 ADD MLOAD SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x383 JUMPI PUSH2 0x370 DUP4 DUP6 MLOAD PUSH2 0x328 JUMP JUMPDEST SWAP3 DUP5 ADD SWAP3 PUSH1 0x60 SWAP3 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x35D JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 ADD PUSH2 0xF1 DUP3 DUP5 PUSH2 0x328 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x3CF JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ADD MSTORE8 SELFBALANCE CODESIZE PUSH21 0xD9F1597D91CBAC5A5165E1467AB6602546135B88BF 0xE3 0xCD 0xA5 DELEGATECALL 0xD6 DUP5 PUSH5 0x736F6C6343 STOP SMOD MOD STOP CALLER ", - "sourceMap": "181:605:46:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;392:190;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;287:99;;;;;;:::i;:::-;;:::i;:::-;;230:28;;;:::i;:::-;;;;;;;;;:::i;588:196::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;392:190::-;525:20;;:::i;:::-;-1:-1:-1;561:14:46;;;;;;;;568:7;561:14;;;;;;;;;;;;;;;;;;392:190;;;;;:::o;287:99::-;361:18;;:7;:18;;;;;;;;;;;;287:99::o;230:28::-;;;;;;;;:::o;588:196::-;731:22;769:8;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:696:49:-;;126:3;119:4;111:6;107:17;103:27;93:2;;148:5;141;134:20;93:2;188:6;175:20;214:4;237:18;233:2;230:26;227:2;;;259:9;227:2;290:36;322:2;317;313;309:11;305:20;290:36;:::i;:::-;360:15;;;391:12;;;;423:15;;;456:5;470:211;484:2;481:1;478:9;470:211;;;541:65;602:3;597:2;590:3;577:17;569:6;565:30;561:39;541:65;:::i;:::-;529:78;;627:12;;;;659;;;;502:1;495:9;470:211;;;-1:-1:-1;699:5:49;;83:627;-1:-1:-1;;;;;;;83:627:49:o;715:543::-;;813:3;806:4;798:6;794:17;790:27;780:2;;835:5;828;821:20;780:2;875:6;862:20;901:18;897:2;894:26;891:2;;;923:9;891:2;958:54;1000:2;981:13;;-1:-1:-1;;977:27:49;1006:4;973:38;958:54;:::i;:::-;1037:2;1028:7;1021:19;1083:3;1076:4;1071:2;1063:6;1059:15;1055:26;1052:35;1049:2;;;1104:5;1097;1090:20;1049:2;1173;1166:4;1158:6;1154:17;1147:4;1138:7;1134:18;1121:55;1196:16;;;1214:4;1192:27;1185:42;;;;1200:7;770:488;-1:-1:-1;;770:488:49:o;1263:655::-;;;1462:2;1450:9;1441:7;1437:23;1433:32;1430:2;;;1483:6;1475;1468:22;1430:2;1528:9;1515:23;1557:18;1598:2;1590:6;1587:14;1584:2;;;1619:6;1611;1604:22;1584:2;1647:66;1705:7;1696:6;1685:9;1681:22;1647:66;:::i;:::-;1637:76;;1766:2;1755:9;1751:18;1738:32;1722:48;;1795:2;1785:8;1782:16;1779:2;;;1816:6;1808;1801:22;1779:2;;1844:68;1904:7;1893:8;1882:9;1878:24;1844:68;:::i;:::-;1834:78;;;1420:498;;;;;:::o;1923:577::-;;;2072:2;2060:9;2051:7;2047:23;2043:32;2040:2;;;2093:6;2085;2078:22;2040:2;2138:9;2125:23;2167:18;2208:2;2200:6;2197:14;2194:2;;;2229:6;2221;2214:22;2194:2;2257:52;2301:7;2292:6;2281:9;2277:22;2257:52;:::i;:::-;2247:62;;2362:2;2351:9;2347:18;2334:32;2318:48;;2391:2;2381:8;2378:16;2375:2;;;2412:6;2404;2397:22;2375:2;;2440:54;2486:7;2475:8;2464:9;2460:24;2440:54;:::i;2505:577::-;;2648:2;2636:9;2627:7;2623:23;2619:32;2616:2;;;2669:6;2661;2654:22;2616:2;2707;2701:9;2749:2;2741:6;2737:15;2818:6;2806:10;2803:22;2782:18;2770:10;2767:34;2764:62;2761:2;;;2829:9;2761:2;2860:10;2856:2;2849:22;;2908:9;2895:23;2887:6;2880:39;2980:2;2969:9;2965:18;2952:32;2947:2;2939:6;2935:15;2928:57;3046:2;3035:9;3031:18;3018:32;3013:2;3005:6;3001:15;2994:57;3070:6;3060:16;;;2606:476;;;;:::o;3087:213::-;3169:12;;3157:25;;3231:4;3220:16;;;3214:23;3198:14;;;3191:47;3287:4;3276:16;;;3270:23;3254:14;;3247:47;3147:153::o;3305:727::-;3538:2;3590:21;;;3660:13;;3563:18;;;3682:22;;;3305:727;;3538:2;3761:15;;;;3735:2;3720:18;;;3305:727;3807:199;3821:6;3818:1;3815:13;3807:199;;;3870:54;3920:3;3911:6;3905:13;3870:54;:::i;:::-;3981:15;;;;3953:4;3944:14;;;;;3843:1;3836:9;3807:199;;;-1:-1:-1;4023:3:49;;3518:514;-1:-1:-1;;;;;;3518:514:49:o;4037:267::-;4233:2;4218:18;;4245:53;4222:9;4280:6;4245:53;:::i;4309:319::-;4511:25;;;4567:2;4552:18;;4545:34;;;;4610:2;4595:18;;4588:34;4499:2;4484:18;;4466:162::o;4633:242::-;4703:2;4697:9;4733:17;;;4780:18;4765:34;;4801:22;;;4762:62;4759:2;;;4827:9;4759:2;4854;4847:22;4677:198;;-1:-1:-1;4677:198:49:o" - }, - "methodIdentifiers": { - "getReferenceData(string,string)": "65555bcc", - "getReferenceDataBulk(string[],string[])": "e42a071b", - "refData()": "dd5bed93", - "setReferenceData((uint256,uint256,uint256))": "6d4d6815" - } - }, - "storageLayout": { - "storage": [ - { - "astId": 9058, - "contract": "contracts/test/TestStdReference.sol:TestStdReference", - "label": "refData", - "offset": 0, - "slot": "0", - "type": "t_struct(ReferenceData)8676_storage" - } - ], - "types": { - "t_struct(ReferenceData)8676_storage": { - "encoding": "inplace", - "label": "struct IStdReference.ReferenceData", - "members": [ - { - "astId": 8671, - "contract": "contracts/test/TestStdReference.sol:TestStdReference", - "label": "rate", - "offset": 0, - "slot": "0", - "type": "t_uint256" - }, - { - "astId": 8673, - "contract": "contracts/test/TestStdReference.sol:TestStdReference", - "label": "lastUpdatedBase", - "offset": 0, - "slot": "1", - "type": "t_uint256" - }, - { - "astId": 8675, - "contract": "contracts/test/TestStdReference.sol:TestStdReference", - "label": "lastUpdatedQuote", - "offset": 0, - "slot": "2", - "type": "t_uint256" - } - ], - "numberOfBytes": "96" - }, - "t_uint256": { - "encoding": "inplace", - "label": "uint256", - "numberOfBytes": "32" - } - } - } - } - }, - "contracts/twap/CachedTwap.sol": { - "CachedTwap": { - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "price", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint8", - "name": "indexAt", - "type": "uint8" - } - ], - "name": "PriceUpdated", - "type": "event" - }, - { - "inputs": [], - "name": "currentObservationIndex", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "observations", - "outputs": [ - { - "internalType": "uint256", - "name": "price", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "priceCumulative", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "evm": { - "bytecode": { - "generatedSources": [], - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "deployedBytecode": { - "generatedSources": [], - "immutableReferences": {}, - "linkReferences": {}, - "object": "", - "opcodes": "", - "sourceMap": "" - }, - "methodIdentifiers": { - "currentObservationIndex()": "aed3aff7", - "observations(uint256)": "252c09d7" - } - }, - "storageLayout": { - "storage": [ - { - "astId": 9238, - "contract": "contracts/twap/CachedTwap.sol:CachedTwap", - "label": "observations", - "offset": 0, - "slot": "0", - "type": "t_array(t_struct(Observation)9226_storage)256_storage" - }, - { - "astId": 9240, - "contract": "contracts/twap/CachedTwap.sol:CachedTwap", - "label": "currentObservationIndex", - "offset": 0, - "slot": "768", - "type": "t_uint8" - }, - { - "astId": 9112, - "contract": "contracts/twap/CachedTwap.sol:CachedTwap", - "label": "_cachedTwap", - "offset": 0, - "slot": "769", - "type": "t_uint256" - }, - { - "astId": 9114, - "contract": "contracts/twap/CachedTwap.sol:CachedTwap", - "label": "_lastUpdatedAt", - "offset": 0, - "slot": "770", - "type": "t_uint160" - }, - { - "astId": 9116, - "contract": "contracts/twap/CachedTwap.sol:CachedTwap", - "label": "_interval", - "offset": 20, - "slot": "770", - "type": "t_uint80" - } - ], - "types": { - "t_array(t_struct(Observation)9226_storage)256_storage": { - "base": "t_struct(Observation)9226_storage", - "encoding": "inplace", - "label": "struct CumulativeTwap.Observation[256]", - "numberOfBytes": "24576" - }, - "t_struct(Observation)9226_storage": { - "encoding": "inplace", - "label": "struct CumulativeTwap.Observation", - "members": [ - { - "astId": 9221, - "contract": "contracts/twap/CachedTwap.sol:CachedTwap", - "label": "price", - "offset": 0, - "slot": "0", - "type": "t_uint256" - }, - { - "astId": 9223, - "contract": "contracts/twap/CachedTwap.sol:CachedTwap", - "label": "priceCumulative", - "offset": 0, - "slot": "1", - "type": "t_uint256" - }, - { - "astId": 9225, - "contract": "contracts/twap/CachedTwap.sol:CachedTwap", - "label": "timestamp", - "offset": 0, - "slot": "2", - "type": "t_uint256" - } - ], - "numberOfBytes": "96" - }, - "t_uint160": { - "encoding": "inplace", - "label": "uint160", - "numberOfBytes": "20" - }, - "t_uint256": { - "encoding": "inplace", - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint8": { - "encoding": "inplace", - "label": "uint8", - "numberOfBytes": "1" - }, - "t_uint80": { - "encoding": "inplace", - "label": "uint80", - "numberOfBytes": "10" - } - } - } - } - }, - "contracts/twap/CumulativeTwap.sol": { - "CumulativeTwap": { - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "price", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint8", - "name": "indexAt", - "type": "uint8" - } - ], - "name": "PriceUpdated", - "type": "event" - }, - { - "inputs": [], - "name": "currentObservationIndex", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "observations", - "outputs": [ - { - "internalType": "uint256", - "name": "price", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "priceCumulative", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "evm": { - "bytecode": { - "generatedSources": [], - "linkReferences": {}, - "object": "608060405234801561001057600080fd5b5061010f806100206000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c8063252c09d7146037578063aed3aff714605c575b600080fd5b60466042366004609e565b606d565b60405160539392919060b5565b60405180910390f35b60626094565b6040516053919060cb565b6000816101008110607d57600080fd5b600302018054600182015460029092015490925083565b6103005460ff1681565b60006020828403121560ae578081fd5b5035919050565b9283526020830191909152604082015260600190565b60ff9190911681526020019056fea2646970667358221220e95fa752afde4f8b7b627fcf277c0b4000b18f37d84f3859f567e687ac22621464736f6c63430007060033", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10F DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x32 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x252C09D7 EQ PUSH1 0x37 JUMPI DUP1 PUSH4 0xAED3AFF7 EQ PUSH1 0x5C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x46 PUSH1 0x42 CALLDATASIZE PUSH1 0x4 PUSH1 0x9E JUMP JUMPDEST PUSH1 0x6D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x53 SWAP4 SWAP3 SWAP2 SWAP1 PUSH1 0xB5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x62 PUSH1 0x94 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x53 SWAP2 SWAP1 PUSH1 0xCB JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x100 DUP2 LT PUSH1 0x7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 MUL ADD DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP3 POP DUP4 JUMP JUMPDEST PUSH2 0x300 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH1 0xAE JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0xFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE9 0x5F 0xA7 MSTORE 0xAF 0xDE 0x4F DUP12 PUSH28 0x627FCF277C0B4000B18F37D84F3859F567E687AC22621464736F6C63 NUMBER STOP SMOD MOD STOP CALLER ", - "sourceMap": "226:6103:48:-:0;;;;;;;;;;;;;;;;;;;" - }, - "deployedBytecode": { - "generatedSources": [ - { - "ast": { - "nodeType": "YulBlock", - "src": "0:719:49", - "statements": [ - { - "nodeType": "YulBlock", - "src": "6:3:49", - "statements": [] - }, - { - "body": { - "nodeType": "YulBlock", - "src": "84:120:49", - "statements": [ - { - "body": { - "nodeType": "YulBlock", - "src": "130:26:49", - "statements": [ - { - "expression": { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "139:6:49" - }, - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "147:6:49" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "132:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "132:22:49" - }, - "nodeType": "YulExpressionStatement", - "src": "132:22:49" - } - ] - }, - "condition": { - "arguments": [ - { - "arguments": [ - { - "name": "dataEnd", - "nodeType": "YulIdentifier", - "src": "105:7:49" - }, - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "114:9:49" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "101:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "101:23:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "126:2:49", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "slt", - "nodeType": "YulIdentifier", - "src": "97:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "97:32:49" - }, - "nodeType": "YulIf", - "src": "94:2:49" - }, - { - "nodeType": "YulAssignment", - "src": "165:33:49", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "188:9:49" - } - ], - "functionName": { - "name": "calldataload", - "nodeType": "YulIdentifier", - "src": "175:12:49" - }, - "nodeType": "YulFunctionCall", - "src": "175:23:49" - }, - "variableNames": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "165:6:49" - } - ] - } - ] - }, - "name": "abi_decode_tuple_t_uint256", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "50:9:49", - "type": "" - }, - { - "name": "dataEnd", - "nodeType": "YulTypedName", - "src": "61:7:49", - "type": "" - } - ], - "returnVariables": [ - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "73:6:49", - "type": "" - } - ], - "src": "14:190:49" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "366:162:49", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "376:26:49", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "388:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "399:2:49", - "type": "", - "value": "96" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "384:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "384:18:49" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "376:4:49" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "418:9:49" - }, - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "429:6:49" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "411:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "411:25:49" - }, - "nodeType": "YulExpressionStatement", - "src": "411:25:49" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "456:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "467:2:49", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "452:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "452:18:49" - }, - { - "name": "value1", - "nodeType": "YulIdentifier", - "src": "472:6:49" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "445:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "445:34:49" - }, - "nodeType": "YulExpressionStatement", - "src": "445:34:49" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "499:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "510:2:49", - "type": "", - "value": "64" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "495:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "495:18:49" - }, - { - "name": "value2", - "nodeType": "YulIdentifier", - "src": "515:6:49" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "488:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "488:34:49" - }, - "nodeType": "YulExpressionStatement", - "src": "488:34:49" - } - ] - }, - "name": "abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "319:9:49", - "type": "" - }, - { - "name": "value2", - "nodeType": "YulTypedName", - "src": "330:6:49", - "type": "" - }, - { - "name": "value1", - "nodeType": "YulTypedName", - "src": "338:6:49", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "346:6:49", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "357:4:49", - "type": "" - } - ], - "src": "209:319:49" - }, - { - "body": { - "nodeType": "YulBlock", - "src": "630:87:49", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "640:26:49", - "value": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "652:9:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "663:2:49", - "type": "", - "value": "32" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "648:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "648:18:49" - }, - "variableNames": [ - { - "name": "tail", - "nodeType": "YulIdentifier", - "src": "640:4:49" - } - ] - }, - { - "expression": { - "arguments": [ - { - "name": "headStart", - "nodeType": "YulIdentifier", - "src": "682:9:49" - }, - { - "arguments": [ - { - "name": "value0", - "nodeType": "YulIdentifier", - "src": "697:6:49" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "705:4:49", - "type": "", - "value": "0xff" - } - ], - "functionName": { - "name": "and", - "nodeType": "YulIdentifier", - "src": "693:3:49" - }, - "nodeType": "YulFunctionCall", - "src": "693:17:49" - } - ], - "functionName": { - "name": "mstore", - "nodeType": "YulIdentifier", - "src": "675:6:49" - }, - "nodeType": "YulFunctionCall", - "src": "675:36:49" - }, - "nodeType": "YulExpressionStatement", - "src": "675:36:49" - } - ] - }, - "name": "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed", - "nodeType": "YulFunctionDefinition", - "parameters": [ - { - "name": "headStart", - "nodeType": "YulTypedName", - "src": "599:9:49", - "type": "" - }, - { - "name": "value0", - "nodeType": "YulTypedName", - "src": "610:6:49", - "type": "" - } - ], - "returnVariables": [ - { - "name": "tail", - "nodeType": "YulTypedName", - "src": "621:4:49", - "type": "" - } - ], - "src": "533:184:49" - } - ] - }, - "contents": "{\n { }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n value0 := calldataload(headStart)\n }\n function abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), value2)\n }\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n}", - "id": 49, - "language": "Yul", - "name": "#utility.yul" - } - ], - "immutableReferences": {}, - "linkReferences": {}, - "object": "6080604052348015600f57600080fd5b506004361060325760003560e01c8063252c09d7146037578063aed3aff714605c575b600080fd5b60466042366004609e565b606d565b60405160539392919060b5565b60405180910390f35b60626094565b6040516053919060cb565b6000816101008110607d57600080fd5b600302018054600182015460029092015490925083565b6103005460ff1681565b60006020828403121560ae578081fd5b5035919050565b9283526020830191909152604082015260600190565b60ff9190911681526020019056fea2646970667358221220e95fa752afde4f8b7b627fcf277c0b4000b18f37d84f3859f567e687ac22621464736f6c63430007060033", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x32 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x252C09D7 EQ PUSH1 0x37 JUMPI DUP1 PUSH4 0xAED3AFF7 EQ PUSH1 0x5C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x46 PUSH1 0x42 CALLDATASIZE PUSH1 0x4 PUSH1 0x9E JUMP JUMPDEST PUSH1 0x6D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x53 SWAP4 SWAP3 SWAP2 SWAP1 PUSH1 0xB5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x62 PUSH1 0x94 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x53 SWAP2 SWAP1 PUSH1 0xCB JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x100 DUP2 LT PUSH1 0x7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 MUL ADD DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 SWAP1 SWAP3 ADD SLOAD SWAP1 SWAP3 POP DUP4 JUMP JUMPDEST PUSH2 0x300 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH1 0xAE JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0xFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE9 0x5F 0xA7 MSTORE 0xAF 0xDE 0x4F DUP12 PUSH28 0x627FCF277C0B4000B18F37D84F3859F567E687AC22621464736F6C63 NUMBER STOP SMOD MOD STOP CALLER ", - "sourceMap": "226:6103:48:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;735:36;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;778;;;:::i;:::-;;;;;;;:::i;735:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;735:36:48;:::o;778:::-;;;;;;:::o;14:190:49:-;;126:2;114:9;105:7;101:23;97:32;94:2;;;147:6;139;132:22;94:2;-1:-1:-1;175:23:49;;84:120;-1:-1:-1;84:120:49:o;209:319::-;411:25;;;467:2;452:18;;445:34;;;;510:2;495:18;;488:34;399:2;384:18;;366:162::o;533:184::-;705:4;693:17;;;;675:36;;663:2;648:18;;630:87::o" - }, - "methodIdentifiers": { - "currentObservationIndex()": "aed3aff7", - "observations(uint256)": "252c09d7" - } - }, - "storageLayout": { - "storage": [ - { - "astId": 9238, - "contract": "contracts/twap/CumulativeTwap.sol:CumulativeTwap", - "label": "observations", - "offset": 0, - "slot": "0", - "type": "t_array(t_struct(Observation)9226_storage)256_storage" - }, - { - "astId": 9240, - "contract": "contracts/twap/CumulativeTwap.sol:CumulativeTwap", - "label": "currentObservationIndex", - "offset": 0, - "slot": "768", - "type": "t_uint8" - } - ], - "types": { - "t_array(t_struct(Observation)9226_storage)256_storage": { - "base": "t_struct(Observation)9226_storage", - "encoding": "inplace", - "label": "struct CumulativeTwap.Observation[256]", - "numberOfBytes": "24576" - }, - "t_struct(Observation)9226_storage": { - "encoding": "inplace", - "label": "struct CumulativeTwap.Observation", - "members": [ - { - "astId": 9221, - "contract": "contracts/twap/CumulativeTwap.sol:CumulativeTwap", - "label": "price", - "offset": 0, - "slot": "0", - "type": "t_uint256" - }, - { - "astId": 9223, - "contract": "contracts/twap/CumulativeTwap.sol:CumulativeTwap", - "label": "priceCumulative", - "offset": 0, - "slot": "1", - "type": "t_uint256" - }, - { - "astId": 9225, - "contract": "contracts/twap/CumulativeTwap.sol:CumulativeTwap", - "label": "timestamp", - "offset": 0, - "slot": "2", - "type": "t_uint256" - } - ], - "numberOfBytes": "96" - }, - "t_uint256": { - "encoding": "inplace", - "label": "uint256", - "numberOfBytes": "32" - }, - "t_uint8": { - "encoding": "inplace", - "label": "uint8", - "numberOfBytes": "1" - } - } - } - } - } - }, - "errors": [ - { - "component": "general", - "errorCode": "6321", - "formattedMessage": "contracts/test/TestAggregatorV3.sol:34:57: Warning: Unnamed return variable can remain unassigned. Add an explicit return with value to all non-reverting code paths or name the variable.\n function decimals() external view override returns (uint8) {\n ^---^\n", - "message": "Unnamed return variable can remain unassigned. Add an explicit return with value to all non-reverting code paths or name the variable.", - "severity": "warning", - "sourceLocation": { - "end": 943, - "file": "contracts/test/TestAggregatorV3.sol", - "start": 938 - }, - "type": "Warning" - }, - { - "component": "general", - "errorCode": "6133", - "formattedMessage": "contracts/test/TestAggregatorV3.sol:35:9: Warning: Statement has no effect.\n 18;\n ^^\n", - "message": "Statement has no effect.", - "severity": "warning", - "sourceLocation": { - "end": 957, - "file": "contracts/test/TestAggregatorV3.sol", - "start": 955 - }, - "type": "Warning" - }, - { - "component": "general", - "errorCode": "5667", - "formattedMessage": "contracts/test/TestStdReference.sol:16:31: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n function getReferenceData(string memory _base, string memory _quote)\n ^-----------------^\n", - "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.", - "severity": "warning", - "sourceLocation": { - "end": 437, - "file": "contracts/test/TestStdReference.sol", - "start": 418 - }, - "type": "Warning" - }, - { - "component": "general", - "errorCode": "5667", - "formattedMessage": "contracts/test/TestStdReference.sol:16:52: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n function getReferenceData(string memory _base, string memory _quote)\n ^------------------^\n", - "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.", - "severity": "warning", - "sourceLocation": { - "end": 459, - "file": "contracts/test/TestStdReference.sol", - "start": 439 - }, - "type": "Warning" - }, - { - "component": "general", - "errorCode": "5667", - "formattedMessage": "contracts/test/TestStdReference.sol:25:35: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n function getReferenceDataBulk(string[] memory _bases, string[] memory _quotes)\n ^--------------------^\n", - "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.", - "severity": "warning", - "sourceLocation": { - "end": 640, - "file": "contracts/test/TestStdReference.sol", - "start": 618 - }, - "type": "Warning" - }, - { - "component": "general", - "errorCode": "5667", - "formattedMessage": "contracts/test/TestStdReference.sol:25:59: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n function getReferenceDataBulk(string[] memory _bases, string[] memory _quotes)\n ^---------------------^\n", - "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.", - "severity": "warning", - "sourceLocation": { - "end": 665, - "file": "contracts/test/TestStdReference.sol", - "start": 642 - }, - "type": "Warning" - }, - { - "component": "general", - "errorCode": "2018", - "formattedMessage": "contracts/test/TestAggregatorV3.sol:34:5: Warning: Function state mutability can be restricted to pure\n function decimals() external view override returns (uint8) {\n ^ (Relevant source part starts here and spans across multiple lines).\n", - "message": "Function state mutability can be restricted to pure", - "severity": "warning", - "sourceLocation": { - "end": 964, - "file": "contracts/test/TestAggregatorV3.sol", - "start": 886 - }, - "type": "Warning" - }, - { - "component": "general", - "errorCode": "2018", - "formattedMessage": "contracts/test/TestAggregatorV3.sol:38:5: Warning: Function state mutability can be restricted to pure\n function description() external view override returns (string memory) {\n ^ (Relevant source part starts here and spans across multiple lines).\n", - "message": "Function state mutability can be restricted to pure", - "severity": "warning", - "sourceLocation": { - "end": 1065, - "file": "contracts/test/TestAggregatorV3.sol", - "start": 970 - }, - "type": "Warning" - }, - { - "component": "general", - "errorCode": "2018", - "formattedMessage": "contracts/test/TestAggregatorV3.sol:42:5: Warning: Function state mutability can be restricted to pure\n function version() external view override returns (uint256) {\n ^ (Relevant source part starts here and spans across multiple lines).\n", - "message": "Function state mutability can be restricted to pure", - "severity": "warning", - "sourceLocation": { - "end": 1156, - "file": "contracts/test/TestAggregatorV3.sol", - "start": 1071 - }, - "type": "Warning" - }, - { - "component": "general", - "errorCode": "2018", - "formattedMessage": "contracts/test/TestStdReference.sol:25:5: Warning: Function state mutability can be restricted to pure\n function getReferenceDataBulk(string[] memory _bases, string[] memory _quotes)\n ^ (Relevant source part starts here and spans across multiple lines).\n", - "message": "Function state mutability can be restricted to pure", - "severity": "warning", - "sourceLocation": { - "end": 784, - "file": "contracts/test/TestStdReference.sol", - "start": 588 - }, - "type": "Warning" - } - ], - "sources": { - "@chainlink/contracts/src/v0.6/interfaces/AggregatorV3Interface.sol": { - "ast": { - "absolutePath": "@chainlink/contracts/src/v0.6/interfaces/AggregatorV3Interface.sol", - "exportedSymbols": { - "AggregatorV3Interface": [ - 45 - ] - }, - "id": 46, - "license": "MIT", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1, - "literals": [ - "solidity", - ">=", - "0.6", - ".0" - ], - "nodeType": "PragmaDirective", - "src": "32:24:0" - }, - { - "abstract": false, - "baseContracts": [], - "contractDependencies": [], - "contractKind": "interface", - "fullyImplemented": false, - "id": 45, - "linearizedBaseContracts": [ - 45 - ], - "name": "AggregatorV3Interface", - "nodeType": "ContractDefinition", - "nodes": [ - { - "functionSelector": "313ce567", - "id": 6, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "decimals", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 2, - "nodeType": "ParameterList", - "parameters": [], - "src": "112:2:0" - }, - "returnParameters": { - "id": 5, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 4, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 6, - "src": "138:5:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 3, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "138:5:0", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "visibility": "internal" - } - ], - "src": "137:7:0" - }, - "scope": 45, - "src": "95:50:0", - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "functionSelector": "7284e416", - "id": 11, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "description", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 7, - "nodeType": "ParameterList", - "parameters": [], - "src": "168:2:0" - }, - "returnParameters": { - "id": 10, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 9, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 11, - "src": "194:13:0", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" - }, - "typeName": { - "id": 8, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "194:6:0", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "visibility": "internal" - } - ], - "src": "193:15:0" - }, - "scope": 45, - "src": "148:61:0", - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "functionSelector": "54fd4d50", - "id": 16, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "version", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 12, - "nodeType": "ParameterList", - "parameters": [], - "src": "228:2:0" - }, - "returnParameters": { - "id": 15, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 14, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 16, - "src": "254:7:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 13, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "254:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "253:9:0" - }, - "scope": 45, - "src": "212:51:0", - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "functionSelector": "9a6fc8f5", - "id": 31, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "getRoundData", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 19, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 18, - "mutability": "mutable", - "name": "_roundId", - "nodeType": "VariableDeclaration", - "scope": 31, - "src": "500:15:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - }, - "typeName": { - "id": 17, - "name": "uint80", - "nodeType": "ElementaryTypeName", - "src": "500:6:0", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - }, - "visibility": "internal" - } - ], - "src": "499:17:0" - }, - "returnParameters": { - "id": 30, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 21, - "mutability": "mutable", - "name": "roundId", - "nodeType": "VariableDeclaration", - "scope": 31, - "src": "559:14:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - }, - "typeName": { - "id": 20, - "name": "uint80", - "nodeType": "ElementaryTypeName", - "src": "559:6:0", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 23, - "mutability": "mutable", - "name": "answer", - "nodeType": "VariableDeclaration", - "scope": 31, - "src": "581:13:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "typeName": { - "id": 22, - "name": "int256", - "nodeType": "ElementaryTypeName", - "src": "581:6:0", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 25, - "mutability": "mutable", - "name": "startedAt", - "nodeType": "VariableDeclaration", - "scope": 31, - "src": "602:17:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 24, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "602:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 27, - "mutability": "mutable", - "name": "updatedAt", - "nodeType": "VariableDeclaration", - "scope": 31, - "src": "627:17:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 26, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "627:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 29, - "mutability": "mutable", - "name": "answeredInRound", - "nodeType": "VariableDeclaration", - "scope": 31, - "src": "652:22:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - }, - "typeName": { - "id": 28, - "name": "uint80", - "nodeType": "ElementaryTypeName", - "src": "652:6:0", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - }, - "visibility": "internal" - } - ], - "src": "551:129:0" - }, - "scope": 45, - "src": "478:203:0", - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "functionSelector": "feaf968c", - "id": 44, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "latestRoundData", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 32, - "nodeType": "ParameterList", - "parameters": [], - "src": "708:2:0" - }, - "returnParameters": { - "id": 43, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 34, - "mutability": "mutable", - "name": "roundId", - "nodeType": "VariableDeclaration", - "scope": 44, - "src": "753:14:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - }, - "typeName": { - "id": 33, - "name": "uint80", - "nodeType": "ElementaryTypeName", - "src": "753:6:0", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 36, - "mutability": "mutable", - "name": "answer", - "nodeType": "VariableDeclaration", - "scope": 44, - "src": "775:13:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "typeName": { - "id": 35, - "name": "int256", - "nodeType": "ElementaryTypeName", - "src": "775:6:0", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 38, - "mutability": "mutable", - "name": "startedAt", - "nodeType": "VariableDeclaration", - "scope": 44, - "src": "796:17:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 37, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "796:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 40, - "mutability": "mutable", - "name": "updatedAt", - "nodeType": "VariableDeclaration", - "scope": 44, - "src": "821:17:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 39, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "821:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 42, - "mutability": "mutable", - "name": "answeredInRound", - "nodeType": "VariableDeclaration", - "scope": 44, - "src": "846:22:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - }, - "typeName": { - "id": 41, - "name": "uint80", - "nodeType": "ElementaryTypeName", - "src": "846:6:0", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - }, - "visibility": "internal" - } - ], - "src": "745:129:0" - }, - "scope": 45, - "src": "684:191:0", - "stateMutability": "view", - "virtual": false, - "visibility": "external" - } - ], - "scope": 46, - "src": "58:820:0" - } - ], - "src": "32:847:0" - }, - "id": 0 - }, - "@openzeppelin/contracts/math/SafeMath.sol": { - "ast": { - "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol", - "exportedSymbols": { - "SafeMath": [ - 400 - ] - }, - "id": 401, - "license": "MIT", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 47, - "literals": [ - "solidity", - ">=", - "0.6", - ".0", - "<", - "0.8", - ".0" - ], - "nodeType": "PragmaDirective", - "src": "33:31:1" - }, - { - "abstract": false, - "baseContracts": [], - "contractDependencies": [], - "contractKind": "library", - "documentation": { - "id": 48, - "nodeType": "StructuredDocumentation", - "src": "66:563:1", - "text": " @dev Wrappers over Solidity's arithmetic operations with added overflow\n checks.\n Arithmetic operations in Solidity wrap on overflow. This can easily result\n in bugs, because programmers usually assume that an overflow raises an\n error, which is the standard behavior in high level programming languages.\n `SafeMath` restores this intuition by reverting the transaction when an\n operation overflows.\n Using this library instead of the unchecked operations eliminates an entire\n class of bugs, so it's recommended to use it always." - }, - "fullyImplemented": true, - "id": 400, - "linearizedBaseContracts": [ - 400 - ], - "name": "SafeMath", - "nodeType": "ContractDefinition", - "nodes": [ - { - "body": { - "id": 78, - "nodeType": "Block", - "src": "865:98:1", - "statements": [ - { - "assignments": [ - 61 - ], - "declarations": [ - { - "constant": false, - "id": 61, - "mutability": "mutable", - "name": "c", - "nodeType": "VariableDeclaration", - "scope": 78, - "src": "875:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 60, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "875:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 65, - "initialValue": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 64, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 62, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51, - "src": "887:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "id": 63, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 53, - "src": "891:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "887:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "875:17:1" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 68, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 66, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 61, - "src": "906:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "id": 67, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51, - "src": "910:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "906:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 73, - "nodeType": "IfStatement", - "src": "902:28:1", - "trueBody": { - "expression": { - "components": [ - { - "hexValue": "66616c7365", - "id": 69, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "921:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - { - "hexValue": "30", - "id": 70, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "928:1:1", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "id": 71, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "920:10:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$", - "typeString": "tuple(bool,int_const 0)" - } - }, - "functionReturnParameters": 59, - "id": 72, - "nodeType": "Return", - "src": "913:17:1" - } - }, - { - "expression": { - "components": [ - { - "hexValue": "74727565", - "id": 74, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "948:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - { - "id": 75, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 61, - "src": "954:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 76, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "947:9:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$", - "typeString": "tuple(bool,uint256)" - } - }, - "functionReturnParameters": 59, - "id": 77, - "nodeType": "Return", - "src": "940:16:1" - } - ] - }, - "documentation": { - "id": 49, - "nodeType": "StructuredDocumentation", - "src": "653:131:1", - "text": " @dev Returns the addition of two unsigned integers, with an overflow flag.\n _Available since v3.4._" - }, - "id": 79, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "tryAdd", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 54, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 51, - "mutability": "mutable", - "name": "a", - "nodeType": "VariableDeclaration", - "scope": 79, - "src": "805:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 50, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "805:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 53, - "mutability": "mutable", - "name": "b", - "nodeType": "VariableDeclaration", - "scope": 79, - "src": "816:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 52, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "816:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "804:22:1" - }, - "returnParameters": { - "id": 59, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 56, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 79, - "src": "850:4:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 55, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "850:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 58, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 79, - "src": "856:7:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 57, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "856:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "849:15:1" - }, - "scope": 400, - "src": "789:174:1", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 105, - "nodeType": "Block", - "src": "1185:75:1", - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 93, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 91, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 84, - "src": "1199:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "id": 92, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 82, - "src": "1203:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1199:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 98, - "nodeType": "IfStatement", - "src": "1195:28:1", - "trueBody": { - "expression": { - "components": [ - { - "hexValue": "66616c7365", - "id": 94, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1214:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - { - "hexValue": "30", - "id": 95, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1221:1:1", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "id": 96, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "1213:10:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$", - "typeString": "tuple(bool,int_const 0)" - } - }, - "functionReturnParameters": 90, - "id": 97, - "nodeType": "Return", - "src": "1206:17:1" - } - }, - { - "expression": { - "components": [ - { - "hexValue": "74727565", - "id": 99, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1241:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 102, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 100, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 82, - "src": "1247:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "id": 101, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 84, - "src": "1251:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1247:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 103, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "1240:13:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$", - "typeString": "tuple(bool,uint256)" - } - }, - "functionReturnParameters": 90, - "id": 104, - "nodeType": "Return", - "src": "1233:20:1" - } - ] - }, - "documentation": { - "id": 80, - "nodeType": "StructuredDocumentation", - "src": "969:135:1", - "text": " @dev Returns the substraction of two unsigned integers, with an overflow flag.\n _Available since v3.4._" - }, - "id": 106, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "trySub", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 85, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 82, - "mutability": "mutable", - "name": "a", - "nodeType": "VariableDeclaration", - "scope": 106, - "src": "1125:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 81, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1125:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 84, - "mutability": "mutable", - "name": "b", - "nodeType": "VariableDeclaration", - "scope": 106, - "src": "1136:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 83, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1136:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "1124:22:1" - }, - "returnParameters": { - "id": 90, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 87, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 106, - "src": "1170:4:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 86, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "1170:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 89, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 106, - "src": "1176:7:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 88, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1176:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "1169:15:1" - }, - "scope": 400, - "src": "1109:151:1", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 146, - "nodeType": "Block", - "src": "1484:359:1", - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 120, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 118, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 109, - "src": "1716:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 119, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1721:1:1", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1716:6:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 125, - "nodeType": "IfStatement", - "src": "1712:28:1", - "trueBody": { - "expression": { - "components": [ - { - "hexValue": "74727565", - "id": 121, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1732:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - { - "hexValue": "30", - "id": 122, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1738:1:1", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "id": 123, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "1731:9:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$", - "typeString": "tuple(bool,int_const 0)" - } - }, - "functionReturnParameters": 117, - "id": 124, - "nodeType": "Return", - "src": "1724:16:1" - } - }, - { - "assignments": [ - 127 - ], - "declarations": [ - { - "constant": false, - "id": 127, - "mutability": "mutable", - "name": "c", - "nodeType": "VariableDeclaration", - "scope": 146, - "src": "1750:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 126, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1750:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 131, - "initialValue": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 130, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 128, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 109, - "src": "1762:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "id": 129, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 111, - "src": "1766:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1762:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1750:17:1" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 136, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 134, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 132, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 127, - "src": "1781:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "id": 133, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 109, - "src": "1785:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1781:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "id": 135, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 111, - "src": "1790:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1781:10:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 141, - "nodeType": "IfStatement", - "src": "1777:33:1", - "trueBody": { - "expression": { - "components": [ - { - "hexValue": "66616c7365", - "id": 137, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1801:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - { - "hexValue": "30", - "id": 138, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1808:1:1", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "id": 139, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "1800:10:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$", - "typeString": "tuple(bool,int_const 0)" - } - }, - "functionReturnParameters": 117, - "id": 140, - "nodeType": "Return", - "src": "1793:17:1" - } - }, - { - "expression": { - "components": [ - { - "hexValue": "74727565", - "id": 142, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1828:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - { - "id": 143, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 127, - "src": "1834:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 144, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "1827:9:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$", - "typeString": "tuple(bool,uint256)" - } - }, - "functionReturnParameters": 117, - "id": 145, - "nodeType": "Return", - "src": "1820:16:1" - } - ] - }, - "documentation": { - "id": 107, - "nodeType": "StructuredDocumentation", - "src": "1266:137:1", - "text": " @dev Returns the multiplication of two unsigned integers, with an overflow flag.\n _Available since v3.4._" - }, - "id": 147, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "tryMul", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 112, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 109, - "mutability": "mutable", - "name": "a", - "nodeType": "VariableDeclaration", - "scope": 147, - "src": "1424:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 108, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1424:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 111, - "mutability": "mutable", - "name": "b", - "nodeType": "VariableDeclaration", - "scope": 147, - "src": "1435:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 110, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1435:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "1423:22:1" - }, - "returnParameters": { - "id": 117, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 114, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 147, - "src": "1469:4:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 113, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "1469:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 116, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 147, - "src": "1475:7:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 115, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1475:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "1468:15:1" - }, - "scope": 400, - "src": "1408:435:1", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 173, - "nodeType": "Block", - "src": "2068:76:1", - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 161, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 159, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 152, - "src": "2082:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 160, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2087:1:1", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2082:6:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 166, - "nodeType": "IfStatement", - "src": "2078:29:1", - "trueBody": { - "expression": { - "components": [ - { - "hexValue": "66616c7365", - "id": 162, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2098:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - { - "hexValue": "30", - "id": 163, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2105:1:1", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "id": 164, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "2097:10:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$", - "typeString": "tuple(bool,int_const 0)" - } - }, - "functionReturnParameters": 158, - "id": 165, - "nodeType": "Return", - "src": "2090:17:1" - } - }, - { - "expression": { - "components": [ - { - "hexValue": "74727565", - "id": 167, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2125:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 170, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 168, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 150, - "src": "2131:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "id": 169, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 152, - "src": "2135:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2131:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 171, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "2124:13:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$", - "typeString": "tuple(bool,uint256)" - } - }, - "functionReturnParameters": 158, - "id": 172, - "nodeType": "Return", - "src": "2117:20:1" - } - ] - }, - "documentation": { - "id": 148, - "nodeType": "StructuredDocumentation", - "src": "1849:138:1", - "text": " @dev Returns the division of two unsigned integers, with a division by zero flag.\n _Available since v3.4._" - }, - "id": 174, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "tryDiv", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 153, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 150, - "mutability": "mutable", - "name": "a", - "nodeType": "VariableDeclaration", - "scope": 174, - "src": "2008:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 149, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2008:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 152, - "mutability": "mutable", - "name": "b", - "nodeType": "VariableDeclaration", - "scope": 174, - "src": "2019:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 151, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2019:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "2007:22:1" - }, - "returnParameters": { - "id": 158, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 155, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 174, - "src": "2053:4:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 154, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "2053:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 157, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 174, - "src": "2059:7:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 156, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2059:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "2052:15:1" - }, - "scope": 400, - "src": "1992:152:1", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 200, - "nodeType": "Block", - "src": "2379:76:1", - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 188, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 186, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 179, - "src": "2393:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 187, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2398:1:1", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2393:6:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 193, - "nodeType": "IfStatement", - "src": "2389:29:1", - "trueBody": { - "expression": { - "components": [ - { - "hexValue": "66616c7365", - "id": 189, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2409:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - { - "hexValue": "30", - "id": 190, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2416:1:1", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "id": 191, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "2408:10:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$", - "typeString": "tuple(bool,int_const 0)" - } - }, - "functionReturnParameters": 185, - "id": 192, - "nodeType": "Return", - "src": "2401:17:1" - } - }, - { - "expression": { - "components": [ - { - "hexValue": "74727565", - "id": 194, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2436:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 197, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 195, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 177, - "src": "2442:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "%", - "rightExpression": { - "id": 196, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 179, - "src": "2446:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2442:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 198, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "2435:13:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$", - "typeString": "tuple(bool,uint256)" - } - }, - "functionReturnParameters": 185, - "id": 199, - "nodeType": "Return", - "src": "2428:20:1" - } - ] - }, - "documentation": { - "id": 175, - "nodeType": "StructuredDocumentation", - "src": "2150:148:1", - "text": " @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.\n _Available since v3.4._" - }, - "id": 201, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "tryMod", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 180, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 177, - "mutability": "mutable", - "name": "a", - "nodeType": "VariableDeclaration", - "scope": 201, - "src": "2319:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 176, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2319:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 179, - "mutability": "mutable", - "name": "b", - "nodeType": "VariableDeclaration", - "scope": 201, - "src": "2330:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 178, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2330:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "2318:22:1" - }, - "returnParameters": { - "id": 185, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 182, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 201, - "src": "2364:4:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 181, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "2364:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 184, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 201, - "src": "2370:7:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 183, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2370:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "2363:15:1" - }, - "scope": 400, - "src": "2303:152:1", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 226, - "nodeType": "Block", - "src": "2757:108:1", - "statements": [ - { - "assignments": [ - 212 - ], - "declarations": [ - { - "constant": false, - "id": 212, - "mutability": "mutable", - "name": "c", - "nodeType": "VariableDeclaration", - "scope": 226, - "src": "2767:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 211, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2767:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 216, - "initialValue": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 215, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 213, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 204, - "src": "2779:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "id": 214, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 206, - "src": "2783:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2779:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2767:17:1" - }, - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 220, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 218, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 212, - "src": "2802:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "id": 219, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 204, - "src": "2807:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2802:6:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "536166654d6174683a206164646974696f6e206f766572666c6f77", - "id": 221, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2810:29:1", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a", - "typeString": "literal_string \"SafeMath: addition overflow\"" - }, - "value": "SafeMath: addition overflow" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a", - "typeString": "literal_string \"SafeMath: addition overflow\"" - } - ], - "id": 217, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "2794:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 222, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2794:46:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 223, - "nodeType": "ExpressionStatement", - "src": "2794:46:1" - }, - { - "expression": { - "id": 224, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 212, - "src": "2857:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 210, - "id": 225, - "nodeType": "Return", - "src": "2850:8:1" - } - ] - }, - "documentation": { - "id": 202, - "nodeType": "StructuredDocumentation", - "src": "2461:224:1", - "text": " @dev Returns the addition of two unsigned integers, reverting on\n overflow.\n Counterpart to Solidity's `+` operator.\n Requirements:\n - Addition cannot overflow." - }, - "id": 227, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "add", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 207, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 204, - "mutability": "mutable", - "name": "a", - "nodeType": "VariableDeclaration", - "scope": 227, - "src": "2703:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 203, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2703:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 206, - "mutability": "mutable", - "name": "b", - "nodeType": "VariableDeclaration", - "scope": 227, - "src": "2714:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 205, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2714:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "2702:22:1" - }, - "returnParameters": { - "id": 210, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 209, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 227, - "src": "2748:7:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 208, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2748:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "2747:9:1" - }, - "scope": 400, - "src": "2690:175:1", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 248, - "nodeType": "Block", - "src": "3203:88:1", - "statements": [ - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 240, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 238, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 232, - "src": "3221:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "id": 239, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 230, - "src": "3226:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3221:6:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "536166654d6174683a207375627472616374696f6e206f766572666c6f77", - "id": 241, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3229:32:1", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_50b058e9b5320e58880d88223c9801cd9eecdcf90323d5c2318bc1b6b916e862", - "typeString": "literal_string \"SafeMath: subtraction overflow\"" - }, - "value": "SafeMath: subtraction overflow" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_50b058e9b5320e58880d88223c9801cd9eecdcf90323d5c2318bc1b6b916e862", - "typeString": "literal_string \"SafeMath: subtraction overflow\"" - } - ], - "id": 237, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "3213:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 242, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3213:49:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 243, - "nodeType": "ExpressionStatement", - "src": "3213:49:1" - }, - { - "expression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 246, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 244, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 230, - "src": "3279:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "id": 245, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 232, - "src": "3283:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3279:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 236, - "id": 247, - "nodeType": "Return", - "src": "3272:12:1" - } - ] - }, - "documentation": { - "id": 228, - "nodeType": "StructuredDocumentation", - "src": "2871:260:1", - "text": " @dev Returns the subtraction of two unsigned integers, reverting on\n overflow (when the result is negative).\n Counterpart to Solidity's `-` operator.\n Requirements:\n - Subtraction cannot overflow." - }, - "id": 249, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "sub", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 233, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 230, - "mutability": "mutable", - "name": "a", - "nodeType": "VariableDeclaration", - "scope": 249, - "src": "3149:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 229, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3149:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 232, - "mutability": "mutable", - "name": "b", - "nodeType": "VariableDeclaration", - "scope": 249, - "src": "3160:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 231, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3160:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "3148:22:1" - }, - "returnParameters": { - "id": 236, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 235, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 249, - "src": "3194:7:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 234, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3194:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "3193:9:1" - }, - "scope": 400, - "src": "3136:155:1", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 282, - "nodeType": "Block", - "src": "3605:148:1", - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 261, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 259, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 252, - "src": "3619:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 260, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3624:1:1", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3619:6:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 264, - "nodeType": "IfStatement", - "src": "3615:20:1", - "trueBody": { - "expression": { - "hexValue": "30", - "id": 262, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3634:1:1", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "functionReturnParameters": 258, - "id": 263, - "nodeType": "Return", - "src": "3627:8:1" - } - }, - { - "assignments": [ - 266 - ], - "declarations": [ - { - "constant": false, - "id": 266, - "mutability": "mutable", - "name": "c", - "nodeType": "VariableDeclaration", - "scope": 282, - "src": "3645:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 265, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3645:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 270, - "initialValue": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 269, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 267, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 252, - "src": "3657:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "id": 268, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 254, - "src": "3661:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3657:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3645:17:1" - }, - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 276, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 274, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 272, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 266, - "src": "3680:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "id": 273, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 252, - "src": "3684:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3680:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "id": 275, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 254, - "src": "3689:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3680:10:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77", - "id": 277, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3692:35:1", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3", - "typeString": "literal_string \"SafeMath: multiplication overflow\"" - }, - "value": "SafeMath: multiplication overflow" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3", - "typeString": "literal_string \"SafeMath: multiplication overflow\"" - } - ], - "id": 271, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "3672:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 278, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3672:56:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 279, - "nodeType": "ExpressionStatement", - "src": "3672:56:1" - }, - { - "expression": { - "id": 280, - "name": "c", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 266, - "src": "3745:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 258, - "id": 281, - "nodeType": "Return", - "src": "3738:8:1" - } - ] - }, - "documentation": { - "id": 250, - "nodeType": "StructuredDocumentation", - "src": "3297:236:1", - "text": " @dev Returns the multiplication of two unsigned integers, reverting on\n overflow.\n Counterpart to Solidity's `*` operator.\n Requirements:\n - Multiplication cannot overflow." - }, - "id": 283, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "mul", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 255, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 252, - "mutability": "mutable", - "name": "a", - "nodeType": "VariableDeclaration", - "scope": 283, - "src": "3551:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 251, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3551:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 254, - "mutability": "mutable", - "name": "b", - "nodeType": "VariableDeclaration", - "scope": 283, - "src": "3562:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 253, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3562:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "3550:22:1" - }, - "returnParameters": { - "id": 258, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 257, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 283, - "src": "3596:7:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 256, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3596:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "3595:9:1" - }, - "scope": 400, - "src": "3538:215:1", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 304, - "nodeType": "Block", - "src": "4284:83:1", - "statements": [ - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 296, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 294, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 288, - "src": "4302:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 295, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4306:1:1", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "4302:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "536166654d6174683a206469766973696f6e206279207a65726f", - "id": 297, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4309:28:1", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_5b7cc70dda4dc2143e5adb63bd5d1f349504f461dbdfd9bc76fac1f8ca6d019f", - "typeString": "literal_string \"SafeMath: division by zero\"" - }, - "value": "SafeMath: division by zero" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_5b7cc70dda4dc2143e5adb63bd5d1f349504f461dbdfd9bc76fac1f8ca6d019f", - "typeString": "literal_string \"SafeMath: division by zero\"" - } - ], - "id": 293, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "4294:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 298, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4294:44:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 299, - "nodeType": "ExpressionStatement", - "src": "4294:44:1" - }, - { - "expression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 302, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 300, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 286, - "src": "4355:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "id": 301, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 288, - "src": "4359:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4355:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 292, - "id": 303, - "nodeType": "Return", - "src": "4348:12:1" - } - ] - }, - "documentation": { - "id": 284, - "nodeType": "StructuredDocumentation", - "src": "3759:453:1", - "text": " @dev Returns the integer division of two unsigned integers, reverting on\n division by zero. The result is rounded towards zero.\n Counterpart to Solidity's `/` operator. Note: this function uses a\n `revert` opcode (which leaves remaining gas untouched) while Solidity\n uses an invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero." - }, - "id": 305, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "div", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 289, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 286, - "mutability": "mutable", - "name": "a", - "nodeType": "VariableDeclaration", - "scope": 305, - "src": "4230:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 285, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4230:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 288, - "mutability": "mutable", - "name": "b", - "nodeType": "VariableDeclaration", - "scope": 305, - "src": "4241:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 287, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4241:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "4229:22:1" - }, - "returnParameters": { - "id": 292, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 291, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 305, - "src": "4275:7:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 290, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4275:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "4274:9:1" - }, - "scope": 400, - "src": "4217:150:1", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 326, - "nodeType": "Block", - "src": "4887:81:1", - "statements": [ - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 318, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 316, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 310, - "src": "4905:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 317, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4909:1:1", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "4905:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "536166654d6174683a206d6f64756c6f206279207a65726f", - "id": 319, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4912:26:1", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_726e51f7b81fce0a68f5f214f445e275313b20b1633f08ce954ee39abf8d7832", - "typeString": "literal_string \"SafeMath: modulo by zero\"" - }, - "value": "SafeMath: modulo by zero" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_726e51f7b81fce0a68f5f214f445e275313b20b1633f08ce954ee39abf8d7832", - "typeString": "literal_string \"SafeMath: modulo by zero\"" - } - ], - "id": 315, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "4897:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 320, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4897:42:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 321, - "nodeType": "ExpressionStatement", - "src": "4897:42:1" - }, - { - "expression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 324, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 322, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 308, - "src": "4956:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "%", - "rightExpression": { - "id": 323, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 310, - "src": "4960:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4956:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 314, - "id": 325, - "nodeType": "Return", - "src": "4949:12:1" - } - ] - }, - "documentation": { - "id": 306, - "nodeType": "StructuredDocumentation", - "src": "4373:442:1", - "text": " @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n reverting when dividing by zero.\n Counterpart to Solidity's `%` operator. This function uses a `revert`\n opcode (which leaves remaining gas untouched) while Solidity uses an\n invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero." - }, - "id": 327, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "mod", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 311, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 308, - "mutability": "mutable", - "name": "a", - "nodeType": "VariableDeclaration", - "scope": 327, - "src": "4833:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 307, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4833:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 310, - "mutability": "mutable", - "name": "b", - "nodeType": "VariableDeclaration", - "scope": 327, - "src": "4844:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 309, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4844:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "4832:22:1" - }, - "returnParameters": { - "id": 314, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 313, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 327, - "src": "4878:7:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 312, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4878:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "4877:9:1" - }, - "scope": 400, - "src": "4820:148:1", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 350, - "nodeType": "Block", - "src": "5527:68:1", - "statements": [ - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 342, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 340, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 332, - "src": "5545:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "id": 341, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 330, - "src": "5550:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "5545:6:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "id": 343, - "name": "errorMessage", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 334, - "src": "5553:12:1", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - ], - "id": 339, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "5537:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 344, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5537:29:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 345, - "nodeType": "ExpressionStatement", - "src": "5537:29:1" - }, - { - "expression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 348, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 346, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 330, - "src": "5583:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "id": 347, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 332, - "src": "5587:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "5583:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 338, - "id": 349, - "nodeType": "Return", - "src": "5576:12:1" - } - ] - }, - "documentation": { - "id": 328, - "nodeType": "StructuredDocumentation", - "src": "4974:453:1", - "text": " @dev Returns the subtraction of two unsigned integers, reverting with custom message on\n overflow (when the result is negative).\n CAUTION: This function is deprecated because it requires allocating memory for the error\n message unnecessarily. For custom revert reasons use {trySub}.\n Counterpart to Solidity's `-` operator.\n Requirements:\n - Subtraction cannot overflow." - }, - "id": 351, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "sub", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 335, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 330, - "mutability": "mutable", - "name": "a", - "nodeType": "VariableDeclaration", - "scope": 351, - "src": "5445:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 329, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5445:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 332, - "mutability": "mutable", - "name": "b", - "nodeType": "VariableDeclaration", - "scope": 351, - "src": "5456:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 331, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5456:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 334, - "mutability": "mutable", - "name": "errorMessage", - "nodeType": "VariableDeclaration", - "scope": 351, - "src": "5467:26:1", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" - }, - "typeName": { - "id": 333, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "5467:6:1", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "visibility": "internal" - } - ], - "src": "5444:50:1" - }, - "returnParameters": { - "id": 338, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 337, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 351, - "src": "5518:7:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 336, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5518:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "5517:9:1" - }, - "scope": 400, - "src": "5432:163:1", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 374, - "nodeType": "Block", - "src": "6347:67:1", - "statements": [ - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 366, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 364, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 356, - "src": "6365:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 365, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6369:1:1", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "6365:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "id": 367, - "name": "errorMessage", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 358, - "src": "6372:12:1", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - ], - "id": 363, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "6357:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 368, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6357:28:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 369, - "nodeType": "ExpressionStatement", - "src": "6357:28:1" - }, - { - "expression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 372, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 370, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 354, - "src": "6402:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "id": 371, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 356, - "src": "6406:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "6402:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 362, - "id": 373, - "nodeType": "Return", - "src": "6395:12:1" - } - ] - }, - "documentation": { - "id": 352, - "nodeType": "StructuredDocumentation", - "src": "5601:646:1", - "text": " @dev Returns the integer division of two unsigned integers, reverting with custom message on\n division by zero. The result is rounded towards zero.\n CAUTION: This function is deprecated because it requires allocating memory for the error\n message unnecessarily. For custom revert reasons use {tryDiv}.\n Counterpart to Solidity's `/` operator. Note: this function uses a\n `revert` opcode (which leaves remaining gas untouched) while Solidity\n uses an invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero." - }, - "id": 375, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "div", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 359, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 354, - "mutability": "mutable", - "name": "a", - "nodeType": "VariableDeclaration", - "scope": 375, - "src": "6265:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 353, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6265:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 356, - "mutability": "mutable", - "name": "b", - "nodeType": "VariableDeclaration", - "scope": 375, - "src": "6276:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 355, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6276:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 358, - "mutability": "mutable", - "name": "errorMessage", - "nodeType": "VariableDeclaration", - "scope": 375, - "src": "6287:26:1", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" - }, - "typeName": { - "id": 357, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "6287:6:1", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "visibility": "internal" - } - ], - "src": "6264:50:1" - }, - "returnParameters": { - "id": 362, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 361, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 375, - "src": "6338:7:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 360, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6338:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "6337:9:1" - }, - "scope": 400, - "src": "6252:162:1", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 398, - "nodeType": "Block", - "src": "7155:67:1", - "statements": [ - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 390, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 388, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 380, - "src": "7173:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 389, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7177:1:1", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "7173:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "id": 391, - "name": "errorMessage", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 382, - "src": "7180:12:1", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - ], - "id": 387, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "7165:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 392, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7165:28:1", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 393, - "nodeType": "ExpressionStatement", - "src": "7165:28:1" - }, - { - "expression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 396, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 394, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 378, - "src": "7210:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "%", - "rightExpression": { - "id": 395, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 380, - "src": "7214:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "7210:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 386, - "id": 397, - "nodeType": "Return", - "src": "7203:12:1" - } - ] - }, - "documentation": { - "id": 376, - "nodeType": "StructuredDocumentation", - "src": "6420:635:1", - "text": " @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n reverting with custom message when dividing by zero.\n CAUTION: This function is deprecated because it requires allocating memory for the error\n message unnecessarily. For custom revert reasons use {tryMod}.\n Counterpart to Solidity's `%` operator. This function uses a `revert`\n opcode (which leaves remaining gas untouched) while Solidity uses an\n invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero." - }, - "id": 399, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "mod", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 383, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 378, - "mutability": "mutable", - "name": "a", - "nodeType": "VariableDeclaration", - "scope": 399, - "src": "7073:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 377, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7073:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 380, - "mutability": "mutable", - "name": "b", - "nodeType": "VariableDeclaration", - "scope": 399, - "src": "7084:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 379, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7084:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 382, - "mutability": "mutable", - "name": "errorMessage", - "nodeType": "VariableDeclaration", - "scope": 399, - "src": "7095:26:1", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" - }, - "typeName": { - "id": 381, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "7095:6:1", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "visibility": "internal" - } - ], - "src": "7072:50:1" - }, - "returnParameters": { - "id": 386, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 385, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 399, - "src": "7146:7:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 384, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7146:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "7145:9:1" - }, - "scope": 400, - "src": "7060:162:1", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - } - ], - "scope": 401, - "src": "630:6594:1" - } - ], - "src": "33:7192:1" - }, - "id": 1 - }, - "@openzeppelin/contracts/utils/Address.sol": { - "ast": { - "absolutePath": "@openzeppelin/contracts/utils/Address.sol", - "exportedSymbols": { - "Address": [ - 696 - ] - }, - "id": 697, - "license": "MIT", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 402, - "literals": [ - "solidity", - ">=", - "0.6", - ".2", - "<", - "0.8", - ".0" - ], - "nodeType": "PragmaDirective", - "src": "33:31:2" - }, - { - "abstract": false, - "baseContracts": [], - "contractDependencies": [], - "contractKind": "library", - "documentation": { - "id": 403, - "nodeType": "StructuredDocumentation", - "src": "66:67:2", - "text": " @dev Collection of functions related to the address type" - }, - "fullyImplemented": true, - "id": 696, - "linearizedBaseContracts": [ - 696 - ], - "name": "Address", - "nodeType": "ContractDefinition", - "nodes": [ - { - "body": { - "id": 419, - "nodeType": "Block", - "src": "792:347:2", - "statements": [ - { - "assignments": [ - 412 - ], - "declarations": [ - { - "constant": false, - "id": 412, - "mutability": "mutable", - "name": "size", - "nodeType": "VariableDeclaration", - "scope": 419, - "src": "989:12:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 411, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "989:7:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 413, - "nodeType": "VariableDeclarationStatement", - "src": "989:12:2" - }, - { - "AST": { - "nodeType": "YulBlock", - "src": "1076:32:2", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "1078:28:2", - "value": { - "arguments": [ - { - "name": "account", - "nodeType": "YulIdentifier", - "src": "1098:7:2" - } - ], - "functionName": { - "name": "extcodesize", - "nodeType": "YulIdentifier", - "src": "1086:11:2" - }, - "nodeType": "YulFunctionCall", - "src": "1086:20:2" - }, - "variableNames": [ - { - "name": "size", - "nodeType": "YulIdentifier", - "src": "1078:4:2" - } - ] - } - ] - }, - "evmVersion": "berlin", - "externalReferences": [ - { - "declaration": 406, - "isOffset": false, - "isSlot": false, - "src": "1098:7:2", - "valueSize": 1 - }, - { - "declaration": 412, - "isOffset": false, - "isSlot": false, - "src": "1078:4:2", - "valueSize": 1 - } - ], - "id": 414, - "nodeType": "InlineAssembly", - "src": "1067:41:2" - }, - { - "expression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 417, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 415, - "name": "size", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 412, - "src": "1124:4:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 416, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1131:1:2", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1124:8:2", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "functionReturnParameters": 410, - "id": 418, - "nodeType": "Return", - "src": "1117:15:2" - } - ] - }, - "documentation": { - "id": 404, - "nodeType": "StructuredDocumentation", - "src": "156:565:2", - "text": " @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n - an externally-owned account\n - a contract in construction\n - an address where a contract will be created\n - an address where a contract lived, but was destroyed\n ====" - }, - "id": 420, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "isContract", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 407, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 406, - "mutability": "mutable", - "name": "account", - "nodeType": "VariableDeclaration", - "scope": 420, - "src": "746:15:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 405, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "746:7:2", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "745:17:2" - }, - "returnParameters": { - "id": 410, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 409, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 420, - "src": "786:4:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 408, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "786:4:2", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "src": "785:6:2" - }, - "scope": 696, - "src": "726:413:2", - "stateMutability": "view", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 453, - "nodeType": "Block", - "src": "2127:320:2", - "statements": [ - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 435, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "arguments": [ - { - "id": 431, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -28, - "src": "2153:4:2", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Address_$696", - "typeString": "library Address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_Address_$696", - "typeString": "library Address" - } - ], - "id": 430, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2145:7:2", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 429, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2145:7:2", - "typeDescriptions": {} - } - }, - "id": 432, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2145:13:2", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 433, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "balance", - "nodeType": "MemberAccess", - "src": "2145:21:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "id": 434, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 425, - "src": "2170:6:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2145:31:2", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "416464726573733a20696e73756666696369656e742062616c616e6365", - "id": 436, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2178:31:2", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9", - "typeString": "literal_string \"Address: insufficient balance\"" - }, - "value": "Address: insufficient balance" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9", - "typeString": "literal_string \"Address: insufficient balance\"" - } - ], - "id": 428, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "2137:7:2", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 437, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2137:73:2", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 438, - "nodeType": "ExpressionStatement", - "src": "2137:73:2" - }, - { - "assignments": [ - 440, - null - ], - "declarations": [ - { - "constant": false, - "id": 440, - "mutability": "mutable", - "name": "success", - "nodeType": "VariableDeclaration", - "scope": 453, - "src": "2299:12:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 439, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "2299:4:2", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - }, - null - ], - "id": 447, - "initialValue": { - "arguments": [ - { - "hexValue": "", - "id": 445, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2349:2:2", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", - "typeString": "literal_string \"\"" - }, - "value": "" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", - "typeString": "literal_string \"\"" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", - "typeString": "literal_string \"\"" - } - ], - "expression": { - "id": 441, - "name": "recipient", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 423, - "src": "2317:9:2", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "id": 442, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "call", - "nodeType": "MemberAccess", - "src": "2317:14:2", - "typeDescriptions": { - "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", - "typeString": "function (bytes memory) payable returns (bool,bytes memory)" - } - }, - "id": 444, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "names": [ - "value" - ], - "nodeType": "FunctionCallOptions", - "options": [ - { - "id": 443, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 425, - "src": "2340:6:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "src": "2317:31:2", - "typeDescriptions": { - "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value", - "typeString": "function (bytes memory) payable returns (bool,bytes memory)" - } - }, - "id": 446, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2317:35:2", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", - "typeString": "tuple(bool,bytes memory)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2298:54:2" - }, - { - "expression": { - "arguments": [ - { - "id": 449, - "name": "success", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 440, - "src": "2370:7:2", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564", - "id": 450, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2379:60:2", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae", - "typeString": "literal_string \"Address: unable to send value, recipient may have reverted\"" - }, - "value": "Address: unable to send value, recipient may have reverted" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae", - "typeString": "literal_string \"Address: unable to send value, recipient may have reverted\"" - } - ], - "id": 448, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "2362:7:2", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 451, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2362:78:2", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 452, - "nodeType": "ExpressionStatement", - "src": "2362:78:2" - } - ] - }, - "documentation": { - "id": 421, - "nodeType": "StructuredDocumentation", - "src": "1145:906:2", - "text": " @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]." - }, - "id": 454, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "sendValue", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 426, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 423, - "mutability": "mutable", - "name": "recipient", - "nodeType": "VariableDeclaration", - "scope": 454, - "src": "2075:25:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - "typeName": { - "id": 422, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2075:15:2", - "stateMutability": "payable", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 425, - "mutability": "mutable", - "name": "amount", - "nodeType": "VariableDeclaration", - "scope": 454, - "src": "2102:14:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 424, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2102:7:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "2074:43:2" - }, - "returnParameters": { - "id": 427, - "nodeType": "ParameterList", - "parameters": [], - "src": "2127:0:2" - }, - "scope": 696, - "src": "2056:391:2", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 470, - "nodeType": "Block", - "src": "3277:82:2", - "statements": [ - { - "expression": { - "arguments": [ - { - "id": 465, - "name": "target", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 457, - "src": "3305:6:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 466, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 459, - "src": "3313:4:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "hexValue": "416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564", - "id": 467, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3319:32:2", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df", - "typeString": "literal_string \"Address: low-level call failed\"" - }, - "value": "Address: low-level call failed" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df", - "typeString": "literal_string \"Address: low-level call failed\"" - } - ], - "id": 464, - "name": "functionCall", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 471, - 491 - ], - "referencedDeclaration": 491, - "src": "3292:12:2", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", - "typeString": "function (address,bytes memory,string memory) returns (bytes memory)" - } - }, - "id": 468, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3292:60:2", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "functionReturnParameters": 463, - "id": 469, - "nodeType": "Return", - "src": "3285:67:2" - } - ] - }, - "documentation": { - "id": 455, - "nodeType": "StructuredDocumentation", - "src": "2453:730:2", - "text": " @dev Performs a Solidity function call using a low level `call`. A\n plain`call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason, it is bubbled up by this\n function (like regular Solidity function calls).\n Returns the raw returned data. To convert to the expected return value,\n use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n Requirements:\n - `target` must be a contract.\n - calling `target` with `data` must not revert.\n _Available since v3.1._" - }, - "id": 471, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "functionCall", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 460, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 457, - "mutability": "mutable", - "name": "target", - "nodeType": "VariableDeclaration", - "scope": 471, - "src": "3210:14:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 456, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3210:7:2", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 459, - "mutability": "mutable", - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 471, - "src": "3226:17:2", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 458, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "3226:5:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "3209:35:2" - }, - "returnParameters": { - "id": 463, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 462, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 471, - "src": "3263:12:2", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 461, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "3263:5:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "3262:14:2" - }, - "scope": 696, - "src": "3188:171:2", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 490, - "nodeType": "Block", - "src": "3698:76:2", - "statements": [ - { - "expression": { - "arguments": [ - { - "id": 484, - "name": "target", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 474, - "src": "3737:6:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 485, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 476, - "src": "3745:4:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "hexValue": "30", - "id": 486, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3751:1:2", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - { - "id": 487, - "name": "errorMessage", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 478, - "src": "3754:12:2", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - ], - "id": 483, - "name": "functionCallWithValue", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 511, - 561 - ], - "referencedDeclaration": 561, - "src": "3715:21:2", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", - "typeString": "function (address,bytes memory,uint256,string memory) returns (bytes memory)" - } - }, - "id": 488, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3715:52:2", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "functionReturnParameters": 482, - "id": 489, - "nodeType": "Return", - "src": "3708:59:2" - } - ] - }, - "documentation": { - "id": 472, - "nodeType": "StructuredDocumentation", - "src": "3365:211:2", - "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._" - }, - "id": 491, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "functionCall", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 479, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 474, - "mutability": "mutable", - "name": "target", - "nodeType": "VariableDeclaration", - "scope": 491, - "src": "3603:14:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 473, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3603:7:2", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 476, - "mutability": "mutable", - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 491, - "src": "3619:17:2", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 475, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "3619:5:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 478, - "mutability": "mutable", - "name": "errorMessage", - "nodeType": "VariableDeclaration", - "scope": 491, - "src": "3638:26:2", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" - }, - "typeName": { - "id": 477, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "3638:6:2", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "visibility": "internal" - } - ], - "src": "3602:63:2" - }, - "returnParameters": { - "id": 482, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 481, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 491, - "src": "3684:12:2", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 480, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "3684:5:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "3683:14:2" - }, - "scope": 696, - "src": "3581:193:2", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 510, - "nodeType": "Block", - "src": "4249:111:2", - "statements": [ - { - "expression": { - "arguments": [ - { - "id": 504, - "name": "target", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 494, - "src": "4288:6:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 505, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 496, - "src": "4296:4:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "id": 506, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 498, - "src": "4302:5:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "hexValue": "416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564", - "id": 507, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4309:43:2", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc", - "typeString": "literal_string \"Address: low-level call with value failed\"" - }, - "value": "Address: low-level call with value failed" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc", - "typeString": "literal_string \"Address: low-level call with value failed\"" - } - ], - "id": 503, - "name": "functionCallWithValue", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 511, - 561 - ], - "referencedDeclaration": 561, - "src": "4266:21:2", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", - "typeString": "function (address,bytes memory,uint256,string memory) returns (bytes memory)" - } - }, - "id": 508, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4266:87:2", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "functionReturnParameters": 502, - "id": 509, - "nodeType": "Return", - "src": "4259:94:2" - } - ] - }, - "documentation": { - "id": 492, - "nodeType": "StructuredDocumentation", - "src": "3780:351:2", - "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but also transferring `value` wei to `target`.\n Requirements:\n - the calling contract must have an ETH balance of at least `value`.\n - the called Solidity function must be `payable`.\n _Available since v3.1._" - }, - "id": 511, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "functionCallWithValue", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 499, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 494, - "mutability": "mutable", - "name": "target", - "nodeType": "VariableDeclaration", - "scope": 511, - "src": "4167:14:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 493, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4167:7:2", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 496, - "mutability": "mutable", - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 511, - "src": "4183:17:2", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 495, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "4183:5:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 498, - "mutability": "mutable", - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 511, - "src": "4202:13:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 497, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4202:7:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "4166:50:2" - }, - "returnParameters": { - "id": 502, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 501, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 511, - "src": "4235:12:2", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 500, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "4235:5:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "4234:14:2" - }, - "scope": 696, - "src": "4136:224:2", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 560, - "nodeType": "Block", - "src": "4749:382:2", - "statements": [ - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 532, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "arguments": [ - { - "id": 528, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -28, - "src": "4775:4:2", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Address_$696", - "typeString": "library Address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_Address_$696", - "typeString": "library Address" - } - ], - "id": 527, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "4767:7:2", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 526, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4767:7:2", - "typeDescriptions": {} - } - }, - "id": 529, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4767:13:2", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 530, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "balance", - "nodeType": "MemberAccess", - "src": "4767:21:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "id": 531, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 518, - "src": "4792:5:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4767:30:2", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c", - "id": 533, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4799:40:2", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c", - "typeString": "literal_string \"Address: insufficient balance for call\"" - }, - "value": "Address: insufficient balance for call" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c", - "typeString": "literal_string \"Address: insufficient balance for call\"" - } - ], - "id": 525, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "4759:7:2", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 534, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4759:81:2", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 535, - "nodeType": "ExpressionStatement", - "src": "4759:81:2" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "id": 538, - "name": "target", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 514, - "src": "4869:6:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 537, - "name": "isContract", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 420, - "src": "4858:10:2", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", - "typeString": "function (address) view returns (bool)" - } - }, - "id": 539, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4858:18:2", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374", - "id": 540, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4878:31:2", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad", - "typeString": "literal_string \"Address: call to non-contract\"" - }, - "value": "Address: call to non-contract" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad", - "typeString": "literal_string \"Address: call to non-contract\"" - } - ], - "id": 536, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "4850:7:2", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 541, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4850:60:2", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 542, - "nodeType": "ExpressionStatement", - "src": "4850:60:2" - }, - { - "assignments": [ - 544, - 546 - ], - "declarations": [ - { - "constant": false, - "id": 544, - "mutability": "mutable", - "name": "success", - "nodeType": "VariableDeclaration", - "scope": 560, - "src": "4981:12:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 543, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "4981:4:2", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 546, - "mutability": "mutable", - "name": "returndata", - "nodeType": "VariableDeclaration", - "scope": 560, - "src": "4995:23:2", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 545, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "4995:5:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "id": 553, - "initialValue": { - "arguments": [ - { - "id": 551, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 516, - "src": "5050:4:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "expression": { - "id": 547, - "name": "target", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 514, - "src": "5022:6:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 548, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "call", - "nodeType": "MemberAccess", - "src": "5022:11:2", - "typeDescriptions": { - "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", - "typeString": "function (bytes memory) payable returns (bool,bytes memory)" - } - }, - "id": 550, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "names": [ - "value" - ], - "nodeType": "FunctionCallOptions", - "options": [ - { - "id": 549, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 518, - "src": "5042:5:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "src": "5022:27:2", - "typeDescriptions": { - "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value", - "typeString": "function (bytes memory) payable returns (bool,bytes memory)" - } - }, - "id": 552, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5022:33:2", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", - "typeString": "tuple(bool,bytes memory)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "4980:75:2" - }, - { - "expression": { - "arguments": [ - { - "id": 555, - "name": "success", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 544, - "src": "5090:7:2", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "id": 556, - "name": "returndata", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 546, - "src": "5099:10:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "id": 557, - "name": "errorMessage", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 520, - "src": "5111:12:2", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - ], - "id": 554, - "name": "_verifyCallResult", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 695, - "src": "5072:17:2", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", - "typeString": "function (bool,bytes memory,string memory) pure returns (bytes memory)" - } - }, - "id": 558, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5072:52:2", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "functionReturnParameters": 524, - "id": 559, - "nodeType": "Return", - "src": "5065:59:2" - } - ] - }, - "documentation": { - "id": 512, - "nodeType": "StructuredDocumentation", - "src": "4366:237:2", - "text": " @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n with `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._" - }, - "id": 561, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "functionCallWithValue", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 521, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 514, - "mutability": "mutable", - "name": "target", - "nodeType": "VariableDeclaration", - "scope": 561, - "src": "4639:14:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 513, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4639:7:2", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 516, - "mutability": "mutable", - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 561, - "src": "4655:17:2", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 515, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "4655:5:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 518, - "mutability": "mutable", - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 561, - "src": "4674:13:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 517, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4674:7:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 520, - "mutability": "mutable", - "name": "errorMessage", - "nodeType": "VariableDeclaration", - "scope": 561, - "src": "4689:26:2", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" - }, - "typeName": { - "id": 519, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "4689:6:2", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "visibility": "internal" - } - ], - "src": "4638:78:2" - }, - "returnParameters": { - "id": 524, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 523, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 561, - "src": "4735:12:2", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 522, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "4735:5:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "4734:14:2" - }, - "scope": 696, - "src": "4608:523:2", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 577, - "nodeType": "Block", - "src": "5408:97:2", - "statements": [ - { - "expression": { - "arguments": [ - { - "id": 572, - "name": "target", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 564, - "src": "5444:6:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 573, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 566, - "src": "5452:4:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "hexValue": "416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564", - "id": 574, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5458:39:2", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0", - "typeString": "literal_string \"Address: low-level static call failed\"" - }, - "value": "Address: low-level static call failed" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0", - "typeString": "literal_string \"Address: low-level static call failed\"" - } - ], - "id": 571, - "name": "functionStaticCall", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 578, - 613 - ], - "referencedDeclaration": 613, - "src": "5425:18:2", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", - "typeString": "function (address,bytes memory,string memory) view returns (bytes memory)" - } - }, - "id": 575, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5425:73:2", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "functionReturnParameters": 570, - "id": 576, - "nodeType": "Return", - "src": "5418:80:2" - } - ] - }, - "documentation": { - "id": 562, - "nodeType": "StructuredDocumentation", - "src": "5137:166:2", - "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._" - }, - "id": 578, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "functionStaticCall", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 567, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 564, - "mutability": "mutable", - "name": "target", - "nodeType": "VariableDeclaration", - "scope": 578, - "src": "5336:14:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 563, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "5336:7:2", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 566, - "mutability": "mutable", - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 578, - "src": "5352:17:2", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 565, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "5352:5:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "5335:35:2" - }, - "returnParameters": { - "id": 570, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 569, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 578, - "src": "5394:12:2", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 568, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "5394:5:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "5393:14:2" - }, - "scope": 696, - "src": "5308:197:2", - "stateMutability": "view", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 612, - "nodeType": "Block", - "src": "5817:288:2", - "statements": [ - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "id": 592, - "name": "target", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 581, - "src": "5846:6:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 591, - "name": "isContract", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 420, - "src": "5835:10:2", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", - "typeString": "function (address) view returns (bool)" - } - }, - "id": 593, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5835:18:2", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "416464726573733a207374617469632063616c6c20746f206e6f6e2d636f6e7472616374", - "id": 594, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5855:38:2", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_c79cc78e4f16ce3933a42b84c73868f93bb4a59c031a0acf576679de98c608a9", - "typeString": "literal_string \"Address: static call to non-contract\"" - }, - "value": "Address: static call to non-contract" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_c79cc78e4f16ce3933a42b84c73868f93bb4a59c031a0acf576679de98c608a9", - "typeString": "literal_string \"Address: static call to non-contract\"" - } - ], - "id": 590, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "5827:7:2", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 595, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5827:67:2", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 596, - "nodeType": "ExpressionStatement", - "src": "5827:67:2" - }, - { - "assignments": [ - 598, - 600 - ], - "declarations": [ - { - "constant": false, - "id": 598, - "mutability": "mutable", - "name": "success", - "nodeType": "VariableDeclaration", - "scope": 612, - "src": "5965:12:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 597, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "5965:4:2", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 600, - "mutability": "mutable", - "name": "returndata", - "nodeType": "VariableDeclaration", - "scope": 612, - "src": "5979:23:2", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 599, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "5979:5:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "id": 605, - "initialValue": { - "arguments": [ - { - "id": 603, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 583, - "src": "6024:4:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "expression": { - "id": 601, - "name": "target", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 581, - "src": "6006:6:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 602, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "staticcall", - "nodeType": "MemberAccess", - "src": "6006:17:2", - "typeDescriptions": { - "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", - "typeString": "function (bytes memory) view returns (bool,bytes memory)" - } - }, - "id": 604, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6006:23:2", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", - "typeString": "tuple(bool,bytes memory)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "5964:65:2" - }, - { - "expression": { - "arguments": [ - { - "id": 607, - "name": "success", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 598, - "src": "6064:7:2", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "id": 608, - "name": "returndata", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 600, - "src": "6073:10:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "id": 609, - "name": "errorMessage", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 585, - "src": "6085:12:2", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - ], - "id": 606, - "name": "_verifyCallResult", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 695, - "src": "6046:17:2", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", - "typeString": "function (bool,bytes memory,string memory) pure returns (bytes memory)" - } - }, - "id": 610, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6046:52:2", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "functionReturnParameters": 589, - "id": 611, - "nodeType": "Return", - "src": "6039:59:2" - } - ] - }, - "documentation": { - "id": 579, - "nodeType": "StructuredDocumentation", - "src": "5511:173:2", - "text": " @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._" - }, - "id": 613, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "functionStaticCall", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 586, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 581, - "mutability": "mutable", - "name": "target", - "nodeType": "VariableDeclaration", - "scope": 613, - "src": "5717:14:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 580, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "5717:7:2", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 583, - "mutability": "mutable", - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 613, - "src": "5733:17:2", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 582, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "5733:5:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 585, - "mutability": "mutable", - "name": "errorMessage", - "nodeType": "VariableDeclaration", - "scope": 613, - "src": "5752:26:2", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" - }, - "typeName": { - "id": 584, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "5752:6:2", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "visibility": "internal" - } - ], - "src": "5716:63:2" - }, - "returnParameters": { - "id": 589, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 588, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 613, - "src": "5803:12:2", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 587, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "5803:5:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "5802:14:2" - }, - "scope": 696, - "src": "5689:416:2", - "stateMutability": "view", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 629, - "nodeType": "Block", - "src": "6381:101:2", - "statements": [ - { - "expression": { - "arguments": [ - { - "id": 624, - "name": "target", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 616, - "src": "6419:6:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 625, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 618, - "src": "6427:4:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "hexValue": "416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564", - "id": 626, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6433:41:2", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398", - "typeString": "literal_string \"Address: low-level delegate call failed\"" - }, - "value": "Address: low-level delegate call failed" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398", - "typeString": "literal_string \"Address: low-level delegate call failed\"" - } - ], - "id": 623, - "name": "functionDelegateCall", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 630, - 665 - ], - "referencedDeclaration": 665, - "src": "6398:20:2", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", - "typeString": "function (address,bytes memory,string memory) returns (bytes memory)" - } - }, - "id": 627, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6398:77:2", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "functionReturnParameters": 622, - "id": 628, - "nodeType": "Return", - "src": "6391:84:2" - } - ] - }, - "documentation": { - "id": 614, - "nodeType": "StructuredDocumentation", - "src": "6111:168:2", - "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._" - }, - "id": 630, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "functionDelegateCall", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 619, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 616, - "mutability": "mutable", - "name": "target", - "nodeType": "VariableDeclaration", - "scope": 630, - "src": "6314:14:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 615, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "6314:7:2", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 618, - "mutability": "mutable", - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 630, - "src": "6330:17:2", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 617, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "6330:5:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "6313:35:2" - }, - "returnParameters": { - "id": 622, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 621, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 630, - "src": "6367:12:2", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 620, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "6367:5:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "6366:14:2" - }, - "scope": 696, - "src": "6284:198:2", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 664, - "nodeType": "Block", - "src": "6793:292:2", - "statements": [ - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "id": 644, - "name": "target", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 633, - "src": "6822:6:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 643, - "name": "isContract", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 420, - "src": "6811:10:2", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", - "typeString": "function (address) view returns (bool)" - } - }, - "id": 645, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6811:18:2", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6e7472616374", - "id": 646, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6831:40:2", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520", - "typeString": "literal_string \"Address: delegate call to non-contract\"" - }, - "value": "Address: delegate call to non-contract" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520", - "typeString": "literal_string \"Address: delegate call to non-contract\"" - } - ], - "id": 642, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "6803:7:2", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 647, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6803:69:2", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 648, - "nodeType": "ExpressionStatement", - "src": "6803:69:2" - }, - { - "assignments": [ - 650, - 652 - ], - "declarations": [ - { - "constant": false, - "id": 650, - "mutability": "mutable", - "name": "success", - "nodeType": "VariableDeclaration", - "scope": 664, - "src": "6943:12:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 649, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "6943:4:2", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 652, - "mutability": "mutable", - "name": "returndata", - "nodeType": "VariableDeclaration", - "scope": 664, - "src": "6957:23:2", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 651, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "6957:5:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "id": 657, - "initialValue": { - "arguments": [ - { - "id": 655, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 635, - "src": "7004:4:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "expression": { - "id": 653, - "name": "target", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 633, - "src": "6984:6:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 654, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "delegatecall", - "nodeType": "MemberAccess", - "src": "6984:19:2", - "typeDescriptions": { - "typeIdentifier": "t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", - "typeString": "function (bytes memory) returns (bool,bytes memory)" - } - }, - "id": 656, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6984:25:2", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", - "typeString": "tuple(bool,bytes memory)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "6942:67:2" - }, - { - "expression": { - "arguments": [ - { - "id": 659, - "name": "success", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 650, - "src": "7044:7:2", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "id": 660, - "name": "returndata", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 652, - "src": "7053:10:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "id": 661, - "name": "errorMessage", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 637, - "src": "7065:12:2", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - ], - "id": 658, - "name": "_verifyCallResult", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 695, - "src": "7026:17:2", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", - "typeString": "function (bool,bytes memory,string memory) pure returns (bytes memory)" - } - }, - "id": 662, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7026:52:2", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "functionReturnParameters": 641, - "id": 663, - "nodeType": "Return", - "src": "7019:59:2" - } - ] - }, - "documentation": { - "id": 631, - "nodeType": "StructuredDocumentation", - "src": "6488:175:2", - "text": " @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._" - }, - "id": 665, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "functionDelegateCall", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 638, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 633, - "mutability": "mutable", - "name": "target", - "nodeType": "VariableDeclaration", - "scope": 665, - "src": "6698:14:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 632, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "6698:7:2", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 635, - "mutability": "mutable", - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 665, - "src": "6714:17:2", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 634, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "6714:5:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 637, - "mutability": "mutable", - "name": "errorMessage", - "nodeType": "VariableDeclaration", - "scope": 665, - "src": "6733:26:2", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" - }, - "typeName": { - "id": 636, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "6733:6:2", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "visibility": "internal" - } - ], - "src": "6697:63:2" - }, - "returnParameters": { - "id": 641, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 640, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 665, - "src": "6779:12:2", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 639, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "6779:5:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "6778:14:2" - }, - "scope": 696, - "src": "6668:417:2", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 694, - "nodeType": "Block", - "src": "7220:596:2", - "statements": [ - { - "condition": { - "id": 676, - "name": "success", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 667, - "src": "7234:7:2", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 692, - "nodeType": "Block", - "src": "7291:519:2", - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 683, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 680, - "name": "returndata", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 669, - "src": "7375:10:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "id": 681, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "src": "7375:17:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 682, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7395:1:2", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "7375:21:2", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 690, - "nodeType": "Block", - "src": "7747:53:2", - "statements": [ - { - "expression": { - "arguments": [ - { - "id": 687, - "name": "errorMessage", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 671, - "src": "7772:12:2", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - ], - "id": 686, - "name": "revert", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -19, - -19 - ], - "referencedDeclaration": -19, - "src": "7765:6:2", - "typeDescriptions": { - "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", - "typeString": "function (string memory) pure" - } - }, - "id": 688, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7765:20:2", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 689, - "nodeType": "ExpressionStatement", - "src": "7765:20:2" - } - ] - }, - "id": 691, - "nodeType": "IfStatement", - "src": "7371:429:2", - "trueBody": { - "id": 685, - "nodeType": "Block", - "src": "7398:343:2", - "statements": [ - { - "AST": { - "nodeType": "YulBlock", - "src": "7582:145:2", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "7604:40:2", - "value": { - "arguments": [ - { - "name": "returndata", - "nodeType": "YulIdentifier", - "src": "7633:10:2" - } - ], - "functionName": { - "name": "mload", - "nodeType": "YulIdentifier", - "src": "7627:5:2" - }, - "nodeType": "YulFunctionCall", - "src": "7627:17:2" - }, - "variables": [ - { - "name": "returndata_size", - "nodeType": "YulTypedName", - "src": "7608:15:2", - "type": "" - } - ] - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7676:2:2", - "type": "", - "value": "32" - }, - { - "name": "returndata", - "nodeType": "YulIdentifier", - "src": "7680:10:2" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "7672:3:2" - }, - "nodeType": "YulFunctionCall", - "src": "7672:19:2" - }, - { - "name": "returndata_size", - "nodeType": "YulIdentifier", - "src": "7693:15:2" - } - ], - "functionName": { - "name": "revert", - "nodeType": "YulIdentifier", - "src": "7665:6:2" - }, - "nodeType": "YulFunctionCall", - "src": "7665:44:2" - }, - "nodeType": "YulExpressionStatement", - "src": "7665:44:2" - } - ] - }, - "evmVersion": "berlin", - "externalReferences": [ - { - "declaration": 669, - "isOffset": false, - "isSlot": false, - "src": "7633:10:2", - "valueSize": 1 - }, - { - "declaration": 669, - "isOffset": false, - "isSlot": false, - "src": "7680:10:2", - "valueSize": 1 - } - ], - "id": 684, - "nodeType": "InlineAssembly", - "src": "7573:154:2" - } - ] - } - } - ] - }, - "id": 693, - "nodeType": "IfStatement", - "src": "7230:580:2", - "trueBody": { - "id": 679, - "nodeType": "Block", - "src": "7243:42:2", - "statements": [ - { - "expression": { - "id": 677, - "name": "returndata", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 669, - "src": "7264:10:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "functionReturnParameters": 675, - "id": 678, - "nodeType": "Return", - "src": "7257:17:2" - } - ] - } - } - ] - }, - "id": 695, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_verifyCallResult", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 672, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 667, - "mutability": "mutable", - "name": "success", - "nodeType": "VariableDeclaration", - "scope": 695, - "src": "7118:12:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 666, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "7118:4:2", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 669, - "mutability": "mutable", - "name": "returndata", - "nodeType": "VariableDeclaration", - "scope": 695, - "src": "7132:23:2", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 668, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "7132:5:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 671, - "mutability": "mutable", - "name": "errorMessage", - "nodeType": "VariableDeclaration", - "scope": 695, - "src": "7157:26:2", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" - }, - "typeName": { - "id": 670, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "7157:6:2", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "visibility": "internal" - } - ], - "src": "7117:67:2" - }, - "returnParameters": { - "id": 675, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 674, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 695, - "src": "7206:12:2", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 673, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "7206:5:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "7205:14:2" - }, - "scope": 696, - "src": "7091:725:2", - "stateMutability": "pure", - "virtual": false, - "visibility": "private" - } - ], - "scope": 697, - "src": "134:7684:2" - } - ], - "src": "33:7786:2" - }, - "id": 2 - }, - "@uniswap/v3-core/contracts/NoDelegateCall.sol": { - "ast": { - "absolutePath": "@uniswap/v3-core/contracts/NoDelegateCall.sol", - "exportedSymbols": { - "NoDelegateCall": [ - 736 - ] - }, - "id": 737, - "license": "BUSL-1.1", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 698, - "literals": [ - "solidity", - "=", - "0.7", - ".6" - ], - "nodeType": "PragmaDirective", - "src": "37:23:3" - }, - { - "abstract": true, - "baseContracts": [], - "contractDependencies": [], - "contractKind": "contract", - "documentation": { - "id": 699, - "nodeType": "StructuredDocumentation", - "src": "62:157:3", - "text": "@title Prevents delegatecall to a contract\n @notice Base contract that provides a modifier for preventing delegatecall to methods in a child contract" - }, - "fullyImplemented": true, - "id": 736, - "linearizedBaseContracts": [ - 736 - ], - "name": "NoDelegateCall", - "nodeType": "ContractDefinition", - "nodes": [ - { - "constant": false, - "documentation": { - "id": 700, - "nodeType": "StructuredDocumentation", - "src": "258:46:3", - "text": "@dev The original address of this contract" - }, - "id": 702, - "mutability": "immutable", - "name": "original", - "nodeType": "VariableDeclaration", - "scope": 736, - "src": "309:34:3", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 701, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "309:7:3", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "private" - }, - { - "body": { - "id": 712, - "nodeType": "Block", - "src": "364:239:3", - "statements": [ - { - "expression": { - "id": 710, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 705, - "name": "original", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 702, - "src": "572:8:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 708, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -28, - "src": "591:4:3", - "typeDescriptions": { - "typeIdentifier": "t_contract$_NoDelegateCall_$736", - "typeString": "contract NoDelegateCall" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_NoDelegateCall_$736", - "typeString": "contract NoDelegateCall" - } - ], - "id": 707, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "583:7:3", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 706, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "583:7:3", - "typeDescriptions": {} - } - }, - "id": 709, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "583:13:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "572:24:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 711, - "nodeType": "ExpressionStatement", - "src": "572:24:3" - } - ] - }, - "id": 713, - "implemented": true, - "kind": "constructor", - "modifiers": [], - "name": "", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 703, - "nodeType": "ParameterList", - "parameters": [], - "src": "361:2:3" - }, - "returnParameters": { - "id": 704, - "nodeType": "ParameterList", - "parameters": [], - "src": "364:0:3" - }, - "scope": 736, - "src": "350:253:3", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 726, - "nodeType": "Block", - "src": "880:51:3", - "statements": [ - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 723, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "arguments": [ - { - "id": 720, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -28, - "src": "906:4:3", - "typeDescriptions": { - "typeIdentifier": "t_contract$_NoDelegateCall_$736", - "typeString": "contract NoDelegateCall" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_NoDelegateCall_$736", - "typeString": "contract NoDelegateCall" - } - ], - "id": 719, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "898:7:3", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 718, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "898:7:3", - "typeDescriptions": {} - } - }, - "id": 721, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "898:13:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "id": 722, - "name": "original", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 702, - "src": "915:8:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "898:25:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 717, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "890:7:3", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 724, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "890:34:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 725, - "nodeType": "ExpressionStatement", - "src": "890:34:3" - } - ] - }, - "documentation": { - "id": 714, - "nodeType": "StructuredDocumentation", - "src": "609:221:3", - "text": "@dev Private method is used instead of inlining into modifier because modifiers are copied into each method,\n and the use of immutable means the address bytes are copied in every place the modifier is used." - }, - "id": 727, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "checkNotDelegateCall", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 715, - "nodeType": "ParameterList", - "parameters": [], - "src": "864:2:3" - }, - "returnParameters": { - "id": 716, - "nodeType": "ParameterList", - "parameters": [], - "src": "880:0:3" - }, - "scope": 736, - "src": "835:96:3", - "stateMutability": "view", - "virtual": false, - "visibility": "private" - }, - { - "body": { - "id": 734, - "nodeType": "Block", - "src": "1026:50:3", - "statements": [ - { - "expression": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 730, - "name": "checkNotDelegateCall", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 727, - "src": "1036:20:3", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$__$", - "typeString": "function () view" - } - }, - "id": 731, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1036:22:3", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 732, - "nodeType": "ExpressionStatement", - "src": "1036:22:3" - }, - { - "id": 733, - "nodeType": "PlaceholderStatement", - "src": "1068:1:3" - } - ] - }, - "documentation": { - "id": 728, - "nodeType": "StructuredDocumentation", - "src": "937:58:3", - "text": "@notice Prevents delegatecall into the modified method" - }, - "id": 735, - "name": "noDelegateCall", - "nodeType": "ModifierDefinition", - "parameters": { - "id": 729, - "nodeType": "ParameterList", - "parameters": [], - "src": "1023:2:3" - }, - "src": "1000:76:3", - "virtual": false, - "visibility": "internal" - } - ], - "scope": 737, - "src": "219:859:3" - } - ], - "src": "37:1042:3" - }, - "id": 3 - }, - "@uniswap/v3-core/contracts/UniswapV3Factory.sol": { - "ast": { - "absolutePath": "@uniswap/v3-core/contracts/UniswapV3Factory.sol", - "exportedSymbols": { - "BitMath": [ - 4497 - ], - "FixedPoint128": [ - 4504 - ], - "FixedPoint96": [ - 4514 - ], - "FullMath": [ - 4687 - ], - "IERC20Minimal": [ - 3633 - ], - "IUniswapV3Factory": [ - 3716 - ], - "IUniswapV3FlashCallback": [ - 3770 - ], - "IUniswapV3MintCallback": [ - 3784 - ], - "IUniswapV3Pool": [ - 3738 - ], - "IUniswapV3PoolActions": [ - 3894 - ], - "IUniswapV3PoolDeployer": [ - 3756 - ], - "IUniswapV3PoolDerivedState": [ - 3925 - ], - "IUniswapV3PoolEvents": [ - 4044 - ], - "IUniswapV3PoolImmutables": [ - 4084 - ], - "IUniswapV3PoolOwnerActions": [ - 4110 - ], - "IUniswapV3PoolState": [ - 4218 - ], - "IUniswapV3SwapCallback": [ - 3798 - ], - "LiquidityMath": [ - 4739 - ], - "LowGasSafeMath": [ - 4869 - ], - "NoDelegateCall": [ - 736 - ], - "Oracle": [ - 5604 - ], - "Position": [ - 5777 - ], - "SafeCast": [ - 5847 - ], - "SqrtPriceMath": [ - 6363 - ], - "SwapMath": [ - 6624 - ], - "Tick": [ - 7076 - ], - "TickBitmap": [ - 7332 - ], - "TickMath": [ - 7867 - ], - "TransferHelper": [ - 7918 - ], - "UniswapV3Factory": [ - 1011 - ], - "UniswapV3Pool": [ - 3491 - ], - "UniswapV3PoolDeployer": [ - 3561 - ], - "UnsafeMath": [ - 7934 - ] - }, - "id": 1012, - "license": "BUSL-1.1", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 738, - "literals": [ - "solidity", - "=", - "0.7", - ".6" - ], - "nodeType": "PragmaDirective", - "src": "37:23:4" - }, - { - "absolutePath": "@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol", - "file": "./interfaces/IUniswapV3Factory.sol", - "id": 739, - "nodeType": "ImportDirective", - "scope": 1012, - "sourceUnit": 3717, - "src": "62:44:4", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "@uniswap/v3-core/contracts/UniswapV3PoolDeployer.sol", - "file": "./UniswapV3PoolDeployer.sol", - "id": 740, - "nodeType": "ImportDirective", - "scope": 1012, - "sourceUnit": 3562, - "src": "108:37:4", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "@uniswap/v3-core/contracts/NoDelegateCall.sol", - "file": "./NoDelegateCall.sol", - "id": 741, - "nodeType": "ImportDirective", - "scope": 1012, - "sourceUnit": 737, - "src": "146:30:4", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "@uniswap/v3-core/contracts/UniswapV3Pool.sol", - "file": "./UniswapV3Pool.sol", - "id": 742, - "nodeType": "ImportDirective", - "scope": 1012, - "sourceUnit": 3492, - "src": "178:29:4", - "symbolAliases": [], - "unitAlias": "" - }, - { - "abstract": false, - "baseContracts": [ - { - "baseName": { - "id": 744, - "name": "IUniswapV3Factory", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 3716, - "src": "373:17:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IUniswapV3Factory_$3716", - "typeString": "contract IUniswapV3Factory" - } - }, - "id": 745, - "nodeType": "InheritanceSpecifier", - "src": "373:17:4" - }, - { - "baseName": { - "id": 746, - "name": "UniswapV3PoolDeployer", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 3561, - "src": "392:21:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_UniswapV3PoolDeployer_$3561", - "typeString": "contract UniswapV3PoolDeployer" - } - }, - "id": 747, - "nodeType": "InheritanceSpecifier", - "src": "392:21:4" - }, - { - "baseName": { - "id": 748, - "name": "NoDelegateCall", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 736, - "src": "415:14:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_NoDelegateCall_$736", - "typeString": "contract NoDelegateCall" - } - }, - "id": 749, - "nodeType": "InheritanceSpecifier", - "src": "415:14:4" - } - ], - "contractDependencies": [ - 736, - 3561, - 3716, - 3756 - ], - "contractKind": "contract", - "documentation": { - "id": 743, - "nodeType": "StructuredDocumentation", - "src": "209:135:4", - "text": "@title Canonical Uniswap V3 factory\n @notice Deploys Uniswap V3 pools and manages ownership and control over pool protocol fees" - }, - "fullyImplemented": true, - "id": 1011, - "linearizedBaseContracts": [ - 1011, - 736, - 3561, - 3756, - 3716 - ], - "name": "UniswapV3Factory", - "nodeType": "ContractDefinition", - "nodes": [ - { - "baseFunctions": [ - 3669 - ], - "constant": false, - "documentation": { - "id": 750, - "nodeType": "StructuredDocumentation", - "src": "436:33:4", - "text": "@inheritdoc IUniswapV3Factory" - }, - "functionSelector": "8da5cb5b", - "id": 753, - "mutability": "mutable", - "name": "owner", - "nodeType": "VariableDeclaration", - "overrides": { - "id": 752, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "489:8:4" - }, - "scope": 1011, - "src": "474:29:4", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 751, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "474:7:4", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "public" - }, - { - "baseFunctions": [ - 3677 - ], - "constant": false, - "documentation": { - "id": 754, - "nodeType": "StructuredDocumentation", - "src": "510:33:4", - "text": "@inheritdoc IUniswapV3Factory" - }, - "functionSelector": "22afcccb", - "id": 759, - "mutability": "mutable", - "name": "feeAmountTickSpacing", - "nodeType": "VariableDeclaration", - "overrides": { - "id": 758, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "580:8:4" - }, - "scope": 1011, - "src": "548:61:4", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint24_$_t_int24_$", - "typeString": "mapping(uint24 => int24)" - }, - "typeName": { - "id": 757, - "keyType": { - "id": 755, - "name": "uint24", - "nodeType": "ElementaryTypeName", - "src": "556:6:4", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - "nodeType": "Mapping", - "src": "548:24:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint24_$_t_int24_$", - "typeString": "mapping(uint24 => int24)" - }, - "valueType": { - "id": 756, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "566:5:4", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - } - }, - "visibility": "public" - }, - { - "baseFunctions": [ - 3689 - ], - "constant": false, - "documentation": { - "id": 760, - "nodeType": "StructuredDocumentation", - "src": "615:33:4", - "text": "@inheritdoc IUniswapV3Factory" - }, - "functionSelector": "1698ee82", - "id": 769, - "mutability": "mutable", - "name": "getPool", - "nodeType": "VariableDeclaration", - "overrides": { - "id": 768, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "727:8:4" - }, - "scope": 1011, - "src": "653:90:4", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint24_$_t_address_$_$_$", - "typeString": "mapping(address => mapping(address => mapping(uint24 => address)))" - }, - "typeName": { - "id": 767, - "keyType": { - "id": 761, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "661:7:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "653:66:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint24_$_t_address_$_$_$", - "typeString": "mapping(address => mapping(address => mapping(uint24 => address)))" - }, - "valueType": { - "id": 766, - "keyType": { - "id": 762, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "680:7:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "672:46:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint24_$_t_address_$_$", - "typeString": "mapping(address => mapping(uint24 => address))" - }, - "valueType": { - "id": 765, - "keyType": { - "id": 763, - "name": "uint24", - "nodeType": "ElementaryTypeName", - "src": "699:6:4", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - "nodeType": "Mapping", - "src": "691:26:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint24_$_t_address_$", - "typeString": "mapping(uint24 => address)" - }, - "valueType": { - "id": 764, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "709:7:4", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - } - } - }, - "visibility": "public" - }, - { - "body": { - "id": 819, - "nodeType": "Block", - "src": "764:335:4", - "statements": [ - { - "expression": { - "id": 775, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 772, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 753, - "src": "774:5:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "expression": { - "id": 773, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "782:3:4", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 774, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "782:10:4", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "src": "774:18:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 776, - "nodeType": "ExpressionStatement", - "src": "774:18:4" - }, - { - "eventCall": { - "arguments": [ - { - "arguments": [ - { - "hexValue": "30", - "id": 780, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "828:1:4", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 779, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "820:7:4", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 778, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "820:7:4", - "typeDescriptions": {} - } - }, - "id": 781, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "820:10:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - { - "expression": { - "id": 782, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "832:3:4", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 783, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "832:10:4", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "id": 777, - "name": "OwnerChanged", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3643, - "src": "807:12:4", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", - "typeString": "function (address,address)" - } - }, - "id": 784, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "807:36:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 785, - "nodeType": "EmitStatement", - "src": "802:41:4" - }, - { - "expression": { - "id": 790, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "id": 786, - "name": "feeAmountTickSpacing", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 759, - "src": "854:20:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint24_$_t_int24_$", - "typeString": "mapping(uint24 => int24)" - } - }, - "id": 788, - "indexExpression": { - "hexValue": "353030", - "id": 787, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "875:3:4", - "typeDescriptions": { - "typeIdentifier": "t_rational_500_by_1", - "typeString": "int_const 500" - }, - "value": "500" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "854:25:4", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "3130", - "id": 789, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "882:2:4", - "typeDescriptions": { - "typeIdentifier": "t_rational_10_by_1", - "typeString": "int_const 10" - }, - "value": "10" - }, - "src": "854:30:4", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "id": 791, - "nodeType": "ExpressionStatement", - "src": "854:30:4" - }, - { - "eventCall": { - "arguments": [ - { - "hexValue": "353030", - "id": 793, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "916:3:4", - "typeDescriptions": { - "typeIdentifier": "t_rational_500_by_1", - "typeString": "int_const 500" - }, - "value": "500" - }, - { - "hexValue": "3130", - "id": 794, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "921:2:4", - "typeDescriptions": { - "typeIdentifier": "t_rational_10_by_1", - "typeString": "int_const 10" - }, - "value": "10" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_500_by_1", - "typeString": "int_const 500" - }, - { - "typeIdentifier": "t_rational_10_by_1", - "typeString": "int_const 10" - } - ], - "id": 792, - "name": "FeeAmountEnabled", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3663, - "src": "899:16:4", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_uint24_$_t_int24_$returns$__$", - "typeString": "function (uint24,int24)" - } - }, - "id": 795, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "899:25:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 796, - "nodeType": "EmitStatement", - "src": "894:30:4" - }, - { - "expression": { - "id": 801, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "id": 797, - "name": "feeAmountTickSpacing", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 759, - "src": "934:20:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint24_$_t_int24_$", - "typeString": "mapping(uint24 => int24)" - } - }, - "id": 799, - "indexExpression": { - "hexValue": "33303030", - "id": 798, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "955:4:4", - "typeDescriptions": { - "typeIdentifier": "t_rational_3000_by_1", - "typeString": "int_const 3000" - }, - "value": "3000" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "934:26:4", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "3630", - "id": 800, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "963:2:4", - "typeDescriptions": { - "typeIdentifier": "t_rational_60_by_1", - "typeString": "int_const 60" - }, - "value": "60" - }, - "src": "934:31:4", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "id": 802, - "nodeType": "ExpressionStatement", - "src": "934:31:4" - }, - { - "eventCall": { - "arguments": [ - { - "hexValue": "33303030", - "id": 804, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "997:4:4", - "typeDescriptions": { - "typeIdentifier": "t_rational_3000_by_1", - "typeString": "int_const 3000" - }, - "value": "3000" - }, - { - "hexValue": "3630", - "id": 805, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1003:2:4", - "typeDescriptions": { - "typeIdentifier": "t_rational_60_by_1", - "typeString": "int_const 60" - }, - "value": "60" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_3000_by_1", - "typeString": "int_const 3000" - }, - { - "typeIdentifier": "t_rational_60_by_1", - "typeString": "int_const 60" - } - ], - "id": 803, - "name": "FeeAmountEnabled", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3663, - "src": "980:16:4", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_uint24_$_t_int24_$returns$__$", - "typeString": "function (uint24,int24)" - } - }, - "id": 806, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "980:26:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 807, - "nodeType": "EmitStatement", - "src": "975:31:4" - }, - { - "expression": { - "id": 812, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "id": 808, - "name": "feeAmountTickSpacing", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 759, - "src": "1016:20:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint24_$_t_int24_$", - "typeString": "mapping(uint24 => int24)" - } - }, - "id": 810, - "indexExpression": { - "hexValue": "3130303030", - "id": 809, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1037:5:4", - "typeDescriptions": { - "typeIdentifier": "t_rational_10000_by_1", - "typeString": "int_const 10000" - }, - "value": "10000" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "1016:27:4", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "323030", - "id": 811, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1046:3:4", - "typeDescriptions": { - "typeIdentifier": "t_rational_200_by_1", - "typeString": "int_const 200" - }, - "value": "200" - }, - "src": "1016:33:4", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "id": 813, - "nodeType": "ExpressionStatement", - "src": "1016:33:4" - }, - { - "eventCall": { - "arguments": [ - { - "hexValue": "3130303030", - "id": 815, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1081:5:4", - "typeDescriptions": { - "typeIdentifier": "t_rational_10000_by_1", - "typeString": "int_const 10000" - }, - "value": "10000" - }, - { - "hexValue": "323030", - "id": 816, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1088:3:4", - "typeDescriptions": { - "typeIdentifier": "t_rational_200_by_1", - "typeString": "int_const 200" - }, - "value": "200" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_10000_by_1", - "typeString": "int_const 10000" - }, - { - "typeIdentifier": "t_rational_200_by_1", - "typeString": "int_const 200" - } - ], - "id": 814, - "name": "FeeAmountEnabled", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3663, - "src": "1064:16:4", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_uint24_$_t_int24_$returns$__$", - "typeString": "function (uint24,int24)" - } - }, - "id": 817, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1064:28:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 818, - "nodeType": "EmitStatement", - "src": "1059:33:4" - } - ] - }, - "id": 820, - "implemented": true, - "kind": "constructor", - "modifiers": [], - "name": "", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 770, - "nodeType": "ParameterList", - "parameters": [], - "src": "761:2:4" - }, - "returnParameters": { - "id": 771, - "nodeType": "ParameterList", - "parameters": [], - "src": "764:0:4" - }, - "scope": 1011, - "src": "750:349:4", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - { - "baseFunctions": [ - 3701 - ], - "body": { - "id": 933, - "nodeType": "Block", - "src": "1293:671:4", - "statements": [ - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 838, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 836, - "name": "tokenA", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 823, - "src": "1311:6:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "id": 837, - "name": "tokenB", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 825, - "src": "1321:6:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "1311:16:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 835, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "1303:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 839, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1303:25:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 840, - "nodeType": "ExpressionStatement", - "src": "1303:25:4" - }, - { - "assignments": [ - 842, - 844 - ], - "declarations": [ - { - "constant": false, - "id": 842, - "mutability": "mutable", - "name": "token0", - "nodeType": "VariableDeclaration", - "scope": 933, - "src": "1339:14:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 841, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1339:7:4", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 844, - "mutability": "mutable", - "name": "token1", - "nodeType": "VariableDeclaration", - "scope": 933, - "src": "1355:14:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 843, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1355:7:4", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "id": 855, - "initialValue": { - "condition": { - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 847, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 845, - "name": "tokenA", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 823, - "src": "1373:6:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "id": 846, - "name": "tokenB", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 825, - "src": "1382:6:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "1373:15:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseExpression": { - "components": [ - { - "id": 851, - "name": "tokenB", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 825, - "src": "1411:6:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 852, - "name": "tokenA", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 823, - "src": "1419:6:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "id": 853, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "1410:16:4", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_address_$_t_address_$", - "typeString": "tuple(address,address)" - } - }, - "id": 854, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "Conditional", - "src": "1373:53:4", - "trueExpression": { - "components": [ - { - "id": 848, - "name": "tokenA", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 823, - "src": "1392:6:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 849, - "name": "tokenB", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 825, - "src": "1400:6:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "id": 850, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "1391:16:4", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_address_$_t_address_$", - "typeString": "tuple(address,address)" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_address_$_t_address_$", - "typeString": "tuple(address,address)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1338:88:4" - }, - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 862, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 857, - "name": "token0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 842, - "src": "1444:6:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "arguments": [ - { - "hexValue": "30", - "id": 860, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1462:1:4", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 859, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1454:7:4", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 858, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1454:7:4", - "typeDescriptions": {} - } - }, - "id": 861, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1454:10:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "src": "1444:20:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 856, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "1436:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 863, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1436:29:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 864, - "nodeType": "ExpressionStatement", - "src": "1436:29:4" - }, - { - "assignments": [ - 866 - ], - "declarations": [ - { - "constant": false, - "id": 866, - "mutability": "mutable", - "name": "tickSpacing", - "nodeType": "VariableDeclaration", - "scope": 933, - "src": "1475:17:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 865, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "1475:5:4", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - } - ], - "id": 870, - "initialValue": { - "baseExpression": { - "id": 867, - "name": "feeAmountTickSpacing", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 759, - "src": "1495:20:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint24_$_t_int24_$", - "typeString": "mapping(uint24 => int24)" - } - }, - "id": 869, - "indexExpression": { - "id": 868, - "name": "fee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 827, - "src": "1516:3:4", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1495:25:4", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1475:45:4" - }, - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "id": 874, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 872, - "name": "tickSpacing", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 866, - "src": "1538:11:4", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "hexValue": "30", - "id": 873, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1553:1:4", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1538:16:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 871, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "1530:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 875, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1530:25:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 876, - "nodeType": "ExpressionStatement", - "src": "1530:25:4" - }, - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 889, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "baseExpression": { - "baseExpression": { - "baseExpression": { - "id": 878, - "name": "getPool", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 769, - "src": "1573:7:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint24_$_t_address_$_$_$", - "typeString": "mapping(address => mapping(address => mapping(uint24 => address)))" - } - }, - "id": 880, - "indexExpression": { - "id": 879, - "name": "token0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 842, - "src": "1581:6:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1573:15:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint24_$_t_address_$_$", - "typeString": "mapping(address => mapping(uint24 => address))" - } - }, - "id": 882, - "indexExpression": { - "id": 881, - "name": "token1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 844, - "src": "1589:6:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1573:23:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint24_$_t_address_$", - "typeString": "mapping(uint24 => address)" - } - }, - "id": 884, - "indexExpression": { - "id": 883, - "name": "fee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 827, - "src": "1597:3:4", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1573:28:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "arguments": [ - { - "hexValue": "30", - "id": 887, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1613:1:4", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 886, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1605:7:4", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 885, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1605:7:4", - "typeDescriptions": {} - } - }, - "id": 888, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1605:10:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "src": "1573:42:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 877, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "1565:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 890, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1565:51:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 891, - "nodeType": "ExpressionStatement", - "src": "1565:51:4" - }, - { - "expression": { - "id": 903, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 892, - "name": "pool", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 833, - "src": "1626:4:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "arguments": [ - { - "id": 896, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -28, - "src": "1648:4:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_UniswapV3Factory_$1011", - "typeString": "contract UniswapV3Factory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_UniswapV3Factory_$1011", - "typeString": "contract UniswapV3Factory" - } - ], - "id": 895, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1640:7:4", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 894, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1640:7:4", - "typeDescriptions": {} - } - }, - "id": 897, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1640:13:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 898, - "name": "token0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 842, - "src": "1655:6:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 899, - "name": "token1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 844, - "src": "1663:6:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 900, - "name": "fee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 827, - "src": "1671:3:4", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - { - "id": 901, - "name": "tickSpacing", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 866, - "src": "1676:11:4", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - }, - { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - ], - "id": 893, - "name": "deploy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3560, - "src": "1633:6:4", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint24_$_t_int24_$returns$_t_address_$", - "typeString": "function (address,address,address,uint24,int24) returns (address)" - } - }, - "id": 902, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1633:55:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "1626:62:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 904, - "nodeType": "ExpressionStatement", - "src": "1626:62:4" - }, - { - "expression": { - "id": 913, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "baseExpression": { - "baseExpression": { - "id": 905, - "name": "getPool", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 769, - "src": "1698:7:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint24_$_t_address_$_$_$", - "typeString": "mapping(address => mapping(address => mapping(uint24 => address)))" - } - }, - "id": 909, - "indexExpression": { - "id": 906, - "name": "token0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 842, - "src": "1706:6:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1698:15:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint24_$_t_address_$_$", - "typeString": "mapping(address => mapping(uint24 => address))" - } - }, - "id": 910, - "indexExpression": { - "id": 907, - "name": "token1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 844, - "src": "1714:6:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1698:23:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint24_$_t_address_$", - "typeString": "mapping(uint24 => address)" - } - }, - "id": 911, - "indexExpression": { - "id": 908, - "name": "fee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 827, - "src": "1722:3:4", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "1698:28:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 912, - "name": "pool", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 833, - "src": "1729:4:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "1698:35:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 914, - "nodeType": "ExpressionStatement", - "src": "1698:35:4" - }, - { - "expression": { - "id": 923, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "baseExpression": { - "baseExpression": { - "id": 915, - "name": "getPool", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 769, - "src": "1856:7:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint24_$_t_address_$_$_$", - "typeString": "mapping(address => mapping(address => mapping(uint24 => address)))" - } - }, - "id": 919, - "indexExpression": { - "id": 916, - "name": "token1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 844, - "src": "1864:6:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1856:15:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint24_$_t_address_$_$", - "typeString": "mapping(address => mapping(uint24 => address))" - } - }, - "id": 920, - "indexExpression": { - "id": 917, - "name": "token0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 842, - "src": "1872:6:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1856:23:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint24_$_t_address_$", - "typeString": "mapping(uint24 => address)" - } - }, - "id": 921, - "indexExpression": { - "id": 918, - "name": "fee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 827, - "src": "1880:3:4", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "1856:28:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 922, - "name": "pool", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 833, - "src": "1887:4:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "1856:35:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 924, - "nodeType": "ExpressionStatement", - "src": "1856:35:4" - }, - { - "eventCall": { - "arguments": [ - { - "id": 926, - "name": "token0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 842, - "src": "1918:6:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 927, - "name": "token1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 844, - "src": "1926:6:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 928, - "name": "fee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 827, - "src": "1934:3:4", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - { - "id": 929, - "name": "tickSpacing", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 866, - "src": "1939:11:4", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - { - "id": 930, - "name": "pool", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 833, - "src": "1952:4:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - }, - { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 925, - "name": "PoolCreated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3656, - "src": "1906:11:4", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint24_$_t_int24_$_t_address_$returns$__$", - "typeString": "function (address,address,uint24,int24,address)" - } - }, - "id": 931, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1906:51:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 932, - "nodeType": "EmitStatement", - "src": "1901:56:4" - } - ] - }, - "documentation": { - "id": 821, - "nodeType": "StructuredDocumentation", - "src": "1105:33:4", - "text": "@inheritdoc IUniswapV3Factory" - }, - "functionSelector": "a1671295", - "id": 934, - "implemented": true, - "kind": "function", - "modifiers": [ - { - "id": 831, - "modifierName": { - "id": 830, - "name": "noDelegateCall", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 735, - "src": "1255:14:4", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "1255:14:4" - } - ], - "name": "createPool", - "nodeType": "FunctionDefinition", - "overrides": { - "id": 829, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "1246:8:4" - }, - "parameters": { - "id": 828, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 823, - "mutability": "mutable", - "name": "tokenA", - "nodeType": "VariableDeclaration", - "scope": 934, - "src": "1172:14:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 822, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1172:7:4", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 825, - "mutability": "mutable", - "name": "tokenB", - "nodeType": "VariableDeclaration", - "scope": 934, - "src": "1196:14:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 824, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1196:7:4", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 827, - "mutability": "mutable", - "name": "fee", - "nodeType": "VariableDeclaration", - "scope": 934, - "src": "1220:10:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - }, - "typeName": { - "id": 826, - "name": "uint24", - "nodeType": "ElementaryTypeName", - "src": "1220:6:4", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - "visibility": "internal" - } - ], - "src": "1162:74:4" - }, - "returnParameters": { - "id": 834, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 833, - "mutability": "mutable", - "name": "pool", - "nodeType": "VariableDeclaration", - "scope": 934, - "src": "1279:12:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 832, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1279:7:4", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "1278:14:4" - }, - "scope": 1011, - "src": "1143:821:4", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "baseFunctions": [ - 3707 - ], - "body": { - "id": 957, - "nodeType": "Block", - "src": "2060:111:4", - "statements": [ - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 945, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 942, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "2078:3:4", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 943, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "2078:10:4", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "id": 944, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 753, - "src": "2092:5:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "2078:19:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 941, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "2070:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 946, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2070:28:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 947, - "nodeType": "ExpressionStatement", - "src": "2070:28:4" - }, - { - "eventCall": { - "arguments": [ - { - "id": 949, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 753, - "src": "2126:5:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 950, - "name": "_owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 937, - "src": "2133:6:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 948, - "name": "OwnerChanged", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3643, - "src": "2113:12:4", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", - "typeString": "function (address,address)" - } - }, - "id": 951, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2113:27:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 952, - "nodeType": "EmitStatement", - "src": "2108:32:4" - }, - { - "expression": { - "id": 955, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 953, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 753, - "src": "2150:5:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 954, - "name": "_owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 937, - "src": "2158:6:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "2150:14:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 956, - "nodeType": "ExpressionStatement", - "src": "2150:14:4" - } - ] - }, - "documentation": { - "id": 935, - "nodeType": "StructuredDocumentation", - "src": "1970:33:4", - "text": "@inheritdoc IUniswapV3Factory" - }, - "functionSelector": "13af4035", - "id": 958, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "setOwner", - "nodeType": "FunctionDefinition", - "overrides": { - "id": 939, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "2051:8:4" - }, - "parameters": { - "id": 938, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 937, - "mutability": "mutable", - "name": "_owner", - "nodeType": "VariableDeclaration", - "scope": 958, - "src": "2026:14:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 936, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2026:7:4", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "2025:16:4" - }, - "returnParameters": { - "id": 940, - "nodeType": "ParameterList", - "parameters": [], - "src": "2060:0:4" - }, - "scope": 1011, - "src": "2008:163:4", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "baseFunctions": [ - 3715 - ], - "body": { - "id": 1009, - "nodeType": "Block", - "src": "2287:558:4", - "statements": [ - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 971, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 968, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "2305:3:4", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 969, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "2305:10:4", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "id": 970, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 753, - "src": "2319:5:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "2305:19:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 967, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "2297:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 972, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2297:28:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 973, - "nodeType": "ExpressionStatement", - "src": "2297:28:4" - }, - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - }, - "id": 977, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 975, - "name": "fee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 961, - "src": "2343:3:4", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "hexValue": "31303030303030", - "id": 976, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2349:7:4", - "typeDescriptions": { - "typeIdentifier": "t_rational_1000000_by_1", - "typeString": "int_const 1000000" - }, - "value": "1000000" - }, - "src": "2343:13:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 974, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "2335:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 978, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2335:22:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 979, - "nodeType": "ExpressionStatement", - "src": "2335:22:4" - }, - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 987, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "id": 983, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 981, - "name": "tickSpacing", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 963, - "src": "2651:11:4", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 982, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2665:1:4", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2651:15:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "id": 986, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 984, - "name": "tickSpacing", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 963, - "src": "2670:11:4", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "hexValue": "3136333834", - "id": 985, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2684:5:4", - "typeDescriptions": { - "typeIdentifier": "t_rational_16384_by_1", - "typeString": "int_const 16384" - }, - "value": "16384" - }, - "src": "2670:19:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "2651:38:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 980, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "2643:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 988, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2643:47:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 989, - "nodeType": "ExpressionStatement", - "src": "2643:47:4" - }, - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "id": 995, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "baseExpression": { - "id": 991, - "name": "feeAmountTickSpacing", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 759, - "src": "2708:20:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint24_$_t_int24_$", - "typeString": "mapping(uint24 => int24)" - } - }, - "id": 993, - "indexExpression": { - "id": 992, - "name": "fee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 961, - "src": "2729:3:4", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2708:25:4", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 994, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2737:1:4", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2708:30:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 990, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "2700:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 996, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2700:39:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 997, - "nodeType": "ExpressionStatement", - "src": "2700:39:4" - }, - { - "expression": { - "id": 1002, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "id": 998, - "name": "feeAmountTickSpacing", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 759, - "src": "2750:20:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint24_$_t_int24_$", - "typeString": "mapping(uint24 => int24)" - } - }, - "id": 1000, - "indexExpression": { - "id": 999, - "name": "fee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 961, - "src": "2771:3:4", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "2750:25:4", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 1001, - "name": "tickSpacing", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 963, - "src": "2778:11:4", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "src": "2750:39:4", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "id": 1003, - "nodeType": "ExpressionStatement", - "src": "2750:39:4" - }, - { - "eventCall": { - "arguments": [ - { - "id": 1005, - "name": "fee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 961, - "src": "2821:3:4", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - { - "id": 1006, - "name": "tickSpacing", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 963, - "src": "2826:11:4", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - }, - { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - ], - "id": 1004, - "name": "FeeAmountEnabled", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3663, - "src": "2804:16:4", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_uint24_$_t_int24_$returns$__$", - "typeString": "function (uint24,int24)" - } - }, - "id": 1007, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2804:34:4", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1008, - "nodeType": "EmitStatement", - "src": "2799:39:4" - } - ] - }, - "documentation": { - "id": 959, - "nodeType": "StructuredDocumentation", - "src": "2177:33:4", - "text": "@inheritdoc IUniswapV3Factory" - }, - "functionSelector": "8a7c195f", - "id": 1010, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "enableFeeAmount", - "nodeType": "FunctionDefinition", - "overrides": { - "id": 965, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "2278:8:4" - }, - "parameters": { - "id": 964, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 961, - "mutability": "mutable", - "name": "fee", - "nodeType": "VariableDeclaration", - "scope": 1010, - "src": "2240:10:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - }, - "typeName": { - "id": 960, - "name": "uint24", - "nodeType": "ElementaryTypeName", - "src": "2240:6:4", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 963, - "mutability": "mutable", - "name": "tickSpacing", - "nodeType": "VariableDeclaration", - "scope": 1010, - "src": "2252:17:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 962, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "2252:5:4", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - } - ], - "src": "2239:31:4" - }, - "returnParameters": { - "id": 966, - "nodeType": "ParameterList", - "parameters": [], - "src": "2287:0:4" - }, - "scope": 1011, - "src": "2215:630:4", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - } - ], - "scope": 1012, - "src": "344:2503:4" - } - ], - "src": "37:2811:4" - }, - "id": 4 - }, - "@uniswap/v3-core/contracts/UniswapV3Pool.sol": { - "ast": { - "absolutePath": "@uniswap/v3-core/contracts/UniswapV3Pool.sol", - "exportedSymbols": { - "BitMath": [ - 4497 - ], - "FixedPoint128": [ - 4504 - ], - "FixedPoint96": [ - 4514 - ], - "FullMath": [ - 4687 - ], - "IERC20Minimal": [ - 3633 - ], - "IUniswapV3Factory": [ - 3716 - ], - "IUniswapV3FlashCallback": [ - 3770 - ], - "IUniswapV3MintCallback": [ - 3784 - ], - "IUniswapV3Pool": [ - 3738 - ], - "IUniswapV3PoolActions": [ - 3894 - ], - "IUniswapV3PoolDeployer": [ - 3756 - ], - "IUniswapV3PoolDerivedState": [ - 3925 - ], - "IUniswapV3PoolEvents": [ - 4044 - ], - "IUniswapV3PoolImmutables": [ - 4084 - ], - "IUniswapV3PoolOwnerActions": [ - 4110 - ], - "IUniswapV3PoolState": [ - 4218 - ], - "IUniswapV3SwapCallback": [ - 3798 - ], - "LiquidityMath": [ - 4739 - ], - "LowGasSafeMath": [ - 4869 - ], - "NoDelegateCall": [ - 736 - ], - "Oracle": [ - 5604 - ], - "Position": [ - 5777 - ], - "SafeCast": [ - 5847 - ], - "SqrtPriceMath": [ - 6363 - ], - "SwapMath": [ - 6624 - ], - "Tick": [ - 7076 - ], - "TickBitmap": [ - 7332 - ], - "TickMath": [ - 7867 - ], - "TransferHelper": [ - 7918 - ], - "UniswapV3Pool": [ - 3491 - ], - "UnsafeMath": [ - 7934 - ] - }, - "id": 3492, - "license": "BUSL-1.1", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1013, - "literals": [ - "solidity", - "=", - "0.7", - ".6" - ], - "nodeType": "PragmaDirective", - "src": "37:23:5" - }, - { - "absolutePath": "@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol", - "file": "./interfaces/IUniswapV3Pool.sol", - "id": 1014, - "nodeType": "ImportDirective", - "scope": 3492, - "sourceUnit": 3739, - "src": "62:41:5", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "@uniswap/v3-core/contracts/NoDelegateCall.sol", - "file": "./NoDelegateCall.sol", - "id": 1015, - "nodeType": "ImportDirective", - "scope": 3492, - "sourceUnit": 737, - "src": "105:30:5", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "@uniswap/v3-core/contracts/libraries/LowGasSafeMath.sol", - "file": "./libraries/LowGasSafeMath.sol", - "id": 1016, - "nodeType": "ImportDirective", - "scope": 3492, - "sourceUnit": 4870, - "src": "137:40:5", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "@uniswap/v3-core/contracts/libraries/SafeCast.sol", - "file": "./libraries/SafeCast.sol", - "id": 1017, - "nodeType": "ImportDirective", - "scope": 3492, - "sourceUnit": 5848, - "src": "178:34:5", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "@uniswap/v3-core/contracts/libraries/Tick.sol", - "file": "./libraries/Tick.sol", - "id": 1018, - "nodeType": "ImportDirective", - "scope": 3492, - "sourceUnit": 7077, - "src": "213:30:5", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "@uniswap/v3-core/contracts/libraries/TickBitmap.sol", - "file": "./libraries/TickBitmap.sol", - "id": 1019, - "nodeType": "ImportDirective", - "scope": 3492, - "sourceUnit": 7333, - "src": "244:36:5", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "@uniswap/v3-core/contracts/libraries/Position.sol", - "file": "./libraries/Position.sol", - "id": 1020, - "nodeType": "ImportDirective", - "scope": 3492, - "sourceUnit": 5778, - "src": "281:34:5", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "@uniswap/v3-core/contracts/libraries/Oracle.sol", - "file": "./libraries/Oracle.sol", - "id": 1021, - "nodeType": "ImportDirective", - "scope": 3492, - "sourceUnit": 5605, - "src": "316:32:5", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "@uniswap/v3-core/contracts/libraries/FullMath.sol", - "file": "./libraries/FullMath.sol", - "id": 1022, - "nodeType": "ImportDirective", - "scope": 3492, - "sourceUnit": 4688, - "src": "350:34:5", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "@uniswap/v3-core/contracts/libraries/FixedPoint128.sol", - "file": "./libraries/FixedPoint128.sol", - "id": 1023, - "nodeType": "ImportDirective", - "scope": 3492, - "sourceUnit": 4505, - "src": "385:39:5", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "@uniswap/v3-core/contracts/libraries/TransferHelper.sol", - "file": "./libraries/TransferHelper.sol", - "id": 1024, - "nodeType": "ImportDirective", - "scope": 3492, - "sourceUnit": 7919, - "src": "425:40:5", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "@uniswap/v3-core/contracts/libraries/TickMath.sol", - "file": "./libraries/TickMath.sol", - "id": 1025, - "nodeType": "ImportDirective", - "scope": 3492, - "sourceUnit": 7868, - "src": "466:34:5", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "@uniswap/v3-core/contracts/libraries/LiquidityMath.sol", - "file": "./libraries/LiquidityMath.sol", - "id": 1026, - "nodeType": "ImportDirective", - "scope": 3492, - "sourceUnit": 4740, - "src": "501:39:5", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "@uniswap/v3-core/contracts/libraries/SqrtPriceMath.sol", - "file": "./libraries/SqrtPriceMath.sol", - "id": 1027, - "nodeType": "ImportDirective", - "scope": 3492, - "sourceUnit": 6364, - "src": "541:39:5", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "@uniswap/v3-core/contracts/libraries/SwapMath.sol", - "file": "./libraries/SwapMath.sol", - "id": 1028, - "nodeType": "ImportDirective", - "scope": 3492, - "sourceUnit": 6625, - "src": "581:34:5", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "@uniswap/v3-core/contracts/interfaces/IUniswapV3PoolDeployer.sol", - "file": "./interfaces/IUniswapV3PoolDeployer.sol", - "id": 1029, - "nodeType": "ImportDirective", - "scope": 3492, - "sourceUnit": 3757, - "src": "617:49:5", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol", - "file": "./interfaces/IUniswapV3Factory.sol", - "id": 1030, - "nodeType": "ImportDirective", - "scope": 3492, - "sourceUnit": 3717, - "src": "667:44:5", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "@uniswap/v3-core/contracts/interfaces/IERC20Minimal.sol", - "file": "./interfaces/IERC20Minimal.sol", - "id": 1031, - "nodeType": "ImportDirective", - "scope": 3492, - "sourceUnit": 3634, - "src": "712:40:5", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3MintCallback.sol", - "file": "./interfaces/callback/IUniswapV3MintCallback.sol", - "id": 1032, - "nodeType": "ImportDirective", - "scope": 3492, - "sourceUnit": 3785, - "src": "753:58:5", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol", - "file": "./interfaces/callback/IUniswapV3SwapCallback.sol", - "id": 1033, - "nodeType": "ImportDirective", - "scope": 3492, - "sourceUnit": 3799, - "src": "812:58:5", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3FlashCallback.sol", - "file": "./interfaces/callback/IUniswapV3FlashCallback.sol", - "id": 1034, - "nodeType": "ImportDirective", - "scope": 3492, - "sourceUnit": 3771, - "src": "871:59:5", - "symbolAliases": [], - "unitAlias": "" - }, - { - "abstract": false, - "baseContracts": [ - { - "baseName": { - "id": 1035, - "name": "IUniswapV3Pool", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 3738, - "src": "958:14:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IUniswapV3Pool_$3738", - "typeString": "contract IUniswapV3Pool" - } - }, - "id": 1036, - "nodeType": "InheritanceSpecifier", - "src": "958:14:5" - }, - { - "baseName": { - "id": 1037, - "name": "NoDelegateCall", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 736, - "src": "974:14:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_NoDelegateCall_$736", - "typeString": "contract NoDelegateCall" - } - }, - "id": 1038, - "nodeType": "InheritanceSpecifier", - "src": "974:14:5" - } - ], - "contractDependencies": [ - 736, - 3738, - 3894, - 3925, - 4044, - 4084, - 4110, - 4218 - ], - "contractKind": "contract", - "fullyImplemented": true, - "id": 3491, - "linearizedBaseContracts": [ - 3491, - 736, - 3738, - 4044, - 4110, - 3894, - 3925, - 4218, - 4084 - ], - "name": "UniswapV3Pool", - "nodeType": "ContractDefinition", - "nodes": [ - { - "id": 1041, - "libraryName": { - "id": 1039, - "name": "LowGasSafeMath", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 4869, - "src": "1001:14:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LowGasSafeMath_$4869", - "typeString": "library LowGasSafeMath" - } - }, - "nodeType": "UsingForDirective", - "src": "995:33:5", - "typeName": { - "id": 1040, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1020:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - { - "id": 1044, - "libraryName": { - "id": 1042, - "name": "LowGasSafeMath", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 4869, - "src": "1039:14:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LowGasSafeMath_$4869", - "typeString": "library LowGasSafeMath" - } - }, - "nodeType": "UsingForDirective", - "src": "1033:32:5", - "typeName": { - "id": 1043, - "name": "int256", - "nodeType": "ElementaryTypeName", - "src": "1058:6:5", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - } - }, - { - "id": 1047, - "libraryName": { - "id": 1045, - "name": "SafeCast", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5847, - "src": "1076:8:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeCast_$5847", - "typeString": "library SafeCast" - } - }, - "nodeType": "UsingForDirective", - "src": "1070:27:5", - "typeName": { - "id": 1046, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1089:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - { - "id": 1050, - "libraryName": { - "id": 1048, - "name": "SafeCast", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5847, - "src": "1108:8:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeCast_$5847", - "typeString": "library SafeCast" - } - }, - "nodeType": "UsingForDirective", - "src": "1102:26:5", - "typeName": { - "id": 1049, - "name": "int256", - "nodeType": "ElementaryTypeName", - "src": "1121:6:5", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - } - }, - { - "id": 1055, - "libraryName": { - "id": 1051, - "name": "Tick", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 7076, - "src": "1139:4:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Tick_$7076", - "typeString": "library Tick" - } - }, - "nodeType": "UsingForDirective", - "src": "1133:43:5", - "typeName": { - "id": 1054, - "keyType": { - "id": 1052, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "1156:5:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "Mapping", - "src": "1148:27:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Info_$6654_storage_$", - "typeString": "mapping(int24 => struct Tick.Info)" - }, - "valueType": { - "id": 1053, - "name": "Tick.Info", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 6654, - "src": "1165:9:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$6654_storage_ptr", - "typeString": "struct Tick.Info" - } - } - } - }, - { - "id": 1060, - "libraryName": { - "id": 1056, - "name": "TickBitmap", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 7332, - "src": "1187:10:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_TickBitmap_$7332", - "typeString": "library TickBitmap" - } - }, - "nodeType": "UsingForDirective", - "src": "1181:47:5", - "typeName": { - "id": 1059, - "keyType": { - "id": 1057, - "name": "int16", - "nodeType": "ElementaryTypeName", - "src": "1210:5:5", - "typeDescriptions": { - "typeIdentifier": "t_int16", - "typeString": "int16" - } - }, - "nodeType": "Mapping", - "src": "1202:25:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_int16_$_t_uint256_$", - "typeString": "mapping(int16 => uint256)" - }, - "valueType": { - "id": 1058, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1219:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - } - }, - { - "id": 1065, - "libraryName": { - "id": 1061, - "name": "Position", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5777, - "src": "1239:8:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Position_$5777", - "typeString": "library Position" - } - }, - "nodeType": "UsingForDirective", - "src": "1233:53:5", - "typeName": { - "id": 1064, - "keyType": { - "id": 1062, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1260:7:5", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Mapping", - "src": "1252:33:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Info_$5621_storage_$", - "typeString": "mapping(bytes32 => struct Position.Info)" - }, - "valueType": { - "id": 1063, - "name": "Position.Info", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5621, - "src": "1271:13:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$5621_storage_ptr", - "typeString": "struct Position.Info" - } - } - } - }, - { - "id": 1068, - "libraryName": { - "id": 1066, - "name": "Position", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5777, - "src": "1297:8:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Position_$5777", - "typeString": "library Position" - } - }, - "nodeType": "UsingForDirective", - "src": "1291:33:5", - "typeName": { - "id": 1067, - "name": "Position.Info", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5621, - "src": "1310:13:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$5621_storage_ptr", - "typeString": "struct Position.Info" - } - } - }, - { - "id": 1073, - "libraryName": { - "id": 1069, - "name": "Oracle", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5604, - "src": "1335:6:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Oracle_$5604", - "typeString": "library Oracle" - } - }, - "nodeType": "UsingForDirective", - "src": "1329:43:5", - "typeName": { - "baseType": { - "id": 1070, - "name": "Oracle.Observation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 4881, - "src": "1346:18:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_storage_ptr", - "typeString": "struct Oracle.Observation" - } - }, - "id": 1072, - "length": { - "hexValue": "3635353335", - "id": 1071, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1365:5:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_65535_by_1", - "typeString": "int_const 65535" - }, - "value": "65535" - }, - "nodeType": "ArrayTypeName", - "src": "1346:25:5", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Observation_$4881_storage_$65535_storage_ptr", - "typeString": "struct Oracle.Observation[65535]" - } - } - }, - { - "baseFunctions": [ - 4053 - ], - "constant": false, - "documentation": { - "id": 1074, - "nodeType": "StructuredDocumentation", - "src": "1378:40:5", - "text": "@inheritdoc IUniswapV3PoolImmutables" - }, - "functionSelector": "c45a0155", - "id": 1077, - "mutability": "immutable", - "name": "factory", - "nodeType": "VariableDeclaration", - "overrides": { - "id": 1076, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "1448:8:5" - }, - "scope": 3491, - "src": "1423:41:5", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1075, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1423:7:5", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "public" - }, - { - "baseFunctions": [ - 4059 - ], - "constant": false, - "documentation": { - "id": 1078, - "nodeType": "StructuredDocumentation", - "src": "1470:40:5", - "text": "@inheritdoc IUniswapV3PoolImmutables" - }, - "functionSelector": "0dfe1681", - "id": 1081, - "mutability": "immutable", - "name": "token0", - "nodeType": "VariableDeclaration", - "overrides": { - "id": 1080, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "1540:8:5" - }, - "scope": 3491, - "src": "1515:40:5", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1079, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1515:7:5", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "public" - }, - { - "baseFunctions": [ - 4065 - ], - "constant": false, - "documentation": { - "id": 1082, - "nodeType": "StructuredDocumentation", - "src": "1561:40:5", - "text": "@inheritdoc IUniswapV3PoolImmutables" - }, - "functionSelector": "d21220a7", - "id": 1085, - "mutability": "immutable", - "name": "token1", - "nodeType": "VariableDeclaration", - "overrides": { - "id": 1084, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "1631:8:5" - }, - "scope": 3491, - "src": "1606:40:5", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1083, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1606:7:5", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "public" - }, - { - "baseFunctions": [ - 4071 - ], - "constant": false, - "documentation": { - "id": 1086, - "nodeType": "StructuredDocumentation", - "src": "1652:40:5", - "text": "@inheritdoc IUniswapV3PoolImmutables" - }, - "functionSelector": "ddca3f43", - "id": 1089, - "mutability": "immutable", - "name": "fee", - "nodeType": "VariableDeclaration", - "overrides": { - "id": 1088, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "1721:8:5" - }, - "scope": 3491, - "src": "1697:36:5", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - }, - "typeName": { - "id": 1087, - "name": "uint24", - "nodeType": "ElementaryTypeName", - "src": "1697:6:5", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - "visibility": "public" - }, - { - "baseFunctions": [ - 4077 - ], - "constant": false, - "documentation": { - "id": 1090, - "nodeType": "StructuredDocumentation", - "src": "1740:40:5", - "text": "@inheritdoc IUniswapV3PoolImmutables" - }, - "functionSelector": "d0c93a7c", - "id": 1093, - "mutability": "immutable", - "name": "tickSpacing", - "nodeType": "VariableDeclaration", - "overrides": { - "id": 1092, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "1808:8:5" - }, - "scope": 3491, - "src": "1785:43:5", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 1091, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "1785:5:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "public" - }, - { - "baseFunctions": [ - 4083 - ], - "constant": false, - "documentation": { - "id": 1094, - "nodeType": "StructuredDocumentation", - "src": "1835:40:5", - "text": "@inheritdoc IUniswapV3PoolImmutables" - }, - "functionSelector": "70cf754a", - "id": 1097, - "mutability": "immutable", - "name": "maxLiquidityPerTick", - "nodeType": "VariableDeclaration", - "overrides": { - "id": 1096, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "1905:8:5" - }, - "scope": 3491, - "src": "1880:53:5", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "typeName": { - "id": 1095, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "1880:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "visibility": "public" - }, - { - "canonicalName": "UniswapV3Pool.Slot0", - "id": 1112, - "members": [ - { - "constant": false, - "id": 1099, - "mutability": "mutable", - "name": "sqrtPriceX96", - "nodeType": "VariableDeclaration", - "scope": 1112, - "src": "1992:20:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "typeName": { - "id": 1098, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "1992:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1101, - "mutability": "mutable", - "name": "tick", - "nodeType": "VariableDeclaration", - "scope": 1112, - "src": "2050:10:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 1100, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "2050:5:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1103, - "mutability": "mutable", - "name": "observationIndex", - "nodeType": "VariableDeclaration", - "scope": 1112, - "src": "2139:23:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - "typeName": { - "id": 1102, - "name": "uint16", - "nodeType": "ElementaryTypeName", - "src": "2139:6:5", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1105, - "mutability": "mutable", - "name": "observationCardinality", - "nodeType": "VariableDeclaration", - "scope": 1112, - "src": "2248:29:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - "typeName": { - "id": 1104, - "name": "uint16", - "nodeType": "ElementaryTypeName", - "src": "2248:6:5", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1107, - "mutability": "mutable", - "name": "observationCardinalityNext", - "nodeType": "VariableDeclaration", - "scope": 1112, - "src": "2380:33:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - "typeName": { - "id": 1106, - "name": "uint16", - "nodeType": "ElementaryTypeName", - "src": "2380:6:5", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1109, - "mutability": "mutable", - "name": "feeProtocol", - "nodeType": "VariableDeclaration", - "scope": 1112, - "src": "2567:17:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 1108, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "2567:5:5", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1111, - "mutability": "mutable", - "name": "unlocked", - "nodeType": "VariableDeclaration", - "scope": 1112, - "src": "2632:13:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1110, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "2632:4:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "name": "Slot0", - "nodeType": "StructDefinition", - "scope": 3491, - "src": "1940:712:5", - "visibility": "public" - }, - { - "baseFunctions": [ - 4131 - ], - "constant": false, - "documentation": { - "id": 1113, - "nodeType": "StructuredDocumentation", - "src": "2657:35:5", - "text": "@inheritdoc IUniswapV3PoolState" - }, - "functionSelector": "3850c7bd", - "id": 1116, - "mutability": "mutable", - "name": "slot0", - "nodeType": "VariableDeclaration", - "overrides": { - "id": 1115, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "2710:8:5" - }, - "scope": 3491, - "src": "2697:27:5", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Slot0_$1112_storage", - "typeString": "struct UniswapV3Pool.Slot0" - }, - "typeName": { - "id": 1114, - "name": "Slot0", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1112, - "src": "2697:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Slot0_$1112_storage_ptr", - "typeString": "struct UniswapV3Pool.Slot0" - } - }, - "visibility": "public" - }, - { - "baseFunctions": [ - 4137 - ], - "constant": false, - "documentation": { - "id": 1117, - "nodeType": "StructuredDocumentation", - "src": "2731:35:5", - "text": "@inheritdoc IUniswapV3PoolState" - }, - "functionSelector": "f3058399", - "id": 1120, - "mutability": "mutable", - "name": "feeGrowthGlobal0X128", - "nodeType": "VariableDeclaration", - "overrides": { - "id": 1119, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "2786:8:5" - }, - "scope": 3491, - "src": "2771:44:5", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1118, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2771:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "public" - }, - { - "baseFunctions": [ - 4143 - ], - "constant": false, - "documentation": { - "id": 1121, - "nodeType": "StructuredDocumentation", - "src": "2821:35:5", - "text": "@inheritdoc IUniswapV3PoolState" - }, - "functionSelector": "46141319", - "id": 1124, - "mutability": "mutable", - "name": "feeGrowthGlobal1X128", - "nodeType": "VariableDeclaration", - "overrides": { - "id": 1123, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "2876:8:5" - }, - "scope": 3491, - "src": "2861:44:5", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1122, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2861:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "public" - }, - { - "canonicalName": "UniswapV3Pool.ProtocolFees", - "id": 1129, - "members": [ - { - "constant": false, - "id": 1126, - "mutability": "mutable", - "name": "token0", - "nodeType": "VariableDeclaration", - "scope": 1129, - "src": "2998:14:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "typeName": { - "id": 1125, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "2998:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1128, - "mutability": "mutable", - "name": "token1", - "nodeType": "VariableDeclaration", - "scope": 1129, - "src": "3022:14:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "typeName": { - "id": 1127, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "3022:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "visibility": "internal" - } - ], - "name": "ProtocolFees", - "nodeType": "StructDefinition", - "scope": 3491, - "src": "2968:75:5", - "visibility": "public" - }, - { - "baseFunctions": [ - 4151 - ], - "constant": false, - "documentation": { - "id": 1130, - "nodeType": "StructuredDocumentation", - "src": "3048:35:5", - "text": "@inheritdoc IUniswapV3PoolState" - }, - "functionSelector": "1ad8b03b", - "id": 1133, - "mutability": "mutable", - "name": "protocolFees", - "nodeType": "VariableDeclaration", - "overrides": { - "id": 1132, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "3108:8:5" - }, - "scope": 3491, - "src": "3088:41:5", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ProtocolFees_$1129_storage", - "typeString": "struct UniswapV3Pool.ProtocolFees" - }, - "typeName": { - "id": 1131, - "name": "ProtocolFees", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1129, - "src": "3088:12:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ProtocolFees_$1129_storage_ptr", - "typeString": "struct UniswapV3Pool.ProtocolFees" - } - }, - "visibility": "public" - }, - { - "baseFunctions": [ - 4157 - ], - "constant": false, - "documentation": { - "id": 1134, - "nodeType": "StructuredDocumentation", - "src": "3136:35:5", - "text": "@inheritdoc IUniswapV3PoolState" - }, - "functionSelector": "1a686502", - "id": 1137, - "mutability": "mutable", - "name": "liquidity", - "nodeType": "VariableDeclaration", - "overrides": { - "id": 1136, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "3191:8:5" - }, - "scope": 3491, - "src": "3176:33:5", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "typeName": { - "id": 1135, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "3176:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "visibility": "public" - }, - { - "baseFunctions": [ - 4179 - ], - "constant": false, - "documentation": { - "id": 1138, - "nodeType": "StructuredDocumentation", - "src": "3216:35:5", - "text": "@inheritdoc IUniswapV3PoolState" - }, - "functionSelector": "f30dba93", - "id": 1143, - "mutability": "mutable", - "name": "ticks", - "nodeType": "VariableDeclaration", - "overrides": { - "id": 1142, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "3291:8:5" - }, - "scope": 3491, - "src": "3256:49:5", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Info_$6654_storage_$", - "typeString": "mapping(int24 => struct Tick.Info)" - }, - "typeName": { - "id": 1141, - "keyType": { - "id": 1139, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "3264:5:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "Mapping", - "src": "3256:27:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Info_$6654_storage_$", - "typeString": "mapping(int24 => struct Tick.Info)" - }, - "valueType": { - "id": 1140, - "name": "Tick.Info", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 6654, - "src": "3273:9:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$6654_storage_ptr", - "typeString": "struct Tick.Info" - } - } - }, - "visibility": "public" - }, - { - "baseFunctions": [ - 4187 - ], - "constant": false, - "documentation": { - "id": 1144, - "nodeType": "StructuredDocumentation", - "src": "3311:35:5", - "text": "@inheritdoc IUniswapV3PoolState" - }, - "functionSelector": "5339c296", - "id": 1149, - "mutability": "mutable", - "name": "tickBitmap", - "nodeType": "VariableDeclaration", - "overrides": { - "id": 1148, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "3384:8:5" - }, - "scope": 3491, - "src": "3351:52:5", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_int16_$_t_uint256_$", - "typeString": "mapping(int16 => uint256)" - }, - "typeName": { - "id": 1147, - "keyType": { - "id": 1145, - "name": "int16", - "nodeType": "ElementaryTypeName", - "src": "3359:5:5", - "typeDescriptions": { - "typeIdentifier": "t_int16", - "typeString": "int16" - } - }, - "nodeType": "Mapping", - "src": "3351:25:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_int16_$_t_uint256_$", - "typeString": "mapping(int16 => uint256)" - }, - "valueType": { - "id": 1146, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3368:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "visibility": "public" - }, - { - "baseFunctions": [ - 4203 - ], - "constant": false, - "documentation": { - "id": 1150, - "nodeType": "StructuredDocumentation", - "src": "3409:35:5", - "text": "@inheritdoc IUniswapV3PoolState" - }, - "functionSelector": "514ea4bf", - "id": 1155, - "mutability": "mutable", - "name": "positions", - "nodeType": "VariableDeclaration", - "overrides": { - "id": 1154, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "3490:8:5" - }, - "scope": 3491, - "src": "3449:59:5", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Info_$5621_storage_$", - "typeString": "mapping(bytes32 => struct Position.Info)" - }, - "typeName": { - "id": 1153, - "keyType": { - "id": 1151, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "3457:7:5", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Mapping", - "src": "3449:33:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Info_$5621_storage_$", - "typeString": "mapping(bytes32 => struct Position.Info)" - }, - "valueType": { - "id": 1152, - "name": "Position.Info", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5621, - "src": "3468:13:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$5621_storage_ptr", - "typeString": "struct Position.Info" - } - } - }, - "visibility": "public" - }, - { - "baseFunctions": [ - 4217 - ], - "constant": false, - "documentation": { - "id": 1156, - "nodeType": "StructuredDocumentation", - "src": "3514:35:5", - "text": "@inheritdoc IUniswapV3PoolState" - }, - "functionSelector": "252c09d7", - "id": 1161, - "mutability": "mutable", - "name": "observations", - "nodeType": "VariableDeclaration", - "overrides": { - "id": 1160, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "3587:8:5" - }, - "scope": 3491, - "src": "3554:54:5", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Observation_$4881_storage_$65535_storage", - "typeString": "struct Oracle.Observation[65535]" - }, - "typeName": { - "baseType": { - "id": 1157, - "name": "Oracle.Observation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 4881, - "src": "3554:18:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_storage_ptr", - "typeString": "struct Oracle.Observation" - } - }, - "id": 1159, - "length": { - "hexValue": "3635353335", - "id": 1158, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3573:5:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_65535_by_1", - "typeString": "int_const 65535" - }, - "value": "65535" - }, - "nodeType": "ArrayTypeName", - "src": "3554:25:5", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Observation_$4881_storage_$65535_storage_ptr", - "typeString": "struct Oracle.Observation[65535]" - } - }, - "visibility": "public" - }, - { - "body": { - "id": 1183, - "nodeType": "Block", - "src": "3979:121:5", - "statements": [ - { - "expression": { - "arguments": [ - { - "expression": { - "id": 1165, - "name": "slot0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1116, - "src": "3997:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Slot0_$1112_storage", - "typeString": "struct UniswapV3Pool.Slot0 storage ref" - } - }, - "id": 1166, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "unlocked", - "nodeType": "MemberAccess", - "referencedDeclaration": 1111, - "src": "3997:14:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "4c4f4b", - "id": 1167, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4013:5:5", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_e01ebc6b01bbf458b3d355b6e649efe64599751670c5d19175619893ecf97529", - "typeString": "literal_string \"LOK\"" - }, - "value": "LOK" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_e01ebc6b01bbf458b3d355b6e649efe64599751670c5d19175619893ecf97529", - "typeString": "literal_string \"LOK\"" - } - ], - "id": 1164, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "3989:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 1168, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3989:30:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1169, - "nodeType": "ExpressionStatement", - "src": "3989:30:5" - }, - { - "expression": { - "id": 1174, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 1170, - "name": "slot0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1116, - "src": "4029:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Slot0_$1112_storage", - "typeString": "struct UniswapV3Pool.Slot0 storage ref" - } - }, - "id": 1172, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "unlocked", - "nodeType": "MemberAccess", - "referencedDeclaration": 1111, - "src": "4029:14:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "66616c7365", - "id": 1173, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4046:5:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "4029:22:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1175, - "nodeType": "ExpressionStatement", - "src": "4029:22:5" - }, - { - "id": 1176, - "nodeType": "PlaceholderStatement", - "src": "4061:1:5" - }, - { - "expression": { - "id": 1181, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 1177, - "name": "slot0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1116, - "src": "4072:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Slot0_$1112_storage", - "typeString": "struct UniswapV3Pool.Slot0 storage ref" - } - }, - "id": 1179, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "unlocked", - "nodeType": "MemberAccess", - "referencedDeclaration": 1111, - "src": "4072:14:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "74727565", - "id": 1180, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4089:4:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "4072:21:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1182, - "nodeType": "ExpressionStatement", - "src": "4072:21:5" - } - ] - }, - "documentation": { - "id": 1162, - "nodeType": "StructuredDocumentation", - "src": "3615:343:5", - "text": "@dev Mutually exclusive reentrancy protection into the pool to/from a method. This method also prevents entrance\n to a function before the pool is initialized. The reentrancy guard is required throughout the contract because\n we use balance checks to determine the payment status of interactions such as mint, swap and flash." - }, - "id": 1184, - "name": "lock", - "nodeType": "ModifierDefinition", - "parameters": { - "id": 1163, - "nodeType": "ParameterList", - "parameters": [], - "src": "3976:2:5" - }, - "src": "3963:137:5", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 1199, - "nodeType": "Block", - "src": "4244:85:5", - "statements": [ - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1195, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 1188, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "4262:3:5", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1189, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "4262:10:5", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "arguments": [ - { - "id": 1191, - "name": "factory", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1077, - "src": "4294:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 1190, - "name": "IUniswapV3Factory", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3716, - "src": "4276:17:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IUniswapV3Factory_$3716_$", - "typeString": "type(contract IUniswapV3Factory)" - } - }, - "id": 1192, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4276:26:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_IUniswapV3Factory_$3716", - "typeString": "contract IUniswapV3Factory" - } - }, - "id": 1193, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "owner", - "nodeType": "MemberAccess", - "referencedDeclaration": 3669, - "src": "4276:32:5", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", - "typeString": "function () view external returns (address)" - } - }, - "id": 1194, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4276:34:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "4262:48:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1187, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "4254:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1196, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4254:57:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1197, - "nodeType": "ExpressionStatement", - "src": "4254:57:5" - }, - { - "id": 1198, - "nodeType": "PlaceholderStatement", - "src": "4321:1:5" - } - ] - }, - "documentation": { - "id": 1185, - "nodeType": "StructuredDocumentation", - "src": "4106:105:5", - "text": "@dev Prevents calling a function from anyone except the address returned by IUniswapV3Factory#owner()" - }, - "id": 1200, - "name": "onlyFactoryOwner", - "nodeType": "ModifierDefinition", - "parameters": { - "id": 1186, - "nodeType": "ParameterList", - "parameters": [], - "src": "4241:2:5" - }, - "src": "4216:113:5", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 1231, - "nodeType": "Block", - "src": "4349:259:5", - "statements": [ - { - "assignments": [ - 1204 - ], - "declarations": [ - { - "constant": false, - "id": 1204, - "mutability": "mutable", - "name": "_tickSpacing", - "nodeType": "VariableDeclaration", - "scope": 1231, - "src": "4359:18:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 1203, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "4359:5:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - } - ], - "id": 1205, - "nodeType": "VariableDeclarationStatement", - "src": "4359:18:5" - }, - { - "expression": { - "id": 1218, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "components": [ - { - "id": 1206, - "name": "factory", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1077, - "src": "4388:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 1207, - "name": "token0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1081, - "src": "4397:6:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 1208, - "name": "token1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1085, - "src": "4405:6:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 1209, - "name": "fee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1089, - "src": "4413:3:5", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - { - "id": 1210, - "name": "_tickSpacing", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1204, - "src": "4418:12:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - } - ], - "id": 1211, - "isConstant": false, - "isInlineArray": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "TupleExpression", - "src": "4387:44:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_address_$_t_address_$_t_address_$_t_uint24_$_t_int24_$", - "typeString": "tuple(address,address,address,uint24,int24)" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "arguments": [ - { - "expression": { - "id": 1213, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "4457:3:5", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1214, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "4457:10:5", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "id": 1212, - "name": "IUniswapV3PoolDeployer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3756, - "src": "4434:22:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IUniswapV3PoolDeployer_$3756_$", - "typeString": "type(contract IUniswapV3PoolDeployer)" - } - }, - "id": 1215, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4434:34:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_IUniswapV3PoolDeployer_$3756", - "typeString": "contract IUniswapV3PoolDeployer" - } - }, - "id": 1216, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "parameters", - "nodeType": "MemberAccess", - "referencedDeclaration": 3755, - "src": "4434:45:5", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$__$returns$_t_address_$_t_address_$_t_address_$_t_uint24_$_t_int24_$", - "typeString": "function () view external returns (address,address,address,uint24,int24)" - } - }, - "id": 1217, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4434:47:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_address_$_t_address_$_t_address_$_t_uint24_$_t_int24_$", - "typeString": "tuple(address,address,address,uint24,int24)" - } - }, - "src": "4387:94:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1219, - "nodeType": "ExpressionStatement", - "src": "4387:94:5" - }, - { - "expression": { - "id": 1222, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 1220, - "name": "tickSpacing", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1093, - "src": "4491:11:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 1221, - "name": "_tickSpacing", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1204, - "src": "4505:12:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "src": "4491:26:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "id": 1223, - "nodeType": "ExpressionStatement", - "src": "4491:26:5" - }, - { - "expression": { - "id": 1229, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 1224, - "name": "maxLiquidityPerTick", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1097, - "src": "4528:19:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 1227, - "name": "_tickSpacing", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1204, - "src": "4588:12:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - ], - "expression": { - "id": 1225, - "name": "Tick", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7076, - "src": "4550:4:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Tick_$7076_$", - "typeString": "type(library Tick)" - } - }, - "id": 1226, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "tickSpacingToMaxLiquidityPerTick", - "nodeType": "MemberAccess", - "referencedDeclaration": 6705, - "src": "4550:37:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_int24_$returns$_t_uint128_$", - "typeString": "function (int24) pure returns (uint128)" - } - }, - "id": 1228, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4550:51:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "src": "4528:73:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "id": 1230, - "nodeType": "ExpressionStatement", - "src": "4528:73:5" - } - ] - }, - "id": 1232, - "implemented": true, - "kind": "constructor", - "modifiers": [], - "name": "", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1201, - "nodeType": "ParameterList", - "parameters": [], - "src": "4346:2:5" - }, - "returnParameters": { - "id": 1202, - "nodeType": "ParameterList", - "parameters": [], - "src": "4349:0:5" - }, - "scope": 3491, - "src": "4335:273:5", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - { - "body": { - "id": 1263, - "nodeType": "Block", - "src": "4731:166:5", - "statements": [ - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "id": 1243, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 1241, - "name": "tickLower", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1235, - "src": "4749:9:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "id": 1242, - "name": "tickUpper", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1237, - "src": "4761:9:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "src": "4749:21:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "544c55", - "id": 1244, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4772:5:5", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_06776ee9cbc7ad0c1c06e0539ee449ea9f1cfe5ae7f3eda3c33aaa56fb586d6b", - "typeString": "literal_string \"TLU\"" - }, - "value": "TLU" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_06776ee9cbc7ad0c1c06e0539ee449ea9f1cfe5ae7f3eda3c33aaa56fb586d6b", - "typeString": "literal_string \"TLU\"" - } - ], - "id": 1240, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "4741:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 1245, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4741:37:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1246, - "nodeType": "ExpressionStatement", - "src": "4741:37:5" - }, - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "id": 1251, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 1248, - "name": "tickLower", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1235, - "src": "4796:9:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "expression": { - "id": 1249, - "name": "TickMath", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7867, - "src": "4809:8:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_TickMath_$7867_$", - "typeString": "type(library TickMath)" - } - }, - "id": 1250, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "MIN_TICK", - "nodeType": "MemberAccess", - "referencedDeclaration": 7340, - "src": "4809:17:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "src": "4796:30:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "544c4d", - "id": 1252, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4828:5:5", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_9f9b85a186c017db58134196c73d3823c64ac15bc5fdab86c88cfc6bb064f2e5", - "typeString": "literal_string \"TLM\"" - }, - "value": "TLM" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_9f9b85a186c017db58134196c73d3823c64ac15bc5fdab86c88cfc6bb064f2e5", - "typeString": "literal_string \"TLM\"" - } - ], - "id": 1247, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "4788:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 1253, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4788:46:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1254, - "nodeType": "ExpressionStatement", - "src": "4788:46:5" - }, - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "id": 1259, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 1256, - "name": "tickUpper", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1237, - "src": "4852:9:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "expression": { - "id": 1257, - "name": "TickMath", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7867, - "src": "4865:8:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_TickMath_$7867_$", - "typeString": "type(library TickMath)" - } - }, - "id": 1258, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "MAX_TICK", - "nodeType": "MemberAccess", - "referencedDeclaration": 7345, - "src": "4865:17:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "src": "4852:30:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "54554d", - "id": 1260, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4884:5:5", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_95f36cdfdff7cff798fd6265395ae5b2ff6ffb0b1fac3580c0e5d24a0519f359", - "typeString": "literal_string \"TUM\"" - }, - "value": "TUM" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_95f36cdfdff7cff798fd6265395ae5b2ff6ffb0b1fac3580c0e5d24a0519f359", - "typeString": "literal_string \"TUM\"" - } - ], - "id": 1255, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "4844:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 1261, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4844:46:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1262, - "nodeType": "ExpressionStatement", - "src": "4844:46:5" - } - ] - }, - "documentation": { - "id": 1233, - "nodeType": "StructuredDocumentation", - "src": "4614:45:5", - "text": "@dev Common checks for valid tick inputs." - }, - "id": 1264, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "checkTicks", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1238, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1235, - "mutability": "mutable", - "name": "tickLower", - "nodeType": "VariableDeclaration", - "scope": 1264, - "src": "4684:15:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 1234, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "4684:5:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1237, - "mutability": "mutable", - "name": "tickUpper", - "nodeType": "VariableDeclaration", - "scope": 1264, - "src": "4701:15:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 1236, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "4701:5:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - } - ], - "src": "4683:34:5" - }, - "returnParameters": { - "id": 1239, - "nodeType": "ParameterList", - "parameters": [], - "src": "4731:0:5" - }, - "scope": 3491, - "src": "4664:233:5", - "stateMutability": "pure", - "virtual": false, - "visibility": "private" - }, - { - "body": { - "id": 1276, - "nodeType": "Block", - "src": "5084:72:5", - "statements": [ - { - "expression": { - "arguments": [ - { - "expression": { - "id": 1272, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -4, - "src": "5108:5:5", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 1273, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "timestamp", - "nodeType": "MemberAccess", - "src": "5108:15:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1271, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "5101:6:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint32_$", - "typeString": "type(uint32)" - }, - "typeName": { - "id": 1270, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "5101:6:5", - "typeDescriptions": {} - } - }, - "id": 1274, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5101:23:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "functionReturnParameters": 1269, - "id": 1275, - "nodeType": "Return", - "src": "5094:30:5" - } - ] - }, - "documentation": { - "id": 1265, - "nodeType": "StructuredDocumentation", - "src": "4903:110:5", - "text": "@dev Returns the block timestamp truncated to 32 bits, i.e. mod 2**32. This method is overridden in tests." - }, - "id": 1277, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_blockTimestamp", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1266, - "nodeType": "ParameterList", - "parameters": [], - "src": "5042:2:5" - }, - "returnParameters": { - "id": 1269, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1268, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 1277, - "src": "5076:6:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 1267, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "5076:6:5", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "visibility": "internal" - } - ], - "src": "5075:8:5" - }, - "scope": 3491, - "src": "5018:138:5", - "stateMutability": "view", - "virtual": true, - "visibility": "internal" - }, - { - "body": { - "id": 1318, - "nodeType": "Block", - "src": "5390:246:5", - "statements": [ - { - "assignments": [ - 1284, - 1286 - ], - "declarations": [ - { - "constant": false, - "id": 1284, - "mutability": "mutable", - "name": "success", - "nodeType": "VariableDeclaration", - "scope": 1318, - "src": "5401:12:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1283, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "5401:4:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1286, - "mutability": "mutable", - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 1318, - "src": "5415:17:5", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 1285, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "5415:5:5", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "id": 1300, - "initialValue": { - "arguments": [ - { - "arguments": [ - { - "expression": { - "expression": { - "id": 1291, - "name": "IERC20Minimal", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3633, - "src": "5489:13:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IERC20Minimal_$3633_$", - "typeString": "type(contract IERC20Minimal)" - } - }, - "id": 1292, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "balanceOf", - "nodeType": "MemberAccess", - "referencedDeclaration": 3572, - "src": "5489:23:5", - "typeDescriptions": { - "typeIdentifier": "t_function_declaration_view$_t_address_$returns$_t_uint256_$", - "typeString": "function IERC20Minimal.balanceOf(address) view returns (uint256)" - } - }, - "id": 1293, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "selector", - "nodeType": "MemberAccess", - "src": "5489:32:5", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - { - "arguments": [ - { - "id": 1296, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -28, - "src": "5531:4:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_UniswapV3Pool_$3491", - "typeString": "contract UniswapV3Pool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_UniswapV3Pool_$3491", - "typeString": "contract UniswapV3Pool" - } - ], - "id": 1295, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "5523:7:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 1294, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "5523:7:5", - "typeDescriptions": {} - } - }, - "id": 1297, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5523:13:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "id": 1289, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -1, - "src": "5466:3:5", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 1290, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "encodeWithSelector", - "nodeType": "MemberAccess", - "src": "5466:22:5", - "typeDescriptions": { - "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", - "typeString": "function (bytes4) pure returns (bytes memory)" - } - }, - "id": 1298, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5466:71:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "expression": { - "id": 1287, - "name": "token0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1081, - "src": "5448:6:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1288, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "staticcall", - "nodeType": "MemberAccess", - "src": "5448:17:5", - "typeDescriptions": { - "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", - "typeString": "function (bytes memory) view returns (bool,bytes memory)" - } - }, - "id": 1299, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5448:90:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", - "typeString": "tuple(bool,bytes memory)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "5400:138:5" - }, - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 1307, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 1302, - "name": "success", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1284, - "src": "5556:7:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1306, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 1303, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1286, - "src": "5567:4:5", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "id": 1304, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "src": "5567:11:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "hexValue": "3332", - "id": 1305, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5582:2:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_32_by_1", - "typeString": "int_const 32" - }, - "value": "32" - }, - "src": "5567:17:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "5556:28:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1301, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "5548:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1308, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5548:37:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1309, - "nodeType": "ExpressionStatement", - "src": "5548:37:5" - }, - { - "expression": { - "arguments": [ - { - "id": 1312, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1286, - "src": "5613:4:5", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "components": [ - { - "id": 1314, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "5620:7:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 1313, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5620:7:5", - "typeDescriptions": {} - } - } - ], - "id": 1315, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "5619:9:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - } - ], - "expression": { - "id": 1310, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -1, - "src": "5602:3:5", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 1311, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "decode", - "nodeType": "MemberAccess", - "src": "5602:10:5", - "typeDescriptions": { - "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 1316, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5602:27:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 1282, - "id": 1317, - "nodeType": "Return", - "src": "5595:34:5" - } - ] - }, - "documentation": { - "id": 1278, - "nodeType": "StructuredDocumentation", - "src": "5162:172:5", - "text": "@dev Get the pool's balance of token0\n @dev This function is gas optimized to avoid a redundant extcodesize check in addition to the returndatasize\n check" - }, - "id": 1319, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "balance0", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1279, - "nodeType": "ParameterList", - "parameters": [], - "src": "5356:2:5" - }, - "returnParameters": { - "id": 1282, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1281, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 1319, - "src": "5381:7:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1280, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5381:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "5380:9:5" - }, - "scope": 3491, - "src": "5339:297:5", - "stateMutability": "view", - "virtual": false, - "visibility": "private" - }, - { - "body": { - "id": 1360, - "nodeType": "Block", - "src": "5870:246:5", - "statements": [ - { - "assignments": [ - 1326, - 1328 - ], - "declarations": [ - { - "constant": false, - "id": 1326, - "mutability": "mutable", - "name": "success", - "nodeType": "VariableDeclaration", - "scope": 1360, - "src": "5881:12:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1325, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "5881:4:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1328, - "mutability": "mutable", - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 1360, - "src": "5895:17:5", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 1327, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "5895:5:5", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "id": 1342, - "initialValue": { - "arguments": [ - { - "arguments": [ - { - "expression": { - "expression": { - "id": 1333, - "name": "IERC20Minimal", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3633, - "src": "5969:13:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IERC20Minimal_$3633_$", - "typeString": "type(contract IERC20Minimal)" - } - }, - "id": 1334, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "balanceOf", - "nodeType": "MemberAccess", - "referencedDeclaration": 3572, - "src": "5969:23:5", - "typeDescriptions": { - "typeIdentifier": "t_function_declaration_view$_t_address_$returns$_t_uint256_$", - "typeString": "function IERC20Minimal.balanceOf(address) view returns (uint256)" - } - }, - "id": 1335, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "selector", - "nodeType": "MemberAccess", - "src": "5969:32:5", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - { - "arguments": [ - { - "id": 1338, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -28, - "src": "6011:4:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_UniswapV3Pool_$3491", - "typeString": "contract UniswapV3Pool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_UniswapV3Pool_$3491", - "typeString": "contract UniswapV3Pool" - } - ], - "id": 1337, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "6003:7:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 1336, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "6003:7:5", - "typeDescriptions": {} - } - }, - "id": 1339, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6003:13:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "id": 1331, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -1, - "src": "5946:3:5", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 1332, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "encodeWithSelector", - "nodeType": "MemberAccess", - "src": "5946:22:5", - "typeDescriptions": { - "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", - "typeString": "function (bytes4) pure returns (bytes memory)" - } - }, - "id": 1340, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5946:71:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "expression": { - "id": 1329, - "name": "token1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1085, - "src": "5928:6:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1330, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "staticcall", - "nodeType": "MemberAccess", - "src": "5928:17:5", - "typeDescriptions": { - "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", - "typeString": "function (bytes memory) view returns (bool,bytes memory)" - } - }, - "id": 1341, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5928:90:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", - "typeString": "tuple(bool,bytes memory)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "5880:138:5" - }, - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 1349, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 1344, - "name": "success", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1326, - "src": "6036:7:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1348, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 1345, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1328, - "src": "6047:4:5", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "id": 1346, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "src": "6047:11:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "hexValue": "3332", - "id": 1347, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6062:2:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_32_by_1", - "typeString": "int_const 32" - }, - "value": "32" - }, - "src": "6047:17:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "6036:28:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1343, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "6028:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1350, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6028:37:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1351, - "nodeType": "ExpressionStatement", - "src": "6028:37:5" - }, - { - "expression": { - "arguments": [ - { - "id": 1354, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1328, - "src": "6093:4:5", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "components": [ - { - "id": 1356, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "6100:7:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 1355, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6100:7:5", - "typeDescriptions": {} - } - } - ], - "id": 1357, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "6099:9:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - } - ], - "expression": { - "id": 1352, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -1, - "src": "6082:3:5", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 1353, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "decode", - "nodeType": "MemberAccess", - "src": "6082:10:5", - "typeDescriptions": { - "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 1358, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6082:27:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 1324, - "id": 1359, - "nodeType": "Return", - "src": "6075:34:5" - } - ] - }, - "documentation": { - "id": 1320, - "nodeType": "StructuredDocumentation", - "src": "5642:172:5", - "text": "@dev Get the pool's balance of token1\n @dev This function is gas optimized to avoid a redundant extcodesize check in addition to the returndatasize\n check" - }, - "id": 1361, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "balance1", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1321, - "nodeType": "ParameterList", - "parameters": [], - "src": "5836:2:5" - }, - "returnParameters": { - "id": 1324, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1323, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 1361, - "src": "5861:7:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1322, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5861:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "5860:9:5" - }, - "scope": 3491, - "src": "5819:297:5", - "stateMutability": "view", - "virtual": false, - "visibility": "private" - }, - { - "baseFunctions": [ - 3924 - ], - "body": { - "id": 1542, - "nodeType": "Block", - "src": "6464:2559:5", - "statements": [ - { - "expression": { - "arguments": [ - { - "id": 1379, - "name": "tickLower", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1364, - "src": "6485:9:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - { - "id": 1380, - "name": "tickUpper", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1366, - "src": "6496:9:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - ], - "id": 1378, - "name": "checkTicks", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1264, - "src": "6474:10:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_int24_$_t_int24_$returns$__$", - "typeString": "function (int24,int24) pure" - } - }, - "id": 1381, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6474:32:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1382, - "nodeType": "ExpressionStatement", - "src": "6474:32:5" - }, - { - "assignments": [ - 1384 - ], - "declarations": [ - { - "constant": false, - "id": 1384, - "mutability": "mutable", - "name": "tickCumulativeLower", - "nodeType": "VariableDeclaration", - "scope": 1542, - "src": "6517:25:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - }, - "typeName": { - "id": 1383, - "name": "int56", - "nodeType": "ElementaryTypeName", - "src": "6517:5:5", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - } - }, - "visibility": "internal" - } - ], - "id": 1385, - "nodeType": "VariableDeclarationStatement", - "src": "6517:25:5" - }, - { - "assignments": [ - 1387 - ], - "declarations": [ - { - "constant": false, - "id": 1387, - "mutability": "mutable", - "name": "tickCumulativeUpper", - "nodeType": "VariableDeclaration", - "scope": 1542, - "src": "6552:25:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - }, - "typeName": { - "id": 1386, - "name": "int56", - "nodeType": "ElementaryTypeName", - "src": "6552:5:5", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - } - }, - "visibility": "internal" - } - ], - "id": 1388, - "nodeType": "VariableDeclarationStatement", - "src": "6552:25:5" - }, - { - "assignments": [ - 1390 - ], - "declarations": [ - { - "constant": false, - "id": 1390, - "mutability": "mutable", - "name": "secondsPerLiquidityOutsideLowerX128", - "nodeType": "VariableDeclaration", - "scope": 1542, - "src": "6587:43:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "typeName": { - "id": 1389, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "6587:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "visibility": "internal" - } - ], - "id": 1391, - "nodeType": "VariableDeclarationStatement", - "src": "6587:43:5" - }, - { - "assignments": [ - 1393 - ], - "declarations": [ - { - "constant": false, - "id": 1393, - "mutability": "mutable", - "name": "secondsPerLiquidityOutsideUpperX128", - "nodeType": "VariableDeclaration", - "scope": 1542, - "src": "6640:43:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "typeName": { - "id": 1392, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "6640:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "visibility": "internal" - } - ], - "id": 1394, - "nodeType": "VariableDeclarationStatement", - "src": "6640:43:5" - }, - { - "assignments": [ - 1396 - ], - "declarations": [ - { - "constant": false, - "id": 1396, - "mutability": "mutable", - "name": "secondsOutsideLower", - "nodeType": "VariableDeclaration", - "scope": 1542, - "src": "6693:26:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 1395, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "6693:6:5", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "visibility": "internal" - } - ], - "id": 1397, - "nodeType": "VariableDeclarationStatement", - "src": "6693:26:5" - }, - { - "assignments": [ - 1399 - ], - "declarations": [ - { - "constant": false, - "id": 1399, - "mutability": "mutable", - "name": "secondsOutsideUpper", - "nodeType": "VariableDeclaration", - "scope": 1542, - "src": "6729:26:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 1398, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "6729:6:5", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "visibility": "internal" - } - ], - "id": 1400, - "nodeType": "VariableDeclarationStatement", - "src": "6729:26:5" - }, - { - "id": 1463, - "nodeType": "Block", - "src": "6766:872:5", - "statements": [ - { - "assignments": [ - 1404 - ], - "declarations": [ - { - "constant": false, - "id": 1404, - "mutability": "mutable", - "name": "lower", - "nodeType": "VariableDeclaration", - "scope": 1463, - "src": "6780:23:5", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$6654_storage_ptr", - "typeString": "struct Tick.Info" - }, - "typeName": { - "id": 1403, - "name": "Tick.Info", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 6654, - "src": "6780:9:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$6654_storage_ptr", - "typeString": "struct Tick.Info" - } - }, - "visibility": "internal" - } - ], - "id": 1408, - "initialValue": { - "baseExpression": { - "id": 1405, - "name": "ticks", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1143, - "src": "6806:5:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Info_$6654_storage_$", - "typeString": "mapping(int24 => struct Tick.Info storage ref)" - } - }, - "id": 1407, - "indexExpression": { - "id": 1406, - "name": "tickLower", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1364, - "src": "6812:9:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "6806:16:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$6654_storage", - "typeString": "struct Tick.Info storage ref" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "6780:42:5" - }, - { - "assignments": [ - 1412 - ], - "declarations": [ - { - "constant": false, - "id": 1412, - "mutability": "mutable", - "name": "upper", - "nodeType": "VariableDeclaration", - "scope": 1463, - "src": "6836:23:5", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$6654_storage_ptr", - "typeString": "struct Tick.Info" - }, - "typeName": { - "id": 1411, - "name": "Tick.Info", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 6654, - "src": "6836:9:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$6654_storage_ptr", - "typeString": "struct Tick.Info" - } - }, - "visibility": "internal" - } - ], - "id": 1416, - "initialValue": { - "baseExpression": { - "id": 1413, - "name": "ticks", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1143, - "src": "6862:5:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Info_$6654_storage_$", - "typeString": "mapping(int24 => struct Tick.Info storage ref)" - } - }, - "id": 1415, - "indexExpression": { - "id": 1414, - "name": "tickUpper", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1366, - "src": "6868:9:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "6862:16:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$6654_storage", - "typeString": "struct Tick.Info storage ref" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "6836:42:5" - }, - { - "assignments": [ - 1418 - ], - "declarations": [ - { - "constant": false, - "id": 1418, - "mutability": "mutable", - "name": "initializedLower", - "nodeType": "VariableDeclaration", - "scope": 1463, - "src": "6892:21:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1417, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "6892:4:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "id": 1419, - "nodeType": "VariableDeclarationStatement", - "src": "6892:21:5" - }, - { - "expression": { - "id": 1434, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "components": [ - { - "id": 1420, - "name": "tickCumulativeLower", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1384, - "src": "6928:19:5", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - } - }, - { - "id": 1421, - "name": "secondsPerLiquidityOutsideLowerX128", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1390, - "src": "6949:35:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - { - "id": 1422, - "name": "secondsOutsideLower", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1396, - "src": "6986:19:5", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - { - "id": 1423, - "name": "initializedLower", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1418, - "src": "7007:16:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "id": 1424, - "isConstant": false, - "isInlineArray": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "TupleExpression", - "src": "6927:97:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_int56_$_t_uint160_$_t_uint32_$_t_bool_$", - "typeString": "tuple(int56,uint160,uint32,bool)" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "components": [ - { - "expression": { - "id": 1425, - "name": "lower", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1404, - "src": "7045:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$6654_storage_ptr", - "typeString": "struct Tick.Info storage pointer" - } - }, - "id": 1426, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "tickCumulativeOutside", - "nodeType": "MemberAccess", - "referencedDeclaration": 6647, - "src": "7045:27:5", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - } - }, - { - "expression": { - "id": 1427, - "name": "lower", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1404, - "src": "7090:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$6654_storage_ptr", - "typeString": "struct Tick.Info storage pointer" - } - }, - "id": 1428, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "secondsPerLiquidityOutsideX128", - "nodeType": "MemberAccess", - "referencedDeclaration": 6649, - "src": "7090:36:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - { - "expression": { - "id": 1429, - "name": "lower", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1404, - "src": "7144:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$6654_storage_ptr", - "typeString": "struct Tick.Info storage pointer" - } - }, - "id": 1430, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "secondsOutside", - "nodeType": "MemberAccess", - "referencedDeclaration": 6651, - "src": "7144:20:5", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - { - "expression": { - "id": 1431, - "name": "lower", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1404, - "src": "7182:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$6654_storage_ptr", - "typeString": "struct Tick.Info storage pointer" - } - }, - "id": 1432, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "initialized", - "nodeType": "MemberAccess", - "referencedDeclaration": 6653, - "src": "7182:17:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "id": 1433, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "7027:186:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_int56_$_t_uint160_$_t_uint32_$_t_bool_$", - "typeString": "tuple(int56,uint160,uint32,bool)" - } - }, - "src": "6927:286:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1435, - "nodeType": "ExpressionStatement", - "src": "6927:286:5" - }, - { - "expression": { - "arguments": [ - { - "id": 1437, - "name": "initializedLower", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1418, - "src": "7235:16:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1436, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "7227:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1438, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7227:25:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1439, - "nodeType": "ExpressionStatement", - "src": "7227:25:5" - }, - { - "assignments": [ - 1441 - ], - "declarations": [ - { - "constant": false, - "id": 1441, - "mutability": "mutable", - "name": "initializedUpper", - "nodeType": "VariableDeclaration", - "scope": 1463, - "src": "7267:21:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1440, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "7267:4:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "id": 1442, - "nodeType": "VariableDeclarationStatement", - "src": "7267:21:5" - }, - { - "expression": { - "id": 1457, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "components": [ - { - "id": 1443, - "name": "tickCumulativeUpper", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1387, - "src": "7303:19:5", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - } - }, - { - "id": 1444, - "name": "secondsPerLiquidityOutsideUpperX128", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1393, - "src": "7324:35:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - { - "id": 1445, - "name": "secondsOutsideUpper", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1399, - "src": "7361:19:5", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - { - "id": 1446, - "name": "initializedUpper", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1441, - "src": "7382:16:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "id": 1447, - "isConstant": false, - "isInlineArray": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "TupleExpression", - "src": "7302:97:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_int56_$_t_uint160_$_t_uint32_$_t_bool_$", - "typeString": "tuple(int56,uint160,uint32,bool)" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "components": [ - { - "expression": { - "id": 1448, - "name": "upper", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1412, - "src": "7420:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$6654_storage_ptr", - "typeString": "struct Tick.Info storage pointer" - } - }, - "id": 1449, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "tickCumulativeOutside", - "nodeType": "MemberAccess", - "referencedDeclaration": 6647, - "src": "7420:27:5", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - } - }, - { - "expression": { - "id": 1450, - "name": "upper", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1412, - "src": "7465:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$6654_storage_ptr", - "typeString": "struct Tick.Info storage pointer" - } - }, - "id": 1451, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "secondsPerLiquidityOutsideX128", - "nodeType": "MemberAccess", - "referencedDeclaration": 6649, - "src": "7465:36:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - { - "expression": { - "id": 1452, - "name": "upper", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1412, - "src": "7519:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$6654_storage_ptr", - "typeString": "struct Tick.Info storage pointer" - } - }, - "id": 1453, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "secondsOutside", - "nodeType": "MemberAccess", - "referencedDeclaration": 6651, - "src": "7519:20:5", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - { - "expression": { - "id": 1454, - "name": "upper", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1412, - "src": "7557:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$6654_storage_ptr", - "typeString": "struct Tick.Info storage pointer" - } - }, - "id": 1455, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "initialized", - "nodeType": "MemberAccess", - "referencedDeclaration": 6653, - "src": "7557:17:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "id": 1456, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "7402:186:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_int56_$_t_uint160_$_t_uint32_$_t_bool_$", - "typeString": "tuple(int56,uint160,uint32,bool)" - } - }, - "src": "7302:286:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1458, - "nodeType": "ExpressionStatement", - "src": "7302:286:5" - }, - { - "expression": { - "arguments": [ - { - "id": 1460, - "name": "initializedUpper", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1441, - "src": "7610:16:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1459, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "7602:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1461, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7602:25:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1462, - "nodeType": "ExpressionStatement", - "src": "7602:25:5" - } - ] - }, - { - "assignments": [ - 1465 - ], - "declarations": [ - { - "constant": false, - "id": 1465, - "mutability": "mutable", - "name": "_slot0", - "nodeType": "VariableDeclaration", - "scope": 1542, - "src": "7648:19:5", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Slot0_$1112_memory_ptr", - "typeString": "struct UniswapV3Pool.Slot0" - }, - "typeName": { - "id": 1464, - "name": "Slot0", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1112, - "src": "7648:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Slot0_$1112_storage_ptr", - "typeString": "struct UniswapV3Pool.Slot0" - } - }, - "visibility": "internal" - } - ], - "id": 1467, - "initialValue": { - "id": 1466, - "name": "slot0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1116, - "src": "7670:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Slot0_$1112_storage", - "typeString": "struct UniswapV3Pool.Slot0 storage ref" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "7648:27:5" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "id": 1471, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 1468, - "name": "_slot0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1465, - "src": "7690:6:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Slot0_$1112_memory_ptr", - "typeString": "struct UniswapV3Pool.Slot0 memory" - } - }, - "id": 1469, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "tick", - "nodeType": "MemberAccess", - "referencedDeclaration": 1101, - "src": "7690:11:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "id": 1470, - "name": "tickLower", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1364, - "src": "7704:9:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "src": "7690:23:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "condition": { - "commonType": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "id": 1487, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 1484, - "name": "_slot0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1465, - "src": "7980:6:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Slot0_$1112_memory_ptr", - "typeString": "struct UniswapV3Pool.Slot0 memory" - } - }, - "id": 1485, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "tick", - "nodeType": "MemberAccess", - "referencedDeclaration": 1101, - "src": "7980:11:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "id": 1486, - "name": "tickUpper", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1366, - "src": "7994:9:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "src": "7980:23:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 1539, - "nodeType": "Block", - "src": "8762:255:5", - "statements": [ - { - "expression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_int56", - "typeString": "int56" - }, - "id": 1530, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 1528, - "name": "tickCumulativeUpper", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1387, - "src": "8801:19:5", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "id": 1529, - "name": "tickCumulativeLower", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1384, - "src": "8823:19:5", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - } - }, - "src": "8801:41:5", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - } - }, - { - "commonType": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "id": 1533, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 1531, - "name": "secondsPerLiquidityOutsideUpperX128", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1393, - "src": "8860:35:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "id": 1532, - "name": "secondsPerLiquidityOutsideLowerX128", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1390, - "src": "8898:35:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "src": "8860:73:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - { - "commonType": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "id": 1536, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 1534, - "name": "secondsOutsideUpper", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1399, - "src": "8951:19:5", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "id": 1535, - "name": "secondsOutsideLower", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1396, - "src": "8973:19:5", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "src": "8951:41:5", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - } - ], - "id": 1537, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "8783:223:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_int56_$_t_uint160_$_t_uint32_$", - "typeString": "tuple(int56,uint160,uint32)" - } - }, - "functionReturnParameters": 1377, - "id": 1538, - "nodeType": "Return", - "src": "8776:230:5" - } - ] - }, - "id": 1540, - "nodeType": "IfStatement", - "src": "7976:1041:5", - "trueBody": { - "id": 1527, - "nodeType": "Block", - "src": "8005:751:5", - "statements": [ - { - "assignments": [ - 1489 - ], - "declarations": [ - { - "constant": false, - "id": 1489, - "mutability": "mutable", - "name": "time", - "nodeType": "VariableDeclaration", - "scope": 1527, - "src": "8019:11:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 1488, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "8019:6:5", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "visibility": "internal" - } - ], - "id": 1492, - "initialValue": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 1490, - "name": "_blockTimestamp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1277, - "src": "8033:15:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_uint32_$", - "typeString": "function () view returns (uint32)" - } - }, - "id": 1491, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8033:17:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "8019:31:5" - }, - { - "assignments": [ - 1494, - 1496 - ], - "declarations": [ - { - "constant": false, - "id": 1494, - "mutability": "mutable", - "name": "tickCumulative", - "nodeType": "VariableDeclaration", - "scope": 1527, - "src": "8065:20:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - }, - "typeName": { - "id": 1493, - "name": "int56", - "nodeType": "ElementaryTypeName", - "src": "8065:5:5", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1496, - "mutability": "mutable", - "name": "secondsPerLiquidityCumulativeX128", - "nodeType": "VariableDeclaration", - "scope": 1527, - "src": "8087:41:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "typeName": { - "id": 1495, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "8087:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "visibility": "internal" - } - ], - "id": 1509, - "initialValue": { - "arguments": [ - { - "id": 1499, - "name": "time", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1489, - "src": "8196:4:5", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - { - "hexValue": "30", - "id": 1500, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8222:1:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - { - "expression": { - "id": 1501, - "name": "_slot0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1465, - "src": "8245:6:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Slot0_$1112_memory_ptr", - "typeString": "struct UniswapV3Pool.Slot0 memory" - } - }, - "id": 1502, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "tick", - "nodeType": "MemberAccess", - "referencedDeclaration": 1101, - "src": "8245:11:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - { - "expression": { - "id": 1503, - "name": "_slot0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1465, - "src": "8278:6:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Slot0_$1112_memory_ptr", - "typeString": "struct UniswapV3Pool.Slot0 memory" - } - }, - "id": 1504, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "observationIndex", - "nodeType": "MemberAccess", - "referencedDeclaration": 1103, - "src": "8278:23:5", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - { - "id": 1505, - "name": "liquidity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1137, - "src": "8323:9:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - { - "expression": { - "id": 1506, - "name": "_slot0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1465, - "src": "8354:6:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Slot0_$1112_memory_ptr", - "typeString": "struct UniswapV3Pool.Slot0 memory" - } - }, - "id": 1507, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "observationCardinality", - "nodeType": "MemberAccess", - "referencedDeclaration": 1105, - "src": "8354:29:5", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - ], - "expression": { - "id": 1497, - "name": "observations", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1161, - "src": "8148:12:5", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Observation_$4881_storage_$65535_storage", - "typeString": "struct Oracle.Observation storage ref[65535] storage ref" - } - }, - "id": 1498, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "observeSingle", - "nodeType": "MemberAccess", - "referencedDeclaration": 5517, - "src": "8148:26:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_array$_t_struct$_Observation_$4881_storage_$65535_storage_ptr_$_t_uint32_$_t_uint32_$_t_int24_$_t_uint16_$_t_uint128_$_t_uint16_$returns$_t_int56_$_t_uint160_$bound_to$_t_array$_t_struct$_Observation_$4881_storage_$65535_storage_ptr_$", - "typeString": "function (struct Oracle.Observation storage ref[65535] storage pointer,uint32,uint32,int24,uint16,uint128,uint16) view returns (int56,uint160)" - } - }, - "id": 1508, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8148:253:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_int56_$_t_uint160_$", - "typeString": "tuple(int56,uint160)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "8064:337:5" - }, - { - "expression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_int56", - "typeString": "int56" - }, - "id": 1514, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_int56", - "typeString": "int56" - }, - "id": 1512, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 1510, - "name": "tickCumulative", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1494, - "src": "8440:14:5", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "id": 1511, - "name": "tickCumulativeLower", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1384, - "src": "8457:19:5", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - } - }, - "src": "8440:36:5", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "id": 1513, - "name": "tickCumulativeUpper", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1387, - "src": "8479:19:5", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - } - }, - "src": "8440:58:5", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - } - }, - { - "commonType": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "id": 1519, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "id": 1517, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 1515, - "name": "secondsPerLiquidityCumulativeX128", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1496, - "src": "8516:33:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "id": 1516, - "name": "secondsPerLiquidityOutsideLowerX128", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1390, - "src": "8572:35:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "src": "8516:91:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "id": 1518, - "name": "secondsPerLiquidityOutsideUpperX128", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1393, - "src": "8630:35:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "src": "8516:149:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - { - "commonType": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "id": 1524, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "id": 1522, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 1520, - "name": "time", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1489, - "src": "8683:4:5", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "id": 1521, - "name": "secondsOutsideLower", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1396, - "src": "8690:19:5", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "src": "8683:26:5", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "id": 1523, - "name": "secondsOutsideUpper", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1399, - "src": "8712:19:5", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "src": "8683:48:5", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - } - ], - "id": 1525, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "8422:323:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_int56_$_t_uint160_$_t_uint32_$", - "typeString": "tuple(int56,uint160,uint32)" - } - }, - "functionReturnParameters": 1377, - "id": 1526, - "nodeType": "Return", - "src": "8415:330:5" - } - ] - } - }, - "id": 1541, - "nodeType": "IfStatement", - "src": "7686:1331:5", - "trueBody": { - "id": 1483, - "nodeType": "Block", - "src": "7715:255:5", - "statements": [ - { - "expression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_int56", - "typeString": "int56" - }, - "id": 1474, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 1472, - "name": "tickCumulativeLower", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1384, - "src": "7754:19:5", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "id": 1473, - "name": "tickCumulativeUpper", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1387, - "src": "7776:19:5", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - } - }, - "src": "7754:41:5", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - } - }, - { - "commonType": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "id": 1477, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 1475, - "name": "secondsPerLiquidityOutsideLowerX128", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1390, - "src": "7813:35:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "id": 1476, - "name": "secondsPerLiquidityOutsideUpperX128", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1393, - "src": "7851:35:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "src": "7813:73:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - { - "commonType": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "id": 1480, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 1478, - "name": "secondsOutsideLower", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1396, - "src": "7904:19:5", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "id": 1479, - "name": "secondsOutsideUpper", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1399, - "src": "7926:19:5", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "src": "7904:41:5", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - } - ], - "id": 1481, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "7736:223:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_int56_$_t_uint160_$_t_uint32_$", - "typeString": "tuple(int56,uint160,uint32)" - } - }, - "functionReturnParameters": 1377, - "id": 1482, - "nodeType": "Return", - "src": "7729:230:5" - } - ] - } - } - ] - }, - "documentation": { - "id": 1362, - "nodeType": "StructuredDocumentation", - "src": "6122:42:5", - "text": "@inheritdoc IUniswapV3PoolDerivedState" - }, - "functionSelector": "a38807f2", - "id": 1543, - "implemented": true, - "kind": "function", - "modifiers": [ - { - "id": 1370, - "modifierName": { - "id": 1369, - "name": "noDelegateCall", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 735, - "src": "6293:14:5", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "6293:14:5" - } - ], - "name": "snapshotCumulativesInside", - "nodeType": "FunctionDefinition", - "overrides": { - "id": 1368, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "6276:8:5" - }, - "parameters": { - "id": 1367, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1364, - "mutability": "mutable", - "name": "tickLower", - "nodeType": "VariableDeclaration", - "scope": 1543, - "src": "6204:15:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 1363, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "6204:5:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1366, - "mutability": "mutable", - "name": "tickUpper", - "nodeType": "VariableDeclaration", - "scope": 1543, - "src": "6221:15:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 1365, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "6221:5:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - } - ], - "src": "6203:34:5" - }, - "returnParameters": { - "id": 1377, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1372, - "mutability": "mutable", - "name": "tickCumulativeInside", - "nodeType": "VariableDeclaration", - "scope": 1543, - "src": "6338:26:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - }, - "typeName": { - "id": 1371, - "name": "int56", - "nodeType": "ElementaryTypeName", - "src": "6338:5:5", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1374, - "mutability": "mutable", - "name": "secondsPerLiquidityInsideX128", - "nodeType": "VariableDeclaration", - "scope": 1543, - "src": "6378:37:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "typeName": { - "id": 1373, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "6378:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1376, - "mutability": "mutable", - "name": "secondsInside", - "nodeType": "VariableDeclaration", - "scope": 1543, - "src": "6429:20:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 1375, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "6429:6:5", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "visibility": "internal" - } - ], - "src": "6324:135:5" - }, - "scope": 3491, - "src": "6169:2854:5", - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "baseFunctions": [ - 3910 - ], - "body": { - "id": 1573, - "nodeType": "Block", - "src": "9300:275:5", - "statements": [ - { - "expression": { - "arguments": [ - { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 1561, - "name": "_blockTimestamp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1277, - "src": "9367:15:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_uint32_$", - "typeString": "function () view returns (uint32)" - } - }, - "id": 1562, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9367:17:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - { - "id": 1563, - "name": "secondsAgos", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1547, - "src": "9402:11:5", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint32_$dyn_calldata_ptr", - "typeString": "uint32[] calldata" - } - }, - { - "expression": { - "id": 1564, - "name": "slot0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1116, - "src": "9431:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Slot0_$1112_storage", - "typeString": "struct UniswapV3Pool.Slot0 storage ref" - } - }, - "id": 1565, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "tick", - "nodeType": "MemberAccess", - "referencedDeclaration": 1101, - "src": "9431:10:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - { - "expression": { - "id": 1566, - "name": "slot0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1116, - "src": "9459:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Slot0_$1112_storage", - "typeString": "struct UniswapV3Pool.Slot0 storage ref" - } - }, - "id": 1567, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "observationIndex", - "nodeType": "MemberAccess", - "referencedDeclaration": 1103, - "src": "9459:22:5", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - { - "id": 1568, - "name": "liquidity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1137, - "src": "9499:9:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - { - "expression": { - "id": 1569, - "name": "slot0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1116, - "src": "9526:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Slot0_$1112_storage", - "typeString": "struct UniswapV3Pool.Slot0 storage ref" - } - }, - "id": 1570, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "observationCardinality", - "nodeType": "MemberAccess", - "referencedDeclaration": 1105, - "src": "9526:28:5", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - { - "typeIdentifier": "t_array$_t_uint32_$dyn_calldata_ptr", - "typeString": "uint32[] calldata" - }, - { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - ], - "expression": { - "id": 1559, - "name": "observations", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1161, - "src": "9329:12:5", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Observation_$4881_storage_$65535_storage", - "typeString": "struct Oracle.Observation storage ref[65535] storage ref" - } - }, - "id": 1560, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "observe", - "nodeType": "MemberAccess", - "referencedDeclaration": 5603, - "src": "9329:20:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_array$_t_struct$_Observation_$4881_storage_$65535_storage_ptr_$_t_uint32_$_t_array$_t_uint32_$dyn_memory_ptr_$_t_int24_$_t_uint16_$_t_uint128_$_t_uint16_$returns$_t_array$_t_int56_$dyn_memory_ptr_$_t_array$_t_uint160_$dyn_memory_ptr_$bound_to$_t_array$_t_struct$_Observation_$4881_storage_$65535_storage_ptr_$", - "typeString": "function (struct Oracle.Observation storage ref[65535] storage pointer,uint32,uint32[] memory,int24,uint16,uint128,uint16) view returns (int56[] memory,uint160[] memory)" - } - }, - "id": 1571, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9329:239:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_array$_t_int56_$dyn_memory_ptr_$_t_array$_t_uint160_$dyn_memory_ptr_$", - "typeString": "tuple(int56[] memory,uint160[] memory)" - } - }, - "functionReturnParameters": 1558, - "id": 1572, - "nodeType": "Return", - "src": "9310:258:5" - } - ] - }, - "documentation": { - "id": 1544, - "nodeType": "StructuredDocumentation", - "src": "9029:42:5", - "text": "@inheritdoc IUniswapV3PoolDerivedState" - }, - "functionSelector": "883bdbfd", - "id": 1574, - "implemented": true, - "kind": "function", - "modifiers": [ - { - "id": 1551, - "modifierName": { - "id": 1550, - "name": "noDelegateCall", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 735, - "src": "9179:14:5", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "9179:14:5" - } - ], - "name": "observe", - "nodeType": "FunctionDefinition", - "overrides": { - "id": 1549, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "9162:8:5" - }, - "parameters": { - "id": 1548, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1547, - "mutability": "mutable", - "name": "secondsAgos", - "nodeType": "VariableDeclaration", - "scope": 1574, - "src": "9093:29:5", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint32_$dyn_calldata_ptr", - "typeString": "uint32[]" - }, - "typeName": { - "baseType": { - "id": 1545, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "9093:6:5", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "id": 1546, - "nodeType": "ArrayTypeName", - "src": "9093:8:5", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint32_$dyn_storage_ptr", - "typeString": "uint32[]" - } - }, - "visibility": "internal" - } - ], - "src": "9092:31:5" - }, - "returnParameters": { - "id": 1558, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1554, - "mutability": "mutable", - "name": "tickCumulatives", - "nodeType": "VariableDeclaration", - "scope": 1574, - "src": "9211:30:5", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_int56_$dyn_memory_ptr", - "typeString": "int56[]" - }, - "typeName": { - "baseType": { - "id": 1552, - "name": "int56", - "nodeType": "ElementaryTypeName", - "src": "9211:5:5", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - } - }, - "id": 1553, - "nodeType": "ArrayTypeName", - "src": "9211:7:5", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_int56_$dyn_storage_ptr", - "typeString": "int56[]" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1557, - "mutability": "mutable", - "name": "secondsPerLiquidityCumulativeX128s", - "nodeType": "VariableDeclaration", - "scope": 1574, - "src": "9243:51:5", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint160_$dyn_memory_ptr", - "typeString": "uint160[]" - }, - "typeName": { - "baseType": { - "id": 1555, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "9243:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "id": 1556, - "nodeType": "ArrayTypeName", - "src": "9243:9:5", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint160_$dyn_storage_ptr", - "typeString": "uint160[]" - } - }, - "visibility": "internal" - } - ], - "src": "9210:85:5" - }, - "scope": 3491, - "src": "9076:499:5", - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "baseFunctions": [ - 3893 - ], - "body": { - "id": 1613, - "nodeType": "Block", - "src": "9776:507:5", - "statements": [ - { - "assignments": [ - 1586 - ], - "declarations": [ - { - "constant": false, - "id": 1586, - "mutability": "mutable", - "name": "observationCardinalityNextOld", - "nodeType": "VariableDeclaration", - "scope": 1613, - "src": "9786:36:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - "typeName": { - "id": 1585, - "name": "uint16", - "nodeType": "ElementaryTypeName", - "src": "9786:6:5", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "visibility": "internal" - } - ], - "id": 1589, - "initialValue": { - "expression": { - "id": 1587, - "name": "slot0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1116, - "src": "9825:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Slot0_$1112_storage", - "typeString": "struct UniswapV3Pool.Slot0 storage ref" - } - }, - "id": 1588, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "observationCardinalityNext", - "nodeType": "MemberAccess", - "referencedDeclaration": 1107, - "src": "9825:32:5", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "9786:71:5" - }, - { - "assignments": [ - 1591 - ], - "declarations": [ - { - "constant": false, - "id": 1591, - "mutability": "mutable", - "name": "observationCardinalityNextNew", - "nodeType": "VariableDeclaration", - "scope": 1613, - "src": "9884:36:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - "typeName": { - "id": 1590, - "name": "uint16", - "nodeType": "ElementaryTypeName", - "src": "9884:6:5", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "visibility": "internal" - } - ], - "id": 1597, - "initialValue": { - "arguments": [ - { - "id": 1594, - "name": "observationCardinalityNextOld", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1586, - "src": "9953:29:5", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - { - "id": 1595, - "name": "observationCardinalityNext", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1577, - "src": "9984:26:5", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - ], - "expression": { - "id": 1592, - "name": "observations", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1161, - "src": "9935:12:5", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Observation_$4881_storage_$65535_storage", - "typeString": "struct Oracle.Observation storage ref[65535] storage ref" - } - }, - "id": 1593, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "grow", - "nodeType": "MemberAccess", - "referencedDeclaration": 5095, - "src": "9935:17:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_struct$_Observation_$4881_storage_$65535_storage_ptr_$_t_uint16_$_t_uint16_$returns$_t_uint16_$bound_to$_t_array$_t_struct$_Observation_$4881_storage_$65535_storage_ptr_$", - "typeString": "function (struct Oracle.Observation storage ref[65535] storage pointer,uint16,uint16) returns (uint16)" - } - }, - "id": 1596, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9935:76:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "9884:127:5" - }, - { - "expression": { - "id": 1602, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 1598, - "name": "slot0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1116, - "src": "10021:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Slot0_$1112_storage", - "typeString": "struct UniswapV3Pool.Slot0 storage ref" - } - }, - "id": 1600, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "observationCardinalityNext", - "nodeType": "MemberAccess", - "referencedDeclaration": 1107, - "src": "10021:32:5", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 1601, - "name": "observationCardinalityNextNew", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1591, - "src": "10056:29:5", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "src": "10021:64:5", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "id": 1603, - "nodeType": "ExpressionStatement", - "src": "10021:64:5" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - "id": 1606, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 1604, - "name": "observationCardinalityNextOld", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1586, - "src": "10099:29:5", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "id": 1605, - "name": "observationCardinalityNextNew", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1591, - "src": "10132:29:5", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "src": "10099:62:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1612, - "nodeType": "IfStatement", - "src": "10095:181:5", - "trueBody": { - "eventCall": { - "arguments": [ - { - "id": 1608, - "name": "observationCardinalityNextOld", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1586, - "src": "10215:29:5", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - { - "id": 1609, - "name": "observationCardinalityNextNew", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1591, - "src": "10246:29:5", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - ], - "id": 1607, - "name": "IncreaseObservationCardinalityNext", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4021, - "src": "10180:34:5", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_uint16_$_t_uint16_$returns$__$", - "typeString": "function (uint16,uint16)" - } - }, - "id": 1610, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10180:96:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1611, - "nodeType": "EmitStatement", - "src": "10175:101:5" - } - } - ] - }, - "documentation": { - "id": 1575, - "nodeType": "StructuredDocumentation", - "src": "9581:37:5", - "text": "@inheritdoc IUniswapV3PoolActions" - }, - "functionSelector": "32148f67", - "id": 1614, - "implemented": true, - "kind": "function", - "modifiers": [ - { - "id": 1581, - "modifierName": { - "id": 1580, - "name": "lock", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1184, - "src": "9744:4:5", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "9744:4:5" - }, - { - "id": 1583, - "modifierName": { - "id": 1582, - "name": "noDelegateCall", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 735, - "src": "9757:14:5", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "9757:14:5" - } - ], - "name": "increaseObservationCardinalityNext", - "nodeType": "FunctionDefinition", - "overrides": { - "id": 1579, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "9727:8:5" - }, - "parameters": { - "id": 1578, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1577, - "mutability": "mutable", - "name": "observationCardinalityNext", - "nodeType": "VariableDeclaration", - "scope": 1614, - "src": "9667:33:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - "typeName": { - "id": 1576, - "name": "uint16", - "nodeType": "ElementaryTypeName", - "src": "9667:6:5", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "visibility": "internal" - } - ], - "src": "9666:35:5" - }, - "returnParameters": { - "id": 1584, - "nodeType": "ParameterList", - "parameters": [], - "src": "9776:0:5" - }, - "scope": 3491, - "src": "9623:660:5", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "baseFunctions": [ - 3807 - ], - "body": { - "id": 1663, - "nodeType": "Block", - "src": "10447:561:5", - "statements": [ - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "id": 1625, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 1622, - "name": "slot0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1116, - "src": "10465:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Slot0_$1112_storage", - "typeString": "struct UniswapV3Pool.Slot0 storage ref" - } - }, - "id": 1623, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "sqrtPriceX96", - "nodeType": "MemberAccess", - "referencedDeclaration": 1099, - "src": "10465:18:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 1624, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "10487:1:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "10465:23:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "4149", - "id": 1626, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "10490:4:5", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_78dda996de494b599fdb66c8365826df9b80d101d1cea931b5fa3753fca7ab85", - "typeString": "literal_string \"AI\"" - }, - "value": "AI" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_78dda996de494b599fdb66c8365826df9b80d101d1cea931b5fa3753fca7ab85", - "typeString": "literal_string \"AI\"" - } - ], - "id": 1621, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "10457:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 1627, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10457:38:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1628, - "nodeType": "ExpressionStatement", - "src": "10457:38:5" - }, - { - "assignments": [ - 1630 - ], - "declarations": [ - { - "constant": false, - "id": 1630, - "mutability": "mutable", - "name": "tick", - "nodeType": "VariableDeclaration", - "scope": 1663, - "src": "10506:10:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 1629, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "10506:5:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - } - ], - "id": 1635, - "initialValue": { - "arguments": [ - { - "id": 1633, - "name": "sqrtPriceX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1617, - "src": "10547:12:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - ], - "expression": { - "id": 1631, - "name": "TickMath", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7867, - "src": "10519:8:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_TickMath_$7867_$", - "typeString": "type(library TickMath)" - } - }, - "id": 1632, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "getTickAtSqrtRatio", - "nodeType": "MemberAccess", - "referencedDeclaration": 7866, - "src": "10519:27:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint160_$returns$_t_int24_$", - "typeString": "function (uint160) pure returns (int24)" - } - }, - "id": 1634, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10519:41:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "10506:54:5" - }, - { - "assignments": [ - 1637, - 1639 - ], - "declarations": [ - { - "constant": false, - "id": 1637, - "mutability": "mutable", - "name": "cardinality", - "nodeType": "VariableDeclaration", - "scope": 1663, - "src": "10572:18:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - "typeName": { - "id": 1636, - "name": "uint16", - "nodeType": "ElementaryTypeName", - "src": "10572:6:5", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1639, - "mutability": "mutable", - "name": "cardinalityNext", - "nodeType": "VariableDeclaration", - "scope": 1663, - "src": "10592:22:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - "typeName": { - "id": 1638, - "name": "uint16", - "nodeType": "ElementaryTypeName", - "src": "10592:6:5", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "visibility": "internal" - } - ], - "id": 1645, - "initialValue": { - "arguments": [ - { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 1642, - "name": "_blockTimestamp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1277, - "src": "10642:15:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_uint32_$", - "typeString": "function () view returns (uint32)" - } - }, - "id": 1643, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10642:17:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - ], - "expression": { - "id": 1640, - "name": "observations", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1161, - "src": "10618:12:5", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Observation_$4881_storage_$65535_storage", - "typeString": "struct Oracle.Observation storage ref[65535] storage ref" - } - }, - "id": 1641, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "initialize", - "nodeType": "MemberAccess", - "referencedDeclaration": 4966, - "src": "10618:23:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_struct$_Observation_$4881_storage_$65535_storage_ptr_$_t_uint32_$returns$_t_uint16_$_t_uint16_$bound_to$_t_array$_t_struct$_Observation_$4881_storage_$65535_storage_ptr_$", - "typeString": "function (struct Oracle.Observation storage ref[65535] storage pointer,uint32) returns (uint16,uint16)" - } - }, - "id": 1644, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10618:42:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint16_$_t_uint16_$", - "typeString": "tuple(uint16,uint16)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "10571:89:5" - }, - { - "expression": { - "id": 1656, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 1646, - "name": "slot0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1116, - "src": "10671:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Slot0_$1112_storage", - "typeString": "struct UniswapV3Pool.Slot0 storage ref" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 1648, - "name": "sqrtPriceX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1617, - "src": "10713:12:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - { - "id": 1649, - "name": "tick", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1630, - "src": "10745:4:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - { - "hexValue": "30", - "id": 1650, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "10781:1:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - { - "id": 1651, - "name": "cardinality", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1637, - "src": "10820:11:5", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - { - "id": 1652, - "name": "cardinalityNext", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1639, - "src": "10873:15:5", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - { - "hexValue": "30", - "id": 1653, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "10915:1:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - { - "hexValue": "74727565", - "id": 1654, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "10940:4:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1647, - "name": "Slot0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1112, - "src": "10679:5:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_Slot0_$1112_storage_ptr_$", - "typeString": "type(struct UniswapV3Pool.Slot0 storage pointer)" - } - }, - "id": 1655, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "structConstructorCall", - "lValueRequested": false, - "names": [ - "sqrtPriceX96", - "tick", - "observationIndex", - "observationCardinality", - "observationCardinalityNext", - "feeProtocol", - "unlocked" - ], - "nodeType": "FunctionCall", - "src": "10679:276:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_struct$_Slot0_$1112_memory_ptr", - "typeString": "struct UniswapV3Pool.Slot0 memory" - } - }, - "src": "10671:284:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Slot0_$1112_storage", - "typeString": "struct UniswapV3Pool.Slot0 storage ref" - } - }, - "id": 1657, - "nodeType": "ExpressionStatement", - "src": "10671:284:5" - }, - { - "eventCall": { - "arguments": [ - { - "id": 1659, - "name": "sqrtPriceX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1617, - "src": "10982:12:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - { - "id": 1660, - "name": "tick", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1630, - "src": "10996:4:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - ], - "id": 1658, - "name": "Initialize", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3935, - "src": "10971:10:5", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_uint160_$_t_int24_$returns$__$", - "typeString": "function (uint160,int24)" - } - }, - "id": 1661, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10971:30:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1662, - "nodeType": "EmitStatement", - "src": "10966:35:5" - } - ] - }, - "documentation": { - "id": 1615, - "nodeType": "StructuredDocumentation", - "src": "10289:93:5", - "text": "@inheritdoc IUniswapV3PoolActions\n @dev not locked because it initializes unlocked" - }, - "functionSelector": "f637731d", - "id": 1664, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "initialize", - "nodeType": "FunctionDefinition", - "overrides": { - "id": 1619, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "10438:8:5" - }, - "parameters": { - "id": 1618, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1617, - "mutability": "mutable", - "name": "sqrtPriceX96", - "nodeType": "VariableDeclaration", - "scope": 1664, - "src": "10407:20:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "typeName": { - "id": 1616, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "10407:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "visibility": "internal" - } - ], - "src": "10406:22:5" - }, - "returnParameters": { - "id": 1620, - "nodeType": "ParameterList", - "parameters": [], - "src": "10447:0:5" - }, - "scope": 3491, - "src": "10387:621:5", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "canonicalName": "UniswapV3Pool.ModifyPositionParams", - "id": 1673, - "members": [ - { - "constant": false, - "id": 1666, - "mutability": "mutable", - "name": "owner", - "nodeType": "VariableDeclaration", - "scope": 1673, - "src": "11098:13:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1665, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "11098:7:5", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1668, - "mutability": "mutable", - "name": "tickLower", - "nodeType": "VariableDeclaration", - "scope": 1673, - "src": "11173:15:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 1667, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "11173:5:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1670, - "mutability": "mutable", - "name": "tickUpper", - "nodeType": "VariableDeclaration", - "scope": 1673, - "src": "11198:15:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 1669, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "11198:5:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1672, - "mutability": "mutable", - "name": "liquidityDelta", - "nodeType": "VariableDeclaration", - "scope": 1673, - "src": "11258:21:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - }, - "typeName": { - "id": 1671, - "name": "int128", - "nodeType": "ElementaryTypeName", - "src": "11258:6:5", - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - }, - "visibility": "internal" - } - ], - "name": "ModifyPositionParams", - "nodeType": "StructDefinition", - "scope": 3491, - "src": "11014:272:5", - "visibility": "public" - }, - { - "body": { - "id": 1835, - "nodeType": "Block", - "src": "11988:2582:5", - "statements": [ - { - "expression": { - "arguments": [ - { - "expression": { - "id": 1688, - "name": "params", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1676, - "src": "12009:6:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ModifyPositionParams_$1673_memory_ptr", - "typeString": "struct UniswapV3Pool.ModifyPositionParams memory" - } - }, - "id": 1689, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "tickLower", - "nodeType": "MemberAccess", - "referencedDeclaration": 1668, - "src": "12009:16:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - { - "expression": { - "id": 1690, - "name": "params", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1676, - "src": "12027:6:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ModifyPositionParams_$1673_memory_ptr", - "typeString": "struct UniswapV3Pool.ModifyPositionParams memory" - } - }, - "id": 1691, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "tickUpper", - "nodeType": "MemberAccess", - "referencedDeclaration": 1670, - "src": "12027:16:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - ], - "id": 1687, - "name": "checkTicks", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1264, - "src": "11998:10:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_int24_$_t_int24_$returns$__$", - "typeString": "function (int24,int24) pure" - } - }, - "id": 1692, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11998:46:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1693, - "nodeType": "ExpressionStatement", - "src": "11998:46:5" - }, - { - "assignments": [ - 1695 - ], - "declarations": [ - { - "constant": false, - "id": 1695, - "mutability": "mutable", - "name": "_slot0", - "nodeType": "VariableDeclaration", - "scope": 1835, - "src": "12055:19:5", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Slot0_$1112_memory_ptr", - "typeString": "struct UniswapV3Pool.Slot0" - }, - "typeName": { - "id": 1694, - "name": "Slot0", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1112, - "src": "12055:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Slot0_$1112_storage_ptr", - "typeString": "struct UniswapV3Pool.Slot0" - } - }, - "visibility": "internal" - } - ], - "id": 1697, - "initialValue": { - "id": 1696, - "name": "slot0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1116, - "src": "12077:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Slot0_$1112_storage", - "typeString": "struct UniswapV3Pool.Slot0 storage ref" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "12055:27:5" - }, - { - "expression": { - "id": 1711, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 1698, - "name": "position", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1681, - "src": "12123:8:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$5621_storage_ptr", - "typeString": "struct Position.Info storage pointer" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "expression": { - "id": 1700, - "name": "params", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1676, - "src": "12163:6:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ModifyPositionParams_$1673_memory_ptr", - "typeString": "struct UniswapV3Pool.ModifyPositionParams memory" - } - }, - "id": 1701, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "owner", - "nodeType": "MemberAccess", - "referencedDeclaration": 1666, - "src": "12163:12:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "expression": { - "id": 1702, - "name": "params", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1676, - "src": "12189:6:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ModifyPositionParams_$1673_memory_ptr", - "typeString": "struct UniswapV3Pool.ModifyPositionParams memory" - } - }, - "id": 1703, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "tickLower", - "nodeType": "MemberAccess", - "referencedDeclaration": 1668, - "src": "12189:16:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - { - "expression": { - "id": 1704, - "name": "params", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1676, - "src": "12219:6:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ModifyPositionParams_$1673_memory_ptr", - "typeString": "struct UniswapV3Pool.ModifyPositionParams memory" - } - }, - "id": 1705, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "tickUpper", - "nodeType": "MemberAccess", - "referencedDeclaration": 1670, - "src": "12219:16:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - { - "expression": { - "id": 1706, - "name": "params", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1676, - "src": "12249:6:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ModifyPositionParams_$1673_memory_ptr", - "typeString": "struct UniswapV3Pool.ModifyPositionParams memory" - } - }, - "id": 1707, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "liquidityDelta", - "nodeType": "MemberAccess", - "referencedDeclaration": 1672, - "src": "12249:21:5", - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - }, - { - "expression": { - "id": 1708, - "name": "_slot0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1695, - "src": "12284:6:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Slot0_$1112_memory_ptr", - "typeString": "struct UniswapV3Pool.Slot0 memory" - } - }, - "id": 1709, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "tick", - "nodeType": "MemberAccess", - "referencedDeclaration": 1101, - "src": "12284:11:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - { - "typeIdentifier": "t_int128", - "typeString": "int128" - }, - { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - ], - "id": 1699, - "name": "_updatePosition", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1999, - "src": "12134:15:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_int24_$_t_int24_$_t_int128_$_t_int24_$returns$_t_struct$_Info_$5621_storage_ptr_$", - "typeString": "function (address,int24,int24,int128,int24) returns (struct Position.Info storage pointer)" - } - }, - "id": 1710, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "12134:171:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$5621_storage_ptr", - "typeString": "struct Position.Info storage pointer" - } - }, - "src": "12123:182:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$5621_storage_ptr", - "typeString": "struct Position.Info storage pointer" - } - }, - "id": 1712, - "nodeType": "ExpressionStatement", - "src": "12123:182:5" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_int128", - "typeString": "int128" - }, - "id": 1716, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 1713, - "name": "params", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1676, - "src": "12320:6:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ModifyPositionParams_$1673_memory_ptr", - "typeString": "struct UniswapV3Pool.ModifyPositionParams memory" - } - }, - "id": 1714, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "liquidityDelta", - "nodeType": "MemberAccess", - "referencedDeclaration": 1672, - "src": "12320:21:5", - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "hexValue": "30", - "id": 1715, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12345:1:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "12320:26:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1834, - "nodeType": "IfStatement", - "src": "12316:2248:5", - "trueBody": { - "id": 1833, - "nodeType": "Block", - "src": "12348:2216:5", - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "id": 1721, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 1717, - "name": "_slot0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1695, - "src": "12366:6:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Slot0_$1112_memory_ptr", - "typeString": "struct UniswapV3Pool.Slot0 memory" - } - }, - "id": 1718, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "tick", - "nodeType": "MemberAccess", - "referencedDeclaration": 1101, - "src": "12366:11:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "expression": { - "id": 1719, - "name": "params", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1676, - "src": "12380:6:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ModifyPositionParams_$1673_memory_ptr", - "typeString": "struct UniswapV3Pool.ModifyPositionParams memory" - } - }, - "id": 1720, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "tickLower", - "nodeType": "MemberAccess", - "referencedDeclaration": 1668, - "src": "12380:16:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "src": "12366:30:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "condition": { - "commonType": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "id": 1745, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 1741, - "name": "_slot0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1695, - "src": "12904:6:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Slot0_$1112_memory_ptr", - "typeString": "struct UniswapV3Pool.Slot0 memory" - } - }, - "id": 1742, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "tick", - "nodeType": "MemberAccess", - "referencedDeclaration": 1101, - "src": "12904:11:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "expression": { - "id": 1743, - "name": "params", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1676, - "src": "12918:6:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ModifyPositionParams_$1673_memory_ptr", - "typeString": "struct UniswapV3Pool.ModifyPositionParams memory" - } - }, - "id": 1744, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "tickUpper", - "nodeType": "MemberAccess", - "referencedDeclaration": 1670, - "src": "12918:16:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "src": "12904:30:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 1830, - "nodeType": "Block", - "src": "14058:496:5", - "statements": [ - { - "expression": { - "id": 1828, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 1812, - "name": "amount1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1685, - "src": "14305:7:5", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "arguments": [ - { - "expression": { - "id": 1817, - "name": "params", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1676, - "src": "14394:6:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ModifyPositionParams_$1673_memory_ptr", - "typeString": "struct UniswapV3Pool.ModifyPositionParams memory" - } - }, - "id": 1818, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "tickLower", - "nodeType": "MemberAccess", - "referencedDeclaration": 1668, - "src": "14394:16:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - ], - "expression": { - "id": 1815, - "name": "TickMath", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7867, - "src": "14366:8:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_TickMath_$7867_$", - "typeString": "type(library TickMath)" - } - }, - "id": 1816, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "getSqrtRatioAtTick", - "nodeType": "MemberAccess", - "referencedDeclaration": 7727, - "src": "14366:27:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_int24_$returns$_t_uint160_$", - "typeString": "function (int24) pure returns (uint160)" - } - }, - "id": 1819, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "14366:45:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - { - "arguments": [ - { - "expression": { - "id": 1822, - "name": "params", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1676, - "src": "14461:6:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ModifyPositionParams_$1673_memory_ptr", - "typeString": "struct UniswapV3Pool.ModifyPositionParams memory" - } - }, - "id": 1823, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "tickUpper", - "nodeType": "MemberAccess", - "referencedDeclaration": 1670, - "src": "14461:16:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - ], - "expression": { - "id": 1820, - "name": "TickMath", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7867, - "src": "14433:8:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_TickMath_$7867_$", - "typeString": "type(library TickMath)" - } - }, - "id": 1821, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "getSqrtRatioAtTick", - "nodeType": "MemberAccess", - "referencedDeclaration": 7727, - "src": "14433:27:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_int24_$returns$_t_uint160_$", - "typeString": "function (int24) pure returns (uint160)" - } - }, - "id": 1824, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "14433:45:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - { - "expression": { - "id": 1825, - "name": "params", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1676, - "src": "14500:6:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ModifyPositionParams_$1673_memory_ptr", - "typeString": "struct UniswapV3Pool.ModifyPositionParams memory" - } - }, - "id": 1826, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "liquidityDelta", - "nodeType": "MemberAccess", - "referencedDeclaration": 1672, - "src": "14500:21:5", - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - ], - "expression": { - "id": 1813, - "name": "SqrtPriceMath", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6363, - "src": "14315:13:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_SqrtPriceMath_$6363_$", - "typeString": "type(library SqrtPriceMath)" - } - }, - "id": 1814, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "getAmount1Delta", - "nodeType": "MemberAccess", - "referencedDeclaration": 6362, - "src": "14315:29:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint160_$_t_uint160_$_t_int128_$returns$_t_int256_$", - "typeString": "function (uint160,uint160,int128) pure returns (int256)" - } - }, - "id": 1827, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "14315:224:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "src": "14305:234:5", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "id": 1829, - "nodeType": "ExpressionStatement", - "src": "14305:234:5" - } - ] - }, - "id": 1831, - "nodeType": "IfStatement", - "src": "12900:1654:5", - "trueBody": { - "id": 1811, - "nodeType": "Block", - "src": "12936:1116:5", - "statements": [ - { - "assignments": [ - 1747 - ], - "declarations": [ - { - "constant": false, - "id": 1747, - "mutability": "mutable", - "name": "liquidityBefore", - "nodeType": "VariableDeclaration", - "scope": 1811, - "src": "13013:23:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "typeName": { - "id": 1746, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "13013:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "visibility": "internal" - } - ], - "id": 1749, - "initialValue": { - "id": 1748, - "name": "liquidity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1137, - "src": "13039:9:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "13013:35:5" - }, - { - "expression": { - "id": 1770, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "components": [ - { - "expression": { - "id": 1750, - "name": "slot0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1116, - "src": "13139:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Slot0_$1112_storage", - "typeString": "struct UniswapV3Pool.Slot0 storage ref" - } - }, - "id": 1752, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "observationIndex", - "nodeType": "MemberAccess", - "referencedDeclaration": 1103, - "src": "13139:22:5", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - { - "expression": { - "id": 1753, - "name": "slot0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1116, - "src": "13163:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Slot0_$1112_storage", - "typeString": "struct UniswapV3Pool.Slot0 storage ref" - } - }, - "id": 1754, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "observationCardinality", - "nodeType": "MemberAccess", - "referencedDeclaration": 1105, - "src": "13163:28:5", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - } - ], - "id": 1755, - "isConstant": false, - "isInlineArray": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "TupleExpression", - "src": "13138:54:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint16_$_t_uint16_$", - "typeString": "tuple(uint16,uint16)" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "expression": { - "id": 1758, - "name": "_slot0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1695, - "src": "13235:6:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Slot0_$1112_memory_ptr", - "typeString": "struct UniswapV3Pool.Slot0 memory" - } - }, - "id": 1759, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "observationIndex", - "nodeType": "MemberAccess", - "referencedDeclaration": 1103, - "src": "13235:23:5", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 1760, - "name": "_blockTimestamp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1277, - "src": "13280:15:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_uint32_$", - "typeString": "function () view returns (uint32)" - } - }, - "id": 1761, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "13280:17:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - { - "expression": { - "id": 1762, - "name": "_slot0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1695, - "src": "13319:6:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Slot0_$1112_memory_ptr", - "typeString": "struct UniswapV3Pool.Slot0 memory" - } - }, - "id": 1763, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "tick", - "nodeType": "MemberAccess", - "referencedDeclaration": 1101, - "src": "13319:11:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - { - "id": 1764, - "name": "liquidityBefore", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1747, - "src": "13352:15:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - { - "expression": { - "id": 1765, - "name": "_slot0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1695, - "src": "13389:6:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Slot0_$1112_memory_ptr", - "typeString": "struct UniswapV3Pool.Slot0 memory" - } - }, - "id": 1766, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "observationCardinality", - "nodeType": "MemberAccess", - "referencedDeclaration": 1105, - "src": "13389:29:5", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - { - "expression": { - "id": 1767, - "name": "_slot0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1695, - "src": "13440:6:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Slot0_$1112_memory_ptr", - "typeString": "struct UniswapV3Pool.Slot0 memory" - } - }, - "id": 1768, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "observationCardinalityNext", - "nodeType": "MemberAccess", - "referencedDeclaration": 1107, - "src": "13440:33:5", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - ], - "expression": { - "id": 1756, - "name": "observations", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1161, - "src": "13195:12:5", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Observation_$4881_storage_$65535_storage", - "typeString": "struct Oracle.Observation storage ref[65535] storage ref" - } - }, - "id": 1757, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "write", - "nodeType": "MemberAccess", - "referencedDeclaration": 5047, - "src": "13195:18:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_struct$_Observation_$4881_storage_$65535_storage_ptr_$_t_uint16_$_t_uint32_$_t_int24_$_t_uint128_$_t_uint16_$_t_uint16_$returns$_t_uint16_$_t_uint16_$bound_to$_t_array$_t_struct$_Observation_$4881_storage_$65535_storage_ptr_$", - "typeString": "function (struct Oracle.Observation storage ref[65535] storage pointer,uint16,uint32,int24,uint128,uint16,uint16) returns (uint16,uint16)" - } - }, - "id": 1769, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "13195:296:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint16_$_t_uint16_$", - "typeString": "tuple(uint16,uint16)" - } - }, - "src": "13138:353:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1771, - "nodeType": "ExpressionStatement", - "src": "13138:353:5" - }, - { - "expression": { - "id": 1785, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 1772, - "name": "amount0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1683, - "src": "13510:7:5", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "expression": { - "id": 1775, - "name": "_slot0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1695, - "src": "13571:6:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Slot0_$1112_memory_ptr", - "typeString": "struct UniswapV3Pool.Slot0 memory" - } - }, - "id": 1776, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "sqrtPriceX96", - "nodeType": "MemberAccess", - "referencedDeclaration": 1099, - "src": "13571:19:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - { - "arguments": [ - { - "expression": { - "id": 1779, - "name": "params", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1676, - "src": "13640:6:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ModifyPositionParams_$1673_memory_ptr", - "typeString": "struct UniswapV3Pool.ModifyPositionParams memory" - } - }, - "id": 1780, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "tickUpper", - "nodeType": "MemberAccess", - "referencedDeclaration": 1670, - "src": "13640:16:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - ], - "expression": { - "id": 1777, - "name": "TickMath", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7867, - "src": "13612:8:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_TickMath_$7867_$", - "typeString": "type(library TickMath)" - } - }, - "id": 1778, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "getSqrtRatioAtTick", - "nodeType": "MemberAccess", - "referencedDeclaration": 7727, - "src": "13612:27:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_int24_$returns$_t_uint160_$", - "typeString": "function (int24) pure returns (uint160)" - } - }, - "id": 1781, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "13612:45:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - { - "expression": { - "id": 1782, - "name": "params", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1676, - "src": "13679:6:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ModifyPositionParams_$1673_memory_ptr", - "typeString": "struct UniswapV3Pool.ModifyPositionParams memory" - } - }, - "id": 1783, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "liquidityDelta", - "nodeType": "MemberAccess", - "referencedDeclaration": 1672, - "src": "13679:21:5", - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - ], - "expression": { - "id": 1773, - "name": "SqrtPriceMath", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6363, - "src": "13520:13:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_SqrtPriceMath_$6363_$", - "typeString": "type(library SqrtPriceMath)" - } - }, - "id": 1774, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "getAmount0Delta", - "nodeType": "MemberAccess", - "referencedDeclaration": 6320, - "src": "13520:29:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint160_$_t_uint160_$_t_int128_$returns$_t_int256_$", - "typeString": "function (uint160,uint160,int128) pure returns (int256)" - } - }, - "id": 1784, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "13520:198:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "src": "13510:208:5", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "id": 1786, - "nodeType": "ExpressionStatement", - "src": "13510:208:5" - }, - { - "expression": { - "id": 1800, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 1787, - "name": "amount1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1685, - "src": "13736:7:5", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "arguments": [ - { - "expression": { - "id": 1792, - "name": "params", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1676, - "src": "13825:6:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ModifyPositionParams_$1673_memory_ptr", - "typeString": "struct UniswapV3Pool.ModifyPositionParams memory" - } - }, - "id": 1793, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "tickLower", - "nodeType": "MemberAccess", - "referencedDeclaration": 1668, - "src": "13825:16:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - ], - "expression": { - "id": 1790, - "name": "TickMath", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7867, - "src": "13797:8:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_TickMath_$7867_$", - "typeString": "type(library TickMath)" - } - }, - "id": 1791, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "getSqrtRatioAtTick", - "nodeType": "MemberAccess", - "referencedDeclaration": 7727, - "src": "13797:27:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_int24_$returns$_t_uint160_$", - "typeString": "function (int24) pure returns (uint160)" - } - }, - "id": 1794, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "13797:45:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - { - "expression": { - "id": 1795, - "name": "_slot0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1695, - "src": "13864:6:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Slot0_$1112_memory_ptr", - "typeString": "struct UniswapV3Pool.Slot0 memory" - } - }, - "id": 1796, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "sqrtPriceX96", - "nodeType": "MemberAccess", - "referencedDeclaration": 1099, - "src": "13864:19:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - { - "expression": { - "id": 1797, - "name": "params", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1676, - "src": "13905:6:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ModifyPositionParams_$1673_memory_ptr", - "typeString": "struct UniswapV3Pool.ModifyPositionParams memory" - } - }, - "id": 1798, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "liquidityDelta", - "nodeType": "MemberAccess", - "referencedDeclaration": 1672, - "src": "13905:21:5", - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - ], - "expression": { - "id": 1788, - "name": "SqrtPriceMath", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6363, - "src": "13746:13:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_SqrtPriceMath_$6363_$", - "typeString": "type(library SqrtPriceMath)" - } - }, - "id": 1789, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "getAmount1Delta", - "nodeType": "MemberAccess", - "referencedDeclaration": 6362, - "src": "13746:29:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint160_$_t_uint160_$_t_int128_$returns$_t_int256_$", - "typeString": "function (uint160,uint160,int128) pure returns (int256)" - } - }, - "id": 1799, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "13746:198:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "src": "13736:208:5", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "id": 1801, - "nodeType": "ExpressionStatement", - "src": "13736:208:5" - }, - { - "expression": { - "id": 1809, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 1802, - "name": "liquidity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1137, - "src": "13963:9:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 1805, - "name": "liquidityBefore", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1747, - "src": "13998:15:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - { - "expression": { - "id": 1806, - "name": "params", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1676, - "src": "14015:6:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ModifyPositionParams_$1673_memory_ptr", - "typeString": "struct UniswapV3Pool.ModifyPositionParams memory" - } - }, - "id": 1807, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "liquidityDelta", - "nodeType": "MemberAccess", - "referencedDeclaration": 1672, - "src": "14015:21:5", - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - ], - "expression": { - "id": 1803, - "name": "LiquidityMath", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4739, - "src": "13975:13:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_LiquidityMath_$4739_$", - "typeString": "type(library LiquidityMath)" - } - }, - "id": 1804, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "addDelta", - "nodeType": "MemberAccess", - "referencedDeclaration": 4738, - "src": "13975:22:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint128_$_t_int128_$returns$_t_uint128_$", - "typeString": "function (uint128,int128) pure returns (uint128)" - } - }, - "id": 1808, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "13975:62:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "src": "13963:74:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "id": 1810, - "nodeType": "ExpressionStatement", - "src": "13963:74:5" - } - ] - } - }, - "id": 1832, - "nodeType": "IfStatement", - "src": "12362:2192:5", - "trueBody": { - "id": 1740, - "nodeType": "Block", - "src": "12398:496:5", - "statements": [ - { - "expression": { - "id": 1738, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 1722, - "name": "amount0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1683, - "src": "12645:7:5", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "arguments": [ - { - "expression": { - "id": 1727, - "name": "params", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1676, - "src": "12734:6:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ModifyPositionParams_$1673_memory_ptr", - "typeString": "struct UniswapV3Pool.ModifyPositionParams memory" - } - }, - "id": 1728, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "tickLower", - "nodeType": "MemberAccess", - "referencedDeclaration": 1668, - "src": "12734:16:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - ], - "expression": { - "id": 1725, - "name": "TickMath", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7867, - "src": "12706:8:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_TickMath_$7867_$", - "typeString": "type(library TickMath)" - } - }, - "id": 1726, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "getSqrtRatioAtTick", - "nodeType": "MemberAccess", - "referencedDeclaration": 7727, - "src": "12706:27:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_int24_$returns$_t_uint160_$", - "typeString": "function (int24) pure returns (uint160)" - } - }, - "id": 1729, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "12706:45:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - { - "arguments": [ - { - "expression": { - "id": 1732, - "name": "params", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1676, - "src": "12801:6:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ModifyPositionParams_$1673_memory_ptr", - "typeString": "struct UniswapV3Pool.ModifyPositionParams memory" - } - }, - "id": 1733, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "tickUpper", - "nodeType": "MemberAccess", - "referencedDeclaration": 1670, - "src": "12801:16:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - ], - "expression": { - "id": 1730, - "name": "TickMath", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7867, - "src": "12773:8:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_TickMath_$7867_$", - "typeString": "type(library TickMath)" - } - }, - "id": 1731, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "getSqrtRatioAtTick", - "nodeType": "MemberAccess", - "referencedDeclaration": 7727, - "src": "12773:27:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_int24_$returns$_t_uint160_$", - "typeString": "function (int24) pure returns (uint160)" - } - }, - "id": 1734, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "12773:45:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - { - "expression": { - "id": 1735, - "name": "params", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1676, - "src": "12840:6:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ModifyPositionParams_$1673_memory_ptr", - "typeString": "struct UniswapV3Pool.ModifyPositionParams memory" - } - }, - "id": 1736, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "liquidityDelta", - "nodeType": "MemberAccess", - "referencedDeclaration": 1672, - "src": "12840:21:5", - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - ], - "expression": { - "id": 1723, - "name": "SqrtPriceMath", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6363, - "src": "12655:13:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_SqrtPriceMath_$6363_$", - "typeString": "type(library SqrtPriceMath)" - } - }, - "id": 1724, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "getAmount0Delta", - "nodeType": "MemberAccess", - "referencedDeclaration": 6320, - "src": "12655:29:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint160_$_t_uint160_$_t_int128_$returns$_t_int256_$", - "typeString": "function (uint160,uint160,int128) pure returns (int256)" - } - }, - "id": 1737, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "12655:224:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "src": "12645:234:5", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "id": 1739, - "nodeType": "ExpressionStatement", - "src": "12645:234:5" - } - ] - } - } - ] - } - } - ] - }, - "documentation": { - "id": 1674, - "nodeType": "StructuredDocumentation", - "src": "11292:460:5", - "text": "@dev Effect some changes to a position\n @param params the position details and the change to the position's liquidity to effect\n @return position a storage pointer referencing the position with the given owner and tick range\n @return amount0 the amount of token0 owed to the pool, negative if the pool should pay the recipient\n @return amount1 the amount of token1 owed to the pool, negative if the pool should pay the recipient" - }, - "id": 1836, - "implemented": true, - "kind": "function", - "modifiers": [ - { - "id": 1679, - "modifierName": { - "id": 1678, - "name": "noDelegateCall", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 735, - "src": "11842:14:5", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "11842:14:5" - } - ], - "name": "_modifyPosition", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1677, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1676, - "mutability": "mutable", - "name": "params", - "nodeType": "VariableDeclaration", - "scope": 1836, - "src": "11782:34:5", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ModifyPositionParams_$1673_memory_ptr", - "typeString": "struct UniswapV3Pool.ModifyPositionParams" - }, - "typeName": { - "id": 1675, - "name": "ModifyPositionParams", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1673, - "src": "11782:20:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ModifyPositionParams_$1673_storage_ptr", - "typeString": "struct UniswapV3Pool.ModifyPositionParams" - } - }, - "visibility": "internal" - } - ], - "src": "11781:36:5" - }, - "returnParameters": { - "id": 1686, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1681, - "mutability": "mutable", - "name": "position", - "nodeType": "VariableDeclaration", - "scope": 1836, - "src": "11887:30:5", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$5621_storage_ptr", - "typeString": "struct Position.Info" - }, - "typeName": { - "id": 1680, - "name": "Position.Info", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5621, - "src": "11887:13:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$5621_storage_ptr", - "typeString": "struct Position.Info" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1683, - "mutability": "mutable", - "name": "amount0", - "nodeType": "VariableDeclaration", - "scope": 1836, - "src": "11931:14:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "typeName": { - "id": 1682, - "name": "int256", - "nodeType": "ElementaryTypeName", - "src": "11931:6:5", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1685, - "mutability": "mutable", - "name": "amount1", - "nodeType": "VariableDeclaration", - "scope": 1836, - "src": "11959:14:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "typeName": { - "id": 1684, - "name": "int256", - "nodeType": "ElementaryTypeName", - "src": "11959:6:5", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "visibility": "internal" - } - ], - "src": "11873:110:5" - }, - "scope": 3491, - "src": "11757:2813:5", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "private" - }, - { - "body": { - "id": 1998, - "nodeType": "Block", - "src": "15098:2313:5", - "statements": [ - { - "expression": { - "id": 1859, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 1852, - "name": "position", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1850, - "src": "15108:8:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$5621_storage_ptr", - "typeString": "struct Position.Info storage pointer" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 1855, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1839, - "src": "15133:5:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 1856, - "name": "tickLower", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1841, - "src": "15140:9:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - { - "id": 1857, - "name": "tickUpper", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1843, - "src": "15151:9:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - ], - "expression": { - "id": 1853, - "name": "positions", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1155, - "src": "15119:9:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Info_$5621_storage_$", - "typeString": "mapping(bytes32 => struct Position.Info storage ref)" - } - }, - "id": 1854, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "get", - "nodeType": "MemberAccess", - "referencedDeclaration": 5651, - "src": "15119:13:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_mapping$_t_bytes32_$_t_struct$_Info_$5621_storage_$_$_t_address_$_t_int24_$_t_int24_$returns$_t_struct$_Info_$5621_storage_ptr_$bound_to$_t_mapping$_t_bytes32_$_t_struct$_Info_$5621_storage_$_$", - "typeString": "function (mapping(bytes32 => struct Position.Info storage ref),address,int24,int24) view returns (struct Position.Info storage pointer)" - } - }, - "id": 1858, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "15119:42:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$5621_storage_ptr", - "typeString": "struct Position.Info storage pointer" - } - }, - "src": "15108:53:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$5621_storage_ptr", - "typeString": "struct Position.Info storage pointer" - } - }, - "id": 1860, - "nodeType": "ExpressionStatement", - "src": "15108:53:5" - }, - { - "assignments": [ - 1862 - ], - "declarations": [ - { - "constant": false, - "id": 1862, - "mutability": "mutable", - "name": "_feeGrowthGlobal0X128", - "nodeType": "VariableDeclaration", - "scope": 1998, - "src": "15172:29:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1861, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "15172:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 1864, - "initialValue": { - "id": 1863, - "name": "feeGrowthGlobal0X128", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1120, - "src": "15204:20:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "15172:52:5" - }, - { - "assignments": [ - 1866 - ], - "declarations": [ - { - "constant": false, - "id": 1866, - "mutability": "mutable", - "name": "_feeGrowthGlobal1X128", - "nodeType": "VariableDeclaration", - "scope": 1998, - "src": "15264:29:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1865, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "15264:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 1868, - "initialValue": { - "id": 1867, - "name": "feeGrowthGlobal1X128", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1124, - "src": "15296:20:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "15264:52:5" - }, - { - "assignments": [ - 1870 - ], - "declarations": [ - { - "constant": false, - "id": 1870, - "mutability": "mutable", - "name": "flippedLower", - "nodeType": "VariableDeclaration", - "scope": 1998, - "src": "15406:17:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1869, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "15406:4:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "id": 1871, - "nodeType": "VariableDeclarationStatement", - "src": "15406:17:5" - }, - { - "assignments": [ - 1873 - ], - "declarations": [ - { - "constant": false, - "id": 1873, - "mutability": "mutable", - "name": "flippedUpper", - "nodeType": "VariableDeclaration", - "scope": 1998, - "src": "15433:17:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1872, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "15433:4:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "id": 1874, - "nodeType": "VariableDeclarationStatement", - "src": "15433:17:5" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_int128", - "typeString": "int128" - }, - "id": 1877, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 1875, - "name": "liquidityDelta", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1845, - "src": "15464:14:5", - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "hexValue": "30", - "id": 1876, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "15482:1:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "15464:19:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1953, - "nodeType": "IfStatement", - "src": "15460:1402:5", - "trueBody": { - "id": 1952, - "nodeType": "Block", - "src": "15485:1377:5", - "statements": [ - { - "assignments": [ - 1879 - ], - "declarations": [ - { - "constant": false, - "id": 1879, - "mutability": "mutable", - "name": "time", - "nodeType": "VariableDeclaration", - "scope": 1952, - "src": "15499:11:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 1878, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "15499:6:5", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "visibility": "internal" - } - ], - "id": 1882, - "initialValue": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 1880, - "name": "_blockTimestamp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1277, - "src": "15513:15:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_uint32_$", - "typeString": "function () view returns (uint32)" - } - }, - "id": 1881, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "15513:17:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "15499:31:5" - }, - { - "assignments": [ - 1884, - 1886 - ], - "declarations": [ - { - "constant": false, - "id": 1884, - "mutability": "mutable", - "name": "tickCumulative", - "nodeType": "VariableDeclaration", - "scope": 1952, - "src": "15545:20:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - }, - "typeName": { - "id": 1883, - "name": "int56", - "nodeType": "ElementaryTypeName", - "src": "15545:5:5", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1886, - "mutability": "mutable", - "name": "secondsPerLiquidityCumulativeX128", - "nodeType": "VariableDeclaration", - "scope": 1952, - "src": "15567:41:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "typeName": { - "id": 1885, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "15567:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "visibility": "internal" - } - ], - "id": 1899, - "initialValue": { - "arguments": [ - { - "id": 1889, - "name": "time", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1879, - "src": "15676:4:5", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - { - "hexValue": "30", - "id": 1890, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "15702:1:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - { - "expression": { - "id": 1891, - "name": "slot0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1116, - "src": "15725:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Slot0_$1112_storage", - "typeString": "struct UniswapV3Pool.Slot0 storage ref" - } - }, - "id": 1892, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "tick", - "nodeType": "MemberAccess", - "referencedDeclaration": 1101, - "src": "15725:10:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - { - "expression": { - "id": 1893, - "name": "slot0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1116, - "src": "15757:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Slot0_$1112_storage", - "typeString": "struct UniswapV3Pool.Slot0 storage ref" - } - }, - "id": 1894, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "observationIndex", - "nodeType": "MemberAccess", - "referencedDeclaration": 1103, - "src": "15757:22:5", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - { - "id": 1895, - "name": "liquidity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1137, - "src": "15801:9:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - { - "expression": { - "id": 1896, - "name": "slot0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1116, - "src": "15832:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Slot0_$1112_storage", - "typeString": "struct UniswapV3Pool.Slot0 storage ref" - } - }, - "id": 1897, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "observationCardinality", - "nodeType": "MemberAccess", - "referencedDeclaration": 1105, - "src": "15832:28:5", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - ], - "expression": { - "id": 1887, - "name": "observations", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1161, - "src": "15628:12:5", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Observation_$4881_storage_$65535_storage", - "typeString": "struct Oracle.Observation storage ref[65535] storage ref" - } - }, - "id": 1888, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "observeSingle", - "nodeType": "MemberAccess", - "referencedDeclaration": 5517, - "src": "15628:26:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_array$_t_struct$_Observation_$4881_storage_$65535_storage_ptr_$_t_uint32_$_t_uint32_$_t_int24_$_t_uint16_$_t_uint128_$_t_uint16_$returns$_t_int56_$_t_uint160_$bound_to$_t_array$_t_struct$_Observation_$4881_storage_$65535_storage_ptr_$", - "typeString": "function (struct Oracle.Observation storage ref[65535] storage pointer,uint32,uint32,int24,uint16,uint128,uint16) view returns (int56,uint160)" - } - }, - "id": 1898, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "15628:250:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_int56_$_t_uint160_$", - "typeString": "tuple(int56,uint160)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "15544:334:5" - }, - { - "expression": { - "id": 1914, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 1900, - "name": "flippedLower", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1870, - "src": "15893:12:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 1903, - "name": "tickLower", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1841, - "src": "15938:9:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - { - "id": 1904, - "name": "tick", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1847, - "src": "15965:4:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - { - "id": 1905, - "name": "liquidityDelta", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1845, - "src": "15987:14:5", - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - }, - { - "id": 1906, - "name": "_feeGrowthGlobal0X128", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1862, - "src": "16019:21:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 1907, - "name": "_feeGrowthGlobal1X128", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1866, - "src": "16058:21:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 1908, - "name": "secondsPerLiquidityCumulativeX128", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1886, - "src": "16097:33:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - { - "id": 1909, - "name": "tickCumulative", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1884, - "src": "16148:14:5", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - } - }, - { - "id": 1910, - "name": "time", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1879, - "src": "16180:4:5", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - { - "hexValue": "66616c7365", - "id": 1911, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "16202:5:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - { - "id": 1912, - "name": "maxLiquidityPerTick", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1097, - "src": "16225:19:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - { - "typeIdentifier": "t_int128", - "typeString": "int128" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - { - "typeIdentifier": "t_int56", - "typeString": "int56" - }, - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - ], - "expression": { - "id": 1901, - "name": "ticks", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1143, - "src": "15908:5:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Info_$6654_storage_$", - "typeString": "mapping(int24 => struct Tick.Info storage ref)" - } - }, - "id": 1902, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "update", - "nodeType": "MemberAccess", - "referencedDeclaration": 6978, - "src": "15908:12:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_mapping$_t_int24_$_t_struct$_Info_$6654_storage_$_$_t_int24_$_t_int24_$_t_int128_$_t_uint256_$_t_uint256_$_t_uint160_$_t_int56_$_t_uint32_$_t_bool_$_t_uint128_$returns$_t_bool_$bound_to$_t_mapping$_t_int24_$_t_struct$_Info_$6654_storage_$_$", - "typeString": "function (mapping(int24 => struct Tick.Info storage ref),int24,int24,int128,uint256,uint256,uint160,int56,uint32,bool,uint128) returns (bool)" - } - }, - "id": 1913, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "15908:350:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "15893:365:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1915, - "nodeType": "ExpressionStatement", - "src": "15893:365:5" - }, - { - "expression": { - "id": 1930, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 1916, - "name": "flippedUpper", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1873, - "src": "16272:12:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 1919, - "name": "tickUpper", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1843, - "src": "16317:9:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - { - "id": 1920, - "name": "tick", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1847, - "src": "16344:4:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - { - "id": 1921, - "name": "liquidityDelta", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1845, - "src": "16366:14:5", - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - }, - { - "id": 1922, - "name": "_feeGrowthGlobal0X128", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1862, - "src": "16398:21:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 1923, - "name": "_feeGrowthGlobal1X128", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1866, - "src": "16437:21:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 1924, - "name": "secondsPerLiquidityCumulativeX128", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1886, - "src": "16476:33:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - { - "id": 1925, - "name": "tickCumulative", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1884, - "src": "16527:14:5", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - } - }, - { - "id": 1926, - "name": "time", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1879, - "src": "16559:4:5", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - { - "hexValue": "74727565", - "id": 1927, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "16581:4:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - { - "id": 1928, - "name": "maxLiquidityPerTick", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1097, - "src": "16603:19:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - { - "typeIdentifier": "t_int128", - "typeString": "int128" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - { - "typeIdentifier": "t_int56", - "typeString": "int56" - }, - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - ], - "expression": { - "id": 1917, - "name": "ticks", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1143, - "src": "16287:5:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Info_$6654_storage_$", - "typeString": "mapping(int24 => struct Tick.Info storage ref)" - } - }, - "id": 1918, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "update", - "nodeType": "MemberAccess", - "referencedDeclaration": 6978, - "src": "16287:12:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_mapping$_t_int24_$_t_struct$_Info_$6654_storage_$_$_t_int24_$_t_int24_$_t_int128_$_t_uint256_$_t_uint256_$_t_uint160_$_t_int56_$_t_uint32_$_t_bool_$_t_uint128_$returns$_t_bool_$bound_to$_t_mapping$_t_int24_$_t_struct$_Info_$6654_storage_$_$", - "typeString": "function (mapping(int24 => struct Tick.Info storage ref),int24,int24,int128,uint256,uint256,uint160,int56,uint32,bool,uint128) returns (bool)" - } - }, - "id": 1929, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "16287:349:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "16272:364:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1931, - "nodeType": "ExpressionStatement", - "src": "16272:364:5" - }, - { - "condition": { - "id": 1932, - "name": "flippedLower", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1870, - "src": "16655:12:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1941, - "nodeType": "IfStatement", - "src": "16651:94:5", - "trueBody": { - "id": 1940, - "nodeType": "Block", - "src": "16669:76:5", - "statements": [ - { - "expression": { - "arguments": [ - { - "id": 1936, - "name": "tickLower", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1841, - "src": "16707:9:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - { - "id": 1937, - "name": "tickSpacing", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1093, - "src": "16718:11:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - ], - "expression": { - "id": 1933, - "name": "tickBitmap", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1149, - "src": "16687:10:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_int16_$_t_uint256_$", - "typeString": "mapping(int16 => uint256)" - } - }, - "id": 1935, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "flipTick", - "nodeType": "MemberAccess", - "referencedDeclaration": 7152, - "src": "16687:19:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_mapping$_t_int16_$_t_uint256_$_$_t_int24_$_t_int24_$returns$__$bound_to$_t_mapping$_t_int16_$_t_uint256_$_$", - "typeString": "function (mapping(int16 => uint256),int24,int24)" - } - }, - "id": 1938, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "16687:43:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1939, - "nodeType": "ExpressionStatement", - "src": "16687:43:5" - } - ] - } - }, - { - "condition": { - "id": 1942, - "name": "flippedUpper", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1873, - "src": "16762:12:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1951, - "nodeType": "IfStatement", - "src": "16758:94:5", - "trueBody": { - "id": 1950, - "nodeType": "Block", - "src": "16776:76:5", - "statements": [ - { - "expression": { - "arguments": [ - { - "id": 1946, - "name": "tickUpper", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1843, - "src": "16814:9:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - { - "id": 1947, - "name": "tickSpacing", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1093, - "src": "16825:11:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - ], - "expression": { - "id": 1943, - "name": "tickBitmap", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1149, - "src": "16794:10:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_int16_$_t_uint256_$", - "typeString": "mapping(int16 => uint256)" - } - }, - "id": 1945, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "flipTick", - "nodeType": "MemberAccess", - "referencedDeclaration": 7152, - "src": "16794:19:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_mapping$_t_int16_$_t_uint256_$_$_t_int24_$_t_int24_$returns$__$bound_to$_t_mapping$_t_int16_$_t_uint256_$_$", - "typeString": "function (mapping(int16 => uint256),int24,int24)" - } - }, - "id": 1948, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "16794:43:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1949, - "nodeType": "ExpressionStatement", - "src": "16794:43:5" - } - ] - } - } - ] - } - }, - { - "assignments": [ - 1955, - 1957 - ], - "declarations": [ - { - "constant": false, - "id": 1955, - "mutability": "mutable", - "name": "feeGrowthInside0X128", - "nodeType": "VariableDeclaration", - "scope": 1998, - "src": "16873:28:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1954, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "16873:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1957, - "mutability": "mutable", - "name": "feeGrowthInside1X128", - "nodeType": "VariableDeclaration", - "scope": 1998, - "src": "16903:28:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1956, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "16903:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 1966, - "initialValue": { - "arguments": [ - { - "id": 1960, - "name": "tickLower", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1841, - "src": "16972:9:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - { - "id": 1961, - "name": "tickUpper", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1843, - "src": "16983:9:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - { - "id": 1962, - "name": "tick", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1847, - "src": "16994:4:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - { - "id": 1963, - "name": "_feeGrowthGlobal0X128", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1862, - "src": "17000:21:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 1964, - "name": "_feeGrowthGlobal1X128", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1866, - "src": "17023:21:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 1958, - "name": "ticks", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1143, - "src": "16947:5:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Info_$6654_storage_$", - "typeString": "mapping(int24 => struct Tick.Info storage ref)" - } - }, - "id": 1959, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "getFeeGrowthInside", - "nodeType": "MemberAccess", - "referencedDeclaration": 6828, - "src": "16947:24:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_mapping$_t_int24_$_t_struct$_Info_$6654_storage_$_$_t_int24_$_t_int24_$_t_int24_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$bound_to$_t_mapping$_t_int24_$_t_struct$_Info_$6654_storage_$_$", - "typeString": "function (mapping(int24 => struct Tick.Info storage ref),int24,int24,int24,uint256,uint256) view returns (uint256,uint256)" - } - }, - "id": 1965, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "16947:98:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", - "typeString": "tuple(uint256,uint256)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "16872:173:5" - }, - { - "expression": { - "arguments": [ - { - "id": 1970, - "name": "liquidityDelta", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1845, - "src": "17072:14:5", - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - }, - { - "id": 1971, - "name": "feeGrowthInside0X128", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1955, - "src": "17088:20:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 1972, - "name": "feeGrowthInside1X128", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1957, - "src": "17110:20:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int128", - "typeString": "int128" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 1967, - "name": "position", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1850, - "src": "17056:8:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$5621_storage_ptr", - "typeString": "struct Position.Info storage pointer" - } - }, - "id": 1969, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "update", - "nodeType": "MemberAccess", - "referencedDeclaration": 5776, - "src": "17056:15:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Info_$5621_storage_ptr_$_t_int128_$_t_uint256_$_t_uint256_$returns$__$bound_to$_t_struct$_Info_$5621_storage_ptr_$", - "typeString": "function (struct Position.Info storage pointer,int128,uint256,uint256)" - } - }, - "id": 1973, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "17056:75:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1974, - "nodeType": "ExpressionStatement", - "src": "17056:75:5" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_int128", - "typeString": "int128" - }, - "id": 1977, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 1975, - "name": "liquidityDelta", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1845, - "src": "17202:14:5", - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "hexValue": "30", - "id": 1976, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "17219:1:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "17202:18:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1997, - "nodeType": "IfStatement", - "src": "17198:207:5", - "trueBody": { - "id": 1996, - "nodeType": "Block", - "src": "17222:183:5", - "statements": [ - { - "condition": { - "id": 1978, - "name": "flippedLower", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1870, - "src": "17240:12:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1986, - "nodeType": "IfStatement", - "src": "17236:73:5", - "trueBody": { - "id": 1985, - "nodeType": "Block", - "src": "17254:55:5", - "statements": [ - { - "expression": { - "arguments": [ - { - "id": 1982, - "name": "tickLower", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1841, - "src": "17284:9:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - ], - "expression": { - "id": 1979, - "name": "ticks", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1143, - "src": "17272:5:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Info_$6654_storage_$", - "typeString": "mapping(int24 => struct Tick.Info storage ref)" - } - }, - "id": 1981, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "clear", - "nodeType": "MemberAccess", - "referencedDeclaration": 6994, - "src": "17272:11:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_mapping$_t_int24_$_t_struct$_Info_$6654_storage_$_$_t_int24_$returns$__$bound_to$_t_mapping$_t_int24_$_t_struct$_Info_$6654_storage_$_$", - "typeString": "function (mapping(int24 => struct Tick.Info storage ref),int24)" - } - }, - "id": 1983, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "17272:22:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1984, - "nodeType": "ExpressionStatement", - "src": "17272:22:5" - } - ] - } - }, - { - "condition": { - "id": 1987, - "name": "flippedUpper", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1873, - "src": "17326:12:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1995, - "nodeType": "IfStatement", - "src": "17322:73:5", - "trueBody": { - "id": 1994, - "nodeType": "Block", - "src": "17340:55:5", - "statements": [ - { - "expression": { - "arguments": [ - { - "id": 1991, - "name": "tickUpper", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1843, - "src": "17370:9:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - ], - "expression": { - "id": 1988, - "name": "ticks", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1143, - "src": "17358:5:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Info_$6654_storage_$", - "typeString": "mapping(int24 => struct Tick.Info storage ref)" - } - }, - "id": 1990, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "clear", - "nodeType": "MemberAccess", - "referencedDeclaration": 6994, - "src": "17358:11:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_mapping$_t_int24_$_t_struct$_Info_$6654_storage_$_$_t_int24_$returns$__$bound_to$_t_mapping$_t_int24_$_t_struct$_Info_$6654_storage_$_$", - "typeString": "function (mapping(int24 => struct Tick.Info storage ref),int24)" - } - }, - "id": 1992, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "17358:22:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1993, - "nodeType": "ExpressionStatement", - "src": "17358:22:5" - } - ] - } - } - ] - } - } - ] - }, - "documentation": { - "id": 1837, - "nodeType": "StructuredDocumentation", - "src": "14576:313:5", - "text": "@dev Gets and updates a position with the given liquidity delta\n @param owner the owner of the position\n @param tickLower the lower tick of the position's tick range\n @param tickUpper the upper tick of the position's tick range\n @param tick the current tick, passed to avoid sloads" - }, - "id": 1999, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_updatePosition", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1848, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1839, - "mutability": "mutable", - "name": "owner", - "nodeType": "VariableDeclaration", - "scope": 1999, - "src": "14928:13:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1838, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "14928:7:5", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1841, - "mutability": "mutable", - "name": "tickLower", - "nodeType": "VariableDeclaration", - "scope": 1999, - "src": "14951:15:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 1840, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "14951:5:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1843, - "mutability": "mutable", - "name": "tickUpper", - "nodeType": "VariableDeclaration", - "scope": 1999, - "src": "14976:15:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 1842, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "14976:5:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1845, - "mutability": "mutable", - "name": "liquidityDelta", - "nodeType": "VariableDeclaration", - "scope": 1999, - "src": "15001:21:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - }, - "typeName": { - "id": 1844, - "name": "int128", - "nodeType": "ElementaryTypeName", - "src": "15001:6:5", - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 1847, - "mutability": "mutable", - "name": "tick", - "nodeType": "VariableDeclaration", - "scope": 1999, - "src": "15032:10:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 1846, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "15032:5:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - } - ], - "src": "14918:130:5" - }, - "returnParameters": { - "id": 1851, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1850, - "mutability": "mutable", - "name": "position", - "nodeType": "VariableDeclaration", - "scope": 1999, - "src": "15066:30:5", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$5621_storage_ptr", - "typeString": "struct Position.Info" - }, - "typeName": { - "id": 1849, - "name": "Position.Info", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5621, - "src": "15066:13:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$5621_storage_ptr", - "typeString": "struct Position.Info" - } - }, - "visibility": "internal" - } - ], - "src": "15065:32:5" - }, - "scope": 3491, - "src": "14894:2517:5", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "private" - }, - { - "baseFunctions": [ - 3825 - ], - "body": { - "id": 2133, - "nodeType": "Block", - "src": "17745:972:5", - "statements": [ - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "id": 2023, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 2021, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2008, - "src": "17763:6:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 2022, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "17772:1:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "17763:10:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 2020, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "17755:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 2024, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "17755:19:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2025, - "nodeType": "ExpressionStatement", - "src": "17755:19:5" - }, - { - "assignments": [ - null, - 2027, - 2029 - ], - "declarations": [ - null, - { - "constant": false, - "id": 2027, - "mutability": "mutable", - "name": "amount0Int", - "nodeType": "VariableDeclaration", - "scope": 2133, - "src": "17787:17:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "typeName": { - "id": 2026, - "name": "int256", - "nodeType": "ElementaryTypeName", - "src": "17787:6:5", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2029, - "mutability": "mutable", - "name": "amount1Int", - "nodeType": "VariableDeclaration", - "scope": 2133, - "src": "17806:17:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "typeName": { - "id": 2028, - "name": "int256", - "nodeType": "ElementaryTypeName", - "src": "17806:6:5", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "visibility": "internal" - } - ], - "id": 2043, - "initialValue": { - "arguments": [ - { - "arguments": [ - { - "id": 2032, - "name": "recipient", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2002, - "src": "17922:9:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 2033, - "name": "tickLower", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2004, - "src": "17964:9:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - { - "id": 2034, - "name": "tickUpper", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2006, - "src": "18006:9:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - { - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "arguments": [ - { - "id": 2037, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2008, - "src": "18060:6:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - ], - "id": 2036, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "18053:6:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_int256_$", - "typeString": "type(int256)" - }, - "typeName": { - "id": 2035, - "name": "int256", - "nodeType": "ElementaryTypeName", - "src": "18053:6:5", - "typeDescriptions": {} - } - }, - "id": 2038, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "18053:14:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "id": 2039, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "toInt128", - "nodeType": "MemberAccess", - "referencedDeclaration": 5822, - "src": "18053:23:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_int128_$bound_to$_t_int256_$", - "typeString": "function (int256) pure returns (int128)" - } - }, - "id": 2040, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "18053:25:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - ], - "id": 2031, - "name": "ModifyPositionParams", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1673, - "src": "17872:20:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_ModifyPositionParams_$1673_storage_ptr_$", - "typeString": "type(struct UniswapV3Pool.ModifyPositionParams storage pointer)" - } - }, - "id": 2041, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "structConstructorCall", - "lValueRequested": false, - "names": [ - "owner", - "tickLower", - "tickUpper", - "liquidityDelta" - ], - "nodeType": "FunctionCall", - "src": "17872:225:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_struct$_ModifyPositionParams_$1673_memory_ptr", - "typeString": "struct UniswapV3Pool.ModifyPositionParams memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_struct$_ModifyPositionParams_$1673_memory_ptr", - "typeString": "struct UniswapV3Pool.ModifyPositionParams memory" - } - ], - "id": 2030, - "name": "_modifyPosition", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1836, - "src": "17839:15:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_ModifyPositionParams_$1673_memory_ptr_$returns$_t_struct$_Info_$5621_storage_ptr_$_t_int256_$_t_int256_$", - "typeString": "function (struct UniswapV3Pool.ModifyPositionParams memory) returns (struct Position.Info storage pointer,int256,int256)" - } - }, - "id": 2042, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "17839:272:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_struct$_Info_$5621_storage_ptr_$_t_int256_$_t_int256_$", - "typeString": "tuple(struct Position.Info storage pointer,int256,int256)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "17784:327:5" - }, - { - "expression": { - "id": 2049, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 2044, - "name": "amount0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2016, - "src": "18122:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 2047, - "name": "amount0Int", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2027, - "src": "18140:10:5", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - ], - "id": 2046, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "18132:7:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 2045, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "18132:7:5", - "typeDescriptions": {} - } - }, - "id": 2048, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "18132:19:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "18122:29:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 2050, - "nodeType": "ExpressionStatement", - "src": "18122:29:5" - }, - { - "expression": { - "id": 2056, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 2051, - "name": "amount1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2018, - "src": "18161:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 2054, - "name": "amount1Int", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2029, - "src": "18179:10:5", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - ], - "id": 2053, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "18171:7:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 2052, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "18171:7:5", - "typeDescriptions": {} - } - }, - "id": 2055, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "18171:19:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "18161:29:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 2057, - "nodeType": "ExpressionStatement", - "src": "18161:29:5" - }, - { - "assignments": [ - 2059 - ], - "declarations": [ - { - "constant": false, - "id": 2059, - "mutability": "mutable", - "name": "balance0Before", - "nodeType": "VariableDeclaration", - "scope": 2133, - "src": "18201:22:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2058, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "18201:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 2060, - "nodeType": "VariableDeclarationStatement", - "src": "18201:22:5" - }, - { - "assignments": [ - 2062 - ], - "declarations": [ - { - "constant": false, - "id": 2062, - "mutability": "mutable", - "name": "balance1Before", - "nodeType": "VariableDeclaration", - "scope": 2133, - "src": "18233:22:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2061, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "18233:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 2063, - "nodeType": "VariableDeclarationStatement", - "src": "18233:22:5" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 2066, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 2064, - "name": "amount0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2016, - "src": "18269:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 2065, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "18279:1:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "18269:11:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 2072, - "nodeType": "IfStatement", - "src": "18265:44:5", - "trueBody": { - "expression": { - "id": 2070, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 2067, - "name": "balance0Before", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2059, - "src": "18282:14:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 2068, - "name": "balance0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1319, - "src": "18299:8:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", - "typeString": "function () view returns (uint256)" - } - }, - "id": 2069, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "18299:10:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "18282:27:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 2071, - "nodeType": "ExpressionStatement", - "src": "18282:27:5" - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 2075, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 2073, - "name": "amount1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2018, - "src": "18323:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 2074, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "18333:1:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "18323:11:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 2081, - "nodeType": "IfStatement", - "src": "18319:44:5", - "trueBody": { - "expression": { - "id": 2079, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 2076, - "name": "balance1Before", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2062, - "src": "18336:14:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 2077, - "name": "balance1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1361, - "src": "18353:8:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", - "typeString": "function () view returns (uint256)" - } - }, - "id": 2078, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "18353:10:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "18336:27:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 2080, - "nodeType": "ExpressionStatement", - "src": "18336:27:5" - } - }, - { - "expression": { - "arguments": [ - { - "id": 2087, - "name": "amount0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2016, - "src": "18430:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 2088, - "name": "amount1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2018, - "src": "18439:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 2089, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2010, - "src": "18448:4:5", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - ], - "expression": { - "arguments": [ - { - "expression": { - "id": 2083, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "18396:3:5", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 2084, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "18396:10:5", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "id": 2082, - "name": "IUniswapV3MintCallback", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3784, - "src": "18373:22:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IUniswapV3MintCallback_$3784_$", - "typeString": "type(contract IUniswapV3MintCallback)" - } - }, - "id": 2085, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "18373:34:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_IUniswapV3MintCallback_$3784", - "typeString": "contract IUniswapV3MintCallback" - } - }, - "id": 2086, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "uniswapV3MintCallback", - "nodeType": "MemberAccess", - "referencedDeclaration": 3783, - "src": "18373:56:5", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", - "typeString": "function (uint256,uint256,bytes memory) external" - } - }, - "id": 2090, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "18373:80:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2091, - "nodeType": "ExpressionStatement", - "src": "18373:80:5" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 2094, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 2092, - "name": "amount0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2016, - "src": "18467:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 2093, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "18477:1:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "18467:11:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 2106, - "nodeType": "IfStatement", - "src": "18463:73:5", - "trueBody": { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 2102, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "arguments": [ - { - "id": 2098, - "name": "amount0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2016, - "src": "18507:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 2096, - "name": "balance0Before", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2059, - "src": "18488:14:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 2097, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "add", - "nodeType": "MemberAccess", - "referencedDeclaration": 4764, - "src": "18488:18:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 2099, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "18488:27:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 2100, - "name": "balance0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1319, - "src": "18519:8:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", - "typeString": "function () view returns (uint256)" - } - }, - "id": 2101, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "18519:10:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "18488:41:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "4d30", - "id": 2103, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "18531:4:5", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_9dd967dd89b196c3d39f30180cbfe6d91b2a16dc0c0a05c39a100e33eea78be7", - "typeString": "literal_string \"M0\"" - }, - "value": "M0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_9dd967dd89b196c3d39f30180cbfe6d91b2a16dc0c0a05c39a100e33eea78be7", - "typeString": "literal_string \"M0\"" - } - ], - "id": 2095, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "18480:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 2104, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "18480:56:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2105, - "nodeType": "ExpressionStatement", - "src": "18480:56:5" - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 2109, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 2107, - "name": "amount1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2018, - "src": "18550:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 2108, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "18560:1:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "18550:11:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 2121, - "nodeType": "IfStatement", - "src": "18546:73:5", - "trueBody": { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 2117, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "arguments": [ - { - "id": 2113, - "name": "amount1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2018, - "src": "18590:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 2111, - "name": "balance1Before", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2062, - "src": "18571:14:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 2112, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "add", - "nodeType": "MemberAccess", - "referencedDeclaration": 4764, - "src": "18571:18:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 2114, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "18571:27:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 2115, - "name": "balance1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1361, - "src": "18602:8:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", - "typeString": "function () view returns (uint256)" - } - }, - "id": 2116, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "18602:10:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "18571:41:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "4d31", - "id": 2118, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "18614:4:5", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_b12041addd3285c2b6d2a98e6dc83b6f7dc08f5942fa2296e6ce355782d133de", - "typeString": "literal_string \"M1\"" - }, - "value": "M1" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_b12041addd3285c2b6d2a98e6dc83b6f7dc08f5942fa2296e6ce355782d133de", - "typeString": "literal_string \"M1\"" - } - ], - "id": 2110, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "18563:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 2119, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "18563:56:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2120, - "nodeType": "ExpressionStatement", - "src": "18563:56:5" - } - }, - { - "eventCall": { - "arguments": [ - { - "expression": { - "id": 2123, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "18640:3:5", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 2124, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "18640:10:5", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - { - "id": 2125, - "name": "recipient", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2002, - "src": "18652:9:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 2126, - "name": "tickLower", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2004, - "src": "18663:9:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - { - "id": 2127, - "name": "tickUpper", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2006, - "src": "18674:9:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - { - "id": 2128, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2008, - "src": "18685:6:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - { - "id": 2129, - "name": "amount0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2016, - "src": "18693:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 2130, - "name": "amount1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2018, - "src": "18702:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 2122, - "name": "Mint", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3952, - "src": "18635:4:5", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_int24_$_t_int24_$_t_uint128_$_t_uint256_$_t_uint256_$returns$__$", - "typeString": "function (address,address,int24,int24,uint128,uint256,uint256)" - } - }, - "id": 2131, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "18635:75:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2132, - "nodeType": "EmitStatement", - "src": "18630:80:5" - } - ] - }, - "documentation": { - "id": 2000, - "nodeType": "StructuredDocumentation", - "src": "17417:107:5", - "text": "@inheritdoc IUniswapV3PoolActions\n @dev noDelegateCall is applied indirectly via _modifyPosition" - }, - "functionSelector": "3c8a7d8d", - "id": 2134, - "implemented": true, - "kind": "function", - "modifiers": [ - { - "id": 2014, - "modifierName": { - "id": 2013, - "name": "lock", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1184, - "src": "17697:4:5", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "17697:4:5" - } - ], - "name": "mint", - "nodeType": "FunctionDefinition", - "overrides": { - "id": 2012, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "17688:8:5" - }, - "parameters": { - "id": 2011, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2002, - "mutability": "mutable", - "name": "recipient", - "nodeType": "VariableDeclaration", - "scope": 2134, - "src": "17552:17:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 2001, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "17552:7:5", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2004, - "mutability": "mutable", - "name": "tickLower", - "nodeType": "VariableDeclaration", - "scope": 2134, - "src": "17579:15:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 2003, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "17579:5:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2006, - "mutability": "mutable", - "name": "tickUpper", - "nodeType": "VariableDeclaration", - "scope": 2134, - "src": "17604:15:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 2005, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "17604:5:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2008, - "mutability": "mutable", - "name": "amount", - "nodeType": "VariableDeclaration", - "scope": 2134, - "src": "17629:14:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "typeName": { - "id": 2007, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "17629:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2010, - "mutability": "mutable", - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 2134, - "src": "17653:19:5", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 2009, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "17653:5:5", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "17542:136:5" - }, - "returnParameters": { - "id": 2019, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2016, - "mutability": "mutable", - "name": "amount0", - "nodeType": "VariableDeclaration", - "scope": 2134, - "src": "17711:15:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2015, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "17711:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2018, - "mutability": "mutable", - "name": "amount1", - "nodeType": "VariableDeclaration", - "scope": 2134, - "src": "17728:15:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2017, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "17728:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "17710:34:5" - }, - "scope": 3491, - "src": "17529:1188:5", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "baseFunctions": [ - 3843 - ], - "body": { - "id": 2237, - "nodeType": "Block", - "src": "18999:801:5", - "statements": [ - { - "assignments": [ - 2158 - ], - "declarations": [ - { - "constant": false, - "id": 2158, - "mutability": "mutable", - "name": "position", - "nodeType": "VariableDeclaration", - "scope": 2237, - "src": "19121:30:5", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$5621_storage_ptr", - "typeString": "struct Position.Info" - }, - "typeName": { - "id": 2157, - "name": "Position.Info", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5621, - "src": "19121:13:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$5621_storage_ptr", - "typeString": "struct Position.Info" - } - }, - "visibility": "internal" - } - ], - "id": 2166, - "initialValue": { - "arguments": [ - { - "expression": { - "id": 2161, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "19168:3:5", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 2162, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "19168:10:5", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - { - "id": 2163, - "name": "tickLower", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2139, - "src": "19180:9:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - { - "id": 2164, - "name": "tickUpper", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2141, - "src": "19191:9:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - ], - "expression": { - "id": 2159, - "name": "positions", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1155, - "src": "19154:9:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Info_$5621_storage_$", - "typeString": "mapping(bytes32 => struct Position.Info storage ref)" - } - }, - "id": 2160, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "get", - "nodeType": "MemberAccess", - "referencedDeclaration": 5651, - "src": "19154:13:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_mapping$_t_bytes32_$_t_struct$_Info_$5621_storage_$_$_t_address_$_t_int24_$_t_int24_$returns$_t_struct$_Info_$5621_storage_ptr_$bound_to$_t_mapping$_t_bytes32_$_t_struct$_Info_$5621_storage_$_$", - "typeString": "function (mapping(bytes32 => struct Position.Info storage ref),address,int24,int24) view returns (struct Position.Info storage pointer)" - } - }, - "id": 2165, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "19154:47:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$5621_storage_ptr", - "typeString": "struct Position.Info storage pointer" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "19121:80:5" - }, - { - "expression": { - "id": 2176, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 2167, - "name": "amount0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2151, - "src": "19212:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "condition": { - "commonType": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "id": 2171, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 2168, - "name": "amount0Requested", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2143, - "src": "19222:16:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "expression": { - "id": 2169, - "name": "position", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2158, - "src": "19241:8:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$5621_storage_ptr", - "typeString": "struct Position.Info storage pointer" - } - }, - "id": 2170, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "tokensOwed0", - "nodeType": "MemberAccess", - "referencedDeclaration": 5618, - "src": "19241:20:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "src": "19222:39:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseExpression": { - "id": 2174, - "name": "amount0Requested", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2143, - "src": "19287:16:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "id": 2175, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "Conditional", - "src": "19222:81:5", - "trueExpression": { - "expression": { - "id": 2172, - "name": "position", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2158, - "src": "19264:8:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$5621_storage_ptr", - "typeString": "struct Position.Info storage pointer" - } - }, - "id": 2173, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "tokensOwed0", - "nodeType": "MemberAccess", - "referencedDeclaration": 5618, - "src": "19264:20:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "src": "19212:91:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "id": 2177, - "nodeType": "ExpressionStatement", - "src": "19212:91:5" - }, - { - "expression": { - "id": 2187, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 2178, - "name": "amount1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2153, - "src": "19313:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "condition": { - "commonType": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "id": 2182, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 2179, - "name": "amount1Requested", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2145, - "src": "19323:16:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "expression": { - "id": 2180, - "name": "position", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2158, - "src": "19342:8:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$5621_storage_ptr", - "typeString": "struct Position.Info storage pointer" - } - }, - "id": 2181, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "tokensOwed1", - "nodeType": "MemberAccess", - "referencedDeclaration": 5620, - "src": "19342:20:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "src": "19323:39:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseExpression": { - "id": 2185, - "name": "amount1Requested", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2145, - "src": "19388:16:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "id": 2186, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "Conditional", - "src": "19323:81:5", - "trueExpression": { - "expression": { - "id": 2183, - "name": "position", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2158, - "src": "19365:8:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$5621_storage_ptr", - "typeString": "struct Position.Info storage pointer" - } - }, - "id": 2184, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "tokensOwed1", - "nodeType": "MemberAccess", - "referencedDeclaration": 5620, - "src": "19365:20:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "src": "19313:91:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "id": 2188, - "nodeType": "ExpressionStatement", - "src": "19313:91:5" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "id": 2191, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 2189, - "name": "amount0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2151, - "src": "19419:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 2190, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "19429:1:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "19419:11:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 2207, - "nodeType": "IfStatement", - "src": "19415:142:5", - "trueBody": { - "id": 2206, - "nodeType": "Block", - "src": "19432:125:5", - "statements": [ - { - "expression": { - "id": 2196, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 2192, - "name": "position", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2158, - "src": "19446:8:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$5621_storage_ptr", - "typeString": "struct Position.Info storage pointer" - } - }, - "id": 2194, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "tokensOwed0", - "nodeType": "MemberAccess", - "referencedDeclaration": 5618, - "src": "19446:20:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "nodeType": "Assignment", - "operator": "-=", - "rightHandSide": { - "id": 2195, - "name": "amount0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2151, - "src": "19470:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "src": "19446:31:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "id": 2197, - "nodeType": "ExpressionStatement", - "src": "19446:31:5" - }, - { - "expression": { - "arguments": [ - { - "id": 2201, - "name": "token0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1081, - "src": "19519:6:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 2202, - "name": "recipient", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2137, - "src": "19527:9:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 2203, - "name": "amount0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2151, - "src": "19538:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - ], - "expression": { - "id": 2198, - "name": "TransferHelper", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7918, - "src": "19491:14:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_TransferHelper_$7918_$", - "typeString": "type(library TransferHelper)" - } - }, - "id": 2200, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "safeTransfer", - "nodeType": "MemberAccess", - "referencedDeclaration": 7917, - "src": "19491:27:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,address,uint256)" - } - }, - "id": 2204, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "19491:55:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2205, - "nodeType": "ExpressionStatement", - "src": "19491:55:5" - } - ] - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "id": 2210, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 2208, - "name": "amount1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2153, - "src": "19570:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 2209, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "19580:1:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "19570:11:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 2226, - "nodeType": "IfStatement", - "src": "19566:142:5", - "trueBody": { - "id": 2225, - "nodeType": "Block", - "src": "19583:125:5", - "statements": [ - { - "expression": { - "id": 2215, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 2211, - "name": "position", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2158, - "src": "19597:8:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$5621_storage_ptr", - "typeString": "struct Position.Info storage pointer" - } - }, - "id": 2213, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "tokensOwed1", - "nodeType": "MemberAccess", - "referencedDeclaration": 5620, - "src": "19597:20:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "nodeType": "Assignment", - "operator": "-=", - "rightHandSide": { - "id": 2214, - "name": "amount1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2153, - "src": "19621:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "src": "19597:31:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "id": 2216, - "nodeType": "ExpressionStatement", - "src": "19597:31:5" - }, - { - "expression": { - "arguments": [ - { - "id": 2220, - "name": "token1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1085, - "src": "19670:6:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 2221, - "name": "recipient", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2137, - "src": "19678:9:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 2222, - "name": "amount1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2153, - "src": "19689:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - ], - "expression": { - "id": 2217, - "name": "TransferHelper", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7918, - "src": "19642:14:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_TransferHelper_$7918_$", - "typeString": "type(library TransferHelper)" - } - }, - "id": 2219, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "safeTransfer", - "nodeType": "MemberAccess", - "referencedDeclaration": 7917, - "src": "19642:27:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,address,uint256)" - } - }, - "id": 2223, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "19642:55:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2224, - "nodeType": "ExpressionStatement", - "src": "19642:55:5" - } - ] - } - }, - { - "eventCall": { - "arguments": [ - { - "expression": { - "id": 2228, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "19731:3:5", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 2229, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "19731:10:5", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - { - "id": 2230, - "name": "recipient", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2137, - "src": "19743:9:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 2231, - "name": "tickLower", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2139, - "src": "19754:9:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - { - "id": 2232, - "name": "tickUpper", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2141, - "src": "19765:9:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - { - "id": 2233, - "name": "amount0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2151, - "src": "19776:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - { - "id": 2234, - "name": "amount1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2153, - "src": "19785:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - ], - "id": 2227, - "name": "Collect", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3967, - "src": "19723:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_int24_$_t_int24_$_t_uint128_$_t_uint128_$returns$__$", - "typeString": "function (address,address,int24,int24,uint128,uint128)" - } - }, - "id": 2235, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "19723:70:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2236, - "nodeType": "EmitStatement", - "src": "19718:75:5" - } - ] - }, - "documentation": { - "id": 2135, - "nodeType": "StructuredDocumentation", - "src": "18723:37:5", - "text": "@inheritdoc IUniswapV3PoolActions" - }, - "functionSelector": "4f1eb3d8", - "id": 2238, - "implemented": true, - "kind": "function", - "modifiers": [ - { - "id": 2149, - "modifierName": { - "id": 2148, - "name": "lock", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1184, - "src": "18951:4:5", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "18951:4:5" - } - ], - "name": "collect", - "nodeType": "FunctionDefinition", - "overrides": { - "id": 2147, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "18942:8:5" - }, - "parameters": { - "id": 2146, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2137, - "mutability": "mutable", - "name": "recipient", - "nodeType": "VariableDeclaration", - "scope": 2238, - "src": "18791:17:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 2136, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "18791:7:5", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2139, - "mutability": "mutable", - "name": "tickLower", - "nodeType": "VariableDeclaration", - "scope": 2238, - "src": "18818:15:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 2138, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "18818:5:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2141, - "mutability": "mutable", - "name": "tickUpper", - "nodeType": "VariableDeclaration", - "scope": 2238, - "src": "18843:15:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 2140, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "18843:5:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2143, - "mutability": "mutable", - "name": "amount0Requested", - "nodeType": "VariableDeclaration", - "scope": 2238, - "src": "18868:24:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "typeName": { - "id": 2142, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "18868:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2145, - "mutability": "mutable", - "name": "amount1Requested", - "nodeType": "VariableDeclaration", - "scope": 2238, - "src": "18902:24:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "typeName": { - "id": 2144, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "18902:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "visibility": "internal" - } - ], - "src": "18781:151:5" - }, - "returnParameters": { - "id": 2154, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2151, - "mutability": "mutable", - "name": "amount0", - "nodeType": "VariableDeclaration", - "scope": 2238, - "src": "18965:15:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "typeName": { - "id": 2150, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "18965:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2153, - "mutability": "mutable", - "name": "amount1", - "nodeType": "VariableDeclaration", - "scope": 2238, - "src": "18982:15:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "typeName": { - "id": 2152, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "18982:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "visibility": "internal" - } - ], - "src": "18964:34:5" - }, - "scope": 3491, - "src": "18765:1035:5", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "baseFunctions": [ - 3857 - ], - "body": { - "id": 2337, - "nodeType": "Block", - "src": "20078:779:5", - "statements": [ - { - "assignments": [ - 2258, - 2260, - 2262 - ], - "declarations": [ - { - "constant": false, - "id": 2258, - "mutability": "mutable", - "name": "position", - "nodeType": "VariableDeclaration", - "scope": 2337, - "src": "20089:30:5", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$5621_storage_ptr", - "typeString": "struct Position.Info" - }, - "typeName": { - "id": 2257, - "name": "Position.Info", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5621, - "src": "20089:13:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$5621_storage_ptr", - "typeString": "struct Position.Info" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2260, - "mutability": "mutable", - "name": "amount0Int", - "nodeType": "VariableDeclaration", - "scope": 2337, - "src": "20121:17:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "typeName": { - "id": 2259, - "name": "int256", - "nodeType": "ElementaryTypeName", - "src": "20121:6:5", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2262, - "mutability": "mutable", - "name": "amount1Int", - "nodeType": "VariableDeclaration", - "scope": 2337, - "src": "20140:17:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "typeName": { - "id": 2261, - "name": "int256", - "nodeType": "ElementaryTypeName", - "src": "20140:6:5", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "visibility": "internal" - } - ], - "id": 2278, - "initialValue": { - "arguments": [ - { - "arguments": [ - { - "expression": { - "id": 2265, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "20256:3:5", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 2266, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "20256:10:5", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - { - "id": 2267, - "name": "tickLower", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2241, - "src": "20299:9:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - { - "id": 2268, - "name": "tickUpper", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2243, - "src": "20341:9:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - { - "id": 2275, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "-", - "prefix": true, - "src": "20388:26:5", - "subExpression": { - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "arguments": [ - { - "id": 2271, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2245, - "src": "20396:6:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - ], - "id": 2270, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "20389:6:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_int256_$", - "typeString": "type(int256)" - }, - "typeName": { - "id": 2269, - "name": "int256", - "nodeType": "ElementaryTypeName", - "src": "20389:6:5", - "typeDescriptions": {} - } - }, - "id": 2272, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "20389:14:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "id": 2273, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "toInt128", - "nodeType": "MemberAccess", - "referencedDeclaration": 5822, - "src": "20389:23:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_int128_$bound_to$_t_int256_$", - "typeString": "function (int256) pure returns (int128)" - } - }, - "id": 2274, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "20389:25:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - ], - "id": 2264, - "name": "ModifyPositionParams", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1673, - "src": "20206:20:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_ModifyPositionParams_$1673_storage_ptr_$", - "typeString": "type(struct UniswapV3Pool.ModifyPositionParams storage pointer)" - } - }, - "id": 2276, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "structConstructorCall", - "lValueRequested": false, - "names": [ - "owner", - "tickLower", - "tickUpper", - "liquidityDelta" - ], - "nodeType": "FunctionCall", - "src": "20206:227:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_struct$_ModifyPositionParams_$1673_memory_ptr", - "typeString": "struct UniswapV3Pool.ModifyPositionParams memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_struct$_ModifyPositionParams_$1673_memory_ptr", - "typeString": "struct UniswapV3Pool.ModifyPositionParams memory" - } - ], - "id": 2263, - "name": "_modifyPosition", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1836, - "src": "20173:15:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_ModifyPositionParams_$1673_memory_ptr_$returns$_t_struct$_Info_$5621_storage_ptr_$_t_int256_$_t_int256_$", - "typeString": "function (struct UniswapV3Pool.ModifyPositionParams memory) returns (struct Position.Info storage pointer,int256,int256)" - } - }, - "id": 2277, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "20173:274:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_struct$_Info_$5621_storage_ptr_$_t_int256_$_t_int256_$", - "typeString": "tuple(struct Position.Info storage pointer,int256,int256)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "20088:359:5" - }, - { - "expression": { - "id": 2285, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 2279, - "name": "amount0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2251, - "src": "20458:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 2283, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "-", - "prefix": true, - "src": "20476:11:5", - "subExpression": { - "id": 2282, - "name": "amount0Int", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2260, - "src": "20477:10:5", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - ], - "id": 2281, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "20468:7:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 2280, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "20468:7:5", - "typeDescriptions": {} - } - }, - "id": 2284, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "20468:20:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "20458:30:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 2286, - "nodeType": "ExpressionStatement", - "src": "20458:30:5" - }, - { - "expression": { - "id": 2293, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 2287, - "name": "amount1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2253, - "src": "20498:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 2291, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "-", - "prefix": true, - "src": "20516:11:5", - "subExpression": { - "id": 2290, - "name": "amount1Int", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2262, - "src": "20517:10:5", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - ], - "id": 2289, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "20508:7:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 2288, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "20508:7:5", - "typeDescriptions": {} - } - }, - "id": 2292, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "20508:20:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "20498:30:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 2294, - "nodeType": "ExpressionStatement", - "src": "20498:30:5" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 2301, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 2297, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 2295, - "name": "amount0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2251, - "src": "20543:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 2296, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "20553:1:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "20543:11:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 2300, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 2298, - "name": "amount1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2253, - "src": "20558:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 2299, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "20568:1:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "20558:11:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "20543:26:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 2326, - "nodeType": "IfStatement", - "src": "20539:232:5", - "trueBody": { - "id": 2325, - "nodeType": "Block", - "src": "20571:200:5", - "statements": [ - { - "expression": { - "id": 2323, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "components": [ - { - "expression": { - "id": 2302, - "name": "position", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2258, - "src": "20586:8:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$5621_storage_ptr", - "typeString": "struct Position.Info storage pointer" - } - }, - "id": 2304, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "tokensOwed0", - "nodeType": "MemberAccess", - "referencedDeclaration": 5618, - "src": "20586:20:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - { - "expression": { - "id": 2305, - "name": "position", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2258, - "src": "20608:8:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$5621_storage_ptr", - "typeString": "struct Position.Info storage pointer" - } - }, - "id": 2306, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "tokensOwed1", - "nodeType": "MemberAccess", - "referencedDeclaration": 5620, - "src": "20608:20:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - } - ], - "id": 2307, - "isConstant": false, - "isInlineArray": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "TupleExpression", - "src": "20585:44:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint128_$_t_uint128_$", - "typeString": "tuple(uint128,uint128)" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "id": 2314, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 2308, - "name": "position", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2258, - "src": "20650:8:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$5621_storage_ptr", - "typeString": "struct Position.Info storage pointer" - } - }, - "id": 2309, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "tokensOwed0", - "nodeType": "MemberAccess", - "referencedDeclaration": 5618, - "src": "20650:20:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "arguments": [ - { - "id": 2312, - "name": "amount0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2251, - "src": "20681:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 2311, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "20673:7:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint128_$", - "typeString": "type(uint128)" - }, - "typeName": { - "id": 2310, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "20673:7:5", - "typeDescriptions": {} - } - }, - "id": 2313, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "20673:16:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "src": "20650:39:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - { - "commonType": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "id": 2321, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 2315, - "name": "position", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2258, - "src": "20707:8:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$5621_storage_ptr", - "typeString": "struct Position.Info storage pointer" - } - }, - "id": 2316, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "tokensOwed1", - "nodeType": "MemberAccess", - "referencedDeclaration": 5620, - "src": "20707:20:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "arguments": [ - { - "id": 2319, - "name": "amount1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2253, - "src": "20738:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 2318, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "20730:7:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint128_$", - "typeString": "type(uint128)" - }, - "typeName": { - "id": 2317, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "20730:7:5", - "typeDescriptions": {} - } - }, - "id": 2320, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "20730:16:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "src": "20707:39:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - } - ], - "id": 2322, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "20632:128:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint128_$_t_uint128_$", - "typeString": "tuple(uint128,uint128)" - } - }, - "src": "20585:175:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2324, - "nodeType": "ExpressionStatement", - "src": "20585:175:5" - } - ] - } - }, - { - "eventCall": { - "arguments": [ - { - "expression": { - "id": 2328, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "20791:3:5", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 2329, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "20791:10:5", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - { - "id": 2330, - "name": "tickLower", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2241, - "src": "20803:9:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - { - "id": 2331, - "name": "tickUpper", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2243, - "src": "20814:9:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - { - "id": 2332, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2245, - "src": "20825:6:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - { - "id": 2333, - "name": "amount0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2251, - "src": "20833:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 2334, - "name": "amount1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2253, - "src": "20842:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 2327, - "name": "Burn", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3982, - "src": "20786:4:5", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_int24_$_t_int24_$_t_uint128_$_t_uint256_$_t_uint256_$returns$__$", - "typeString": "function (address,int24,int24,uint128,uint256,uint256)" - } - }, - "id": 2335, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "20786:64:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2336, - "nodeType": "EmitStatement", - "src": "20781:69:5" - } - ] - }, - "documentation": { - "id": 2239, - "nodeType": "StructuredDocumentation", - "src": "19806:107:5", - "text": "@inheritdoc IUniswapV3PoolActions\n @dev noDelegateCall is applied indirectly via _modifyPosition" - }, - "functionSelector": "a34123a7", - "id": 2338, - "implemented": true, - "kind": "function", - "modifiers": [ - { - "id": 2249, - "modifierName": { - "id": 2248, - "name": "lock", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1184, - "src": "20030:4:5", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "20030:4:5" - } - ], - "name": "burn", - "nodeType": "FunctionDefinition", - "overrides": { - "id": 2247, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "20021:8:5" - }, - "parameters": { - "id": 2246, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2241, - "mutability": "mutable", - "name": "tickLower", - "nodeType": "VariableDeclaration", - "scope": 2338, - "src": "19941:15:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 2240, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "19941:5:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2243, - "mutability": "mutable", - "name": "tickUpper", - "nodeType": "VariableDeclaration", - "scope": 2338, - "src": "19966:15:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 2242, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "19966:5:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2245, - "mutability": "mutable", - "name": "amount", - "nodeType": "VariableDeclaration", - "scope": 2338, - "src": "19991:14:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "typeName": { - "id": 2244, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "19991:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "visibility": "internal" - } - ], - "src": "19931:80:5" - }, - "returnParameters": { - "id": 2254, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2251, - "mutability": "mutable", - "name": "amount0", - "nodeType": "VariableDeclaration", - "scope": 2338, - "src": "20044:15:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2250, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "20044:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2253, - "mutability": "mutable", - "name": "amount1", - "nodeType": "VariableDeclaration", - "scope": 2338, - "src": "20061:15:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2252, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "20061:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "20043:34:5" - }, - "scope": 3491, - "src": "19918:939:5", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "canonicalName": "UniswapV3Pool.SwapCache", - "id": 2351, - "members": [ - { - "constant": false, - "id": 2340, - "mutability": "mutable", - "name": "feeProtocol", - "nodeType": "VariableDeclaration", - "scope": 2351, - "src": "20938:17:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 2339, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "20938:5:5", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2342, - "mutability": "mutable", - "name": "liquidityStart", - "nodeType": "VariableDeclaration", - "scope": 2351, - "src": "21015:22:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "typeName": { - "id": 2341, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "21015:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2344, - "mutability": "mutable", - "name": "blockTimestamp", - "nodeType": "VariableDeclaration", - "scope": 2351, - "src": "21093:21:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 2343, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "21093:6:5", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2346, - "mutability": "mutable", - "name": "tickCumulative", - "nodeType": "VariableDeclaration", - "scope": 2351, - "src": "21224:20:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - }, - "typeName": { - "id": 2345, - "name": "int56", - "nodeType": "ElementaryTypeName", - "src": "21224:5:5", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2348, - "mutability": "mutable", - "name": "secondsPerLiquidityCumulativeX128", - "nodeType": "VariableDeclaration", - "scope": 2351, - "src": "21367:41:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "typeName": { - "id": 2347, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "21367:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2350, - "mutability": "mutable", - "name": "computedLatestObservation", - "nodeType": "VariableDeclaration", - "scope": 2351, - "src": "21490:30:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 2349, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "21490:4:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "name": "SwapCache", - "nodeType": "StructDefinition", - "scope": 3491, - "src": "20863:664:5", - "visibility": "public" - }, - { - "canonicalName": "UniswapV3Pool.SwapState", - "id": 2366, - "members": [ - { - "constant": false, - "id": 2353, - "mutability": "mutable", - "name": "amountSpecifiedRemaining", - "nodeType": "VariableDeclaration", - "scope": 2366, - "src": "21735:31:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "typeName": { - "id": 2352, - "name": "int256", - "nodeType": "ElementaryTypeName", - "src": "21735:6:5", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2355, - "mutability": "mutable", - "name": "amountCalculated", - "nodeType": "VariableDeclaration", - "scope": 2366, - "src": "21847:23:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "typeName": { - "id": 2354, - "name": "int256", - "nodeType": "ElementaryTypeName", - "src": "21847:6:5", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2357, - "mutability": "mutable", - "name": "sqrtPriceX96", - "nodeType": "VariableDeclaration", - "scope": 2366, - "src": "21911:20:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "typeName": { - "id": 2356, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "21911:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2359, - "mutability": "mutable", - "name": "tick", - "nodeType": "VariableDeclaration", - "scope": 2366, - "src": "21995:10:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 2358, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "21995:5:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2361, - "mutability": "mutable", - "name": "feeGrowthGlobalX128", - "nodeType": "VariableDeclaration", - "scope": 2366, - "src": "22067:27:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2360, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "22067:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2363, - "mutability": "mutable", - "name": "protocolFee", - "nodeType": "VariableDeclaration", - "scope": 2366, - "src": "22158:19:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "typeName": { - "id": 2362, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "22158:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2365, - "mutability": "mutable", - "name": "liquidity", - "nodeType": "VariableDeclaration", - "scope": 2366, - "src": "22229:17:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "typeName": { - "id": 2364, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "22229:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "visibility": "internal" - } - ], - "name": "SwapState", - "nodeType": "StructDefinition", - "scope": 3491, - "src": "21629:624:5", - "visibility": "public" - }, - { - "canonicalName": "UniswapV3Pool.StepComputations", - "id": 2381, - "members": [ - { - "constant": false, - "id": 2368, - "mutability": "mutable", - "name": "sqrtPriceStartX96", - "nodeType": "VariableDeclaration", - "scope": 2381, - "src": "22343:25:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "typeName": { - "id": 2367, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "22343:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2370, - "mutability": "mutable", - "name": "tickNext", - "nodeType": "VariableDeclaration", - "scope": 2381, - "src": "22458:14:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 2369, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "22458:5:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2372, - "mutability": "mutable", - "name": "initialized", - "nodeType": "VariableDeclaration", - "scope": 2381, - "src": "22532:16:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 2371, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "22532:4:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2374, - "mutability": "mutable", - "name": "sqrtPriceNextX96", - "nodeType": "VariableDeclaration", - "scope": 2381, - "src": "22605:24:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "typeName": { - "id": 2373, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "22605:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2376, - "mutability": "mutable", - "name": "amountIn", - "nodeType": "VariableDeclaration", - "scope": 2381, - "src": "22692:16:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2375, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "22692:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2378, - "mutability": "mutable", - "name": "amountOut", - "nodeType": "VariableDeclaration", - "scope": 2381, - "src": "22759:17:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2377, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "22759:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2380, - "mutability": "mutable", - "name": "feeAmount", - "nodeType": "VariableDeclaration", - "scope": 2381, - "src": "22827:17:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2379, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "22827:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "name": "StepComputations", - "nodeType": "StructDefinition", - "scope": 3491, - "src": "22259:592:5", - "visibility": "public" - }, - { - "baseFunctions": [ - 3875 - ], - "body": { - "id": 3069, - "nodeType": "Block", - "src": "23141:8760:5", - "statements": [ - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "id": 2405, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 2403, - "name": "amountSpecified", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2388, - "src": "23159:15:5", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "hexValue": "30", - "id": 2404, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "23178:1:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "23159:20:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "4153", - "id": 2406, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "23181:4:5", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_327b9f048a93c937a955c6a689ad68cff8daabdfc5fb8cf29fcae1bac2ddb4d5", - "typeString": "literal_string \"AS\"" - }, - "value": "AS" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_327b9f048a93c937a955c6a689ad68cff8daabdfc5fb8cf29fcae1bac2ddb4d5", - "typeString": "literal_string \"AS\"" - } - ], - "id": 2402, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "23151:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 2407, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "23151:35:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2408, - "nodeType": "ExpressionStatement", - "src": "23151:35:5" - }, - { - "assignments": [ - 2410 - ], - "declarations": [ - { - "constant": false, - "id": 2410, - "mutability": "mutable", - "name": "slot0Start", - "nodeType": "VariableDeclaration", - "scope": 3069, - "src": "23197:23:5", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Slot0_$1112_memory_ptr", - "typeString": "struct UniswapV3Pool.Slot0" - }, - "typeName": { - "id": 2409, - "name": "Slot0", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1112, - "src": "23197:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Slot0_$1112_storage_ptr", - "typeString": "struct UniswapV3Pool.Slot0" - } - }, - "visibility": "internal" - } - ], - "id": 2412, - "initialValue": { - "id": 2411, - "name": "slot0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1116, - "src": "23223:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Slot0_$1112_storage", - "typeString": "struct UniswapV3Pool.Slot0 storage ref" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "23197:31:5" - }, - { - "expression": { - "arguments": [ - { - "expression": { - "id": 2414, - "name": "slot0Start", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2410, - "src": "23247:10:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Slot0_$1112_memory_ptr", - "typeString": "struct UniswapV3Pool.Slot0 memory" - } - }, - "id": 2415, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "unlocked", - "nodeType": "MemberAccess", - "referencedDeclaration": 1111, - "src": "23247:19:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "4c4f4b", - "id": 2416, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "23268:5:5", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_e01ebc6b01bbf458b3d355b6e649efe64599751670c5d19175619893ecf97529", - "typeString": "literal_string \"LOK\"" - }, - "value": "LOK" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_e01ebc6b01bbf458b3d355b6e649efe64599751670c5d19175619893ecf97529", - "typeString": "literal_string \"LOK\"" - } - ], - "id": 2413, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "23239:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 2417, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "23239:35:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2418, - "nodeType": "ExpressionStatement", - "src": "23239:35:5" - }, - { - "expression": { - "arguments": [ - { - "condition": { - "id": 2420, - "name": "zeroForOne", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2386, - "src": "23305:10:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseExpression": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 2438, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "id": 2433, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 2430, - "name": "sqrtPriceLimitX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2390, - "src": "23443:17:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "expression": { - "id": 2431, - "name": "slot0Start", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2410, - "src": "23463:10:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Slot0_$1112_memory_ptr", - "typeString": "struct UniswapV3Pool.Slot0 memory" - } - }, - "id": 2432, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "sqrtPriceX96", - "nodeType": "MemberAccess", - "referencedDeclaration": 1099, - "src": "23463:23:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "src": "23443:43:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "id": 2437, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 2434, - "name": "sqrtPriceLimitX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2390, - "src": "23490:17:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "expression": { - "id": 2435, - "name": "TickMath", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7867, - "src": "23510:8:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_TickMath_$7867_$", - "typeString": "type(library TickMath)" - } - }, - "id": 2436, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "MAX_SQRT_RATIO", - "nodeType": "MemberAccess", - "referencedDeclaration": 7353, - "src": "23510:23:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "src": "23490:43:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "23443:90:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 2439, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "Conditional", - "src": "23305:228:5", - "trueExpression": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 2429, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "id": 2424, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 2421, - "name": "sqrtPriceLimitX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2390, - "src": "23334:17:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "expression": { - "id": 2422, - "name": "slot0Start", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2410, - "src": "23354:10:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Slot0_$1112_memory_ptr", - "typeString": "struct UniswapV3Pool.Slot0 memory" - } - }, - "id": 2423, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "sqrtPriceX96", - "nodeType": "MemberAccess", - "referencedDeclaration": 1099, - "src": "23354:23:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "src": "23334:43:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "id": 2428, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 2425, - "name": "sqrtPriceLimitX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2390, - "src": "23381:17:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "expression": { - "id": 2426, - "name": "TickMath", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7867, - "src": "23401:8:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_TickMath_$7867_$", - "typeString": "type(library TickMath)" - } - }, - "id": 2427, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "MIN_SQRT_RATIO", - "nodeType": "MemberAccess", - "referencedDeclaration": 7349, - "src": "23401:23:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "src": "23381:43:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "23334:90:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "53504c", - "id": 2440, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "23547:5:5", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_a6cefa06f60ee34e0c8820e8870f7587ccd717d8768771226759d789a9582094", - "typeString": "literal_string \"SPL\"" - }, - "value": "SPL" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_a6cefa06f60ee34e0c8820e8870f7587ccd717d8768771226759d789a9582094", - "typeString": "literal_string \"SPL\"" - } - ], - "id": 2419, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "23284:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 2441, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "23284:278:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2442, - "nodeType": "ExpressionStatement", - "src": "23284:278:5" - }, - { - "expression": { - "id": 2447, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 2443, - "name": "slot0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1116, - "src": "23573:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Slot0_$1112_storage", - "typeString": "struct UniswapV3Pool.Slot0 storage ref" - } - }, - "id": 2445, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "unlocked", - "nodeType": "MemberAccess", - "referencedDeclaration": 1111, - "src": "23573:14:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "66616c7365", - "id": 2446, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "23590:5:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "23573:22:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 2448, - "nodeType": "ExpressionStatement", - "src": "23573:22:5" - }, - { - "assignments": [ - 2450 - ], - "declarations": [ - { - "constant": false, - "id": 2450, - "mutability": "mutable", - "name": "cache", - "nodeType": "VariableDeclaration", - "scope": 3069, - "src": "23606:22:5", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapCache_$2351_memory_ptr", - "typeString": "struct UniswapV3Pool.SwapCache" - }, - "typeName": { - "id": 2449, - "name": "SwapCache", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 2351, - "src": "23606:9:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapCache_$2351_storage_ptr", - "typeString": "struct UniswapV3Pool.SwapCache" - } - }, - "visibility": "internal" - } - ], - "id": 2471, - "initialValue": { - "arguments": [ - { - "id": 2452, - "name": "liquidity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1137, - "src": "23687:9:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 2453, - "name": "_blockTimestamp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1277, - "src": "23730:15:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_uint32_$", - "typeString": "function () view returns (uint32)" - } - }, - "id": 2454, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "23730:17:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - { - "condition": { - "id": 2455, - "name": "zeroForOne", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2386, - "src": "23778:10:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 2464, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 2461, - "name": "slot0Start", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2410, - "src": "23824:10:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Slot0_$1112_memory_ptr", - "typeString": "struct UniswapV3Pool.Slot0 memory" - } - }, - "id": 2462, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "feeProtocol", - "nodeType": "MemberAccess", - "referencedDeclaration": 1109, - "src": "23824:22:5", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": ">>", - "rightExpression": { - "hexValue": "34", - "id": 2463, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "23850:1:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_4_by_1", - "typeString": "int_const 4" - }, - "value": "4" - }, - "src": "23824:27:5", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - } - ], - "id": 2465, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "23823:29:5", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 2466, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "Conditional", - "src": "23778:74:5", - "trueExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 2459, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 2456, - "name": "slot0Start", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2410, - "src": "23792:10:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Slot0_$1112_memory_ptr", - "typeString": "struct UniswapV3Pool.Slot0 memory" - } - }, - "id": 2457, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "feeProtocol", - "nodeType": "MemberAccess", - "referencedDeclaration": 1109, - "src": "23792:22:5", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "%", - "rightExpression": { - "hexValue": "3136", - "id": 2458, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "23817:2:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_16_by_1", - "typeString": "int_const 16" - }, - "value": "16" - }, - "src": "23792:27:5", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - } - ], - "id": 2460, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "23791:29:5", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - { - "hexValue": "30", - "id": 2467, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "23905:1:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - { - "hexValue": "30", - "id": 2468, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "23940:1:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - { - "hexValue": "66616c7365", - "id": 2469, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "23986:5:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 2451, - "name": "SwapCache", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2351, - "src": "23643:9:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_SwapCache_$2351_storage_ptr_$", - "typeString": "type(struct UniswapV3Pool.SwapCache storage pointer)" - } - }, - "id": 2470, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "structConstructorCall", - "lValueRequested": false, - "names": [ - "liquidityStart", - "blockTimestamp", - "feeProtocol", - "secondsPerLiquidityCumulativeX128", - "tickCumulative", - "computedLatestObservation" - ], - "nodeType": "FunctionCall", - "src": "23643:363:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapCache_$2351_memory_ptr", - "typeString": "struct UniswapV3Pool.SwapCache memory" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "23606:400:5" - }, - { - "assignments": [ - 2473 - ], - "declarations": [ - { - "constant": false, - "id": 2473, - "mutability": "mutable", - "name": "exactInput", - "nodeType": "VariableDeclaration", - "scope": 3069, - "src": "24017:15:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 2472, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "24017:4:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "id": 2477, - "initialValue": { - "commonType": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "id": 2476, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 2474, - "name": "amountSpecified", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2388, - "src": "24035:15:5", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 2475, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "24053:1:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "24035:19:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "24017:37:5" - }, - { - "assignments": [ - 2479 - ], - "declarations": [ - { - "constant": false, - "id": 2479, - "mutability": "mutable", - "name": "state", - "nodeType": "VariableDeclaration", - "scope": 3069, - "src": "24065:22:5", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapState_$2366_memory_ptr", - "typeString": "struct UniswapV3Pool.SwapState" - }, - "typeName": { - "id": 2478, - "name": "SwapState", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 2366, - "src": "24065:9:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapState_$2366_storage_ptr", - "typeString": "struct UniswapV3Pool.SwapState" - } - }, - "visibility": "internal" - } - ], - "id": 2495, - "initialValue": { - "arguments": [ - { - "id": 2481, - "name": "amountSpecified", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2388, - "src": "24156:15:5", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - { - "hexValue": "30", - "id": 2482, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "24207:1:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - { - "expression": { - "id": 2483, - "name": "slot0Start", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2410, - "src": "24240:10:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Slot0_$1112_memory_ptr", - "typeString": "struct UniswapV3Pool.Slot0 memory" - } - }, - "id": 2484, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "sqrtPriceX96", - "nodeType": "MemberAccess", - "referencedDeclaration": 1099, - "src": "24240:23:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - { - "expression": { - "id": 2485, - "name": "slot0Start", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2410, - "src": "24287:10:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Slot0_$1112_memory_ptr", - "typeString": "struct UniswapV3Pool.Slot0 memory" - } - }, - "id": 2486, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "tick", - "nodeType": "MemberAccess", - "referencedDeclaration": 1101, - "src": "24287:15:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - { - "condition": { - "id": 2487, - "name": "zeroForOne", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2386, - "src": "24341:10:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseExpression": { - "id": 2489, - "name": "feeGrowthGlobal1X128", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1124, - "src": "24377:20:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 2490, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "Conditional", - "src": "24341:56:5", - "trueExpression": { - "id": 2488, - "name": "feeGrowthGlobal0X128", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1120, - "src": "24354:20:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "hexValue": "30", - "id": 2491, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "24428:1:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - { - "expression": { - "id": 2492, - "name": "cache", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2450, - "src": "24458:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapCache_$2351_memory_ptr", - "typeString": "struct UniswapV3Pool.SwapCache memory" - } - }, - "id": 2493, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "liquidityStart", - "nodeType": "MemberAccess", - "referencedDeclaration": 2342, - "src": "24458:20:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - ], - "id": 2480, - "name": "SwapState", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2366, - "src": "24102:9:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_SwapState_$2366_storage_ptr_$", - "typeString": "type(struct UniswapV3Pool.SwapState storage pointer)" - } - }, - "id": 2494, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "structConstructorCall", - "lValueRequested": false, - "names": [ - "amountSpecifiedRemaining", - "amountCalculated", - "sqrtPriceX96", - "tick", - "feeGrowthGlobalX128", - "protocolFee", - "liquidity" - ], - "nodeType": "FunctionCall", - "src": "24102:391:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapState_$2366_memory_ptr", - "typeString": "struct UniswapV3Pool.SwapState memory" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "24065:428:5" - }, - { - "body": { - "id": 2827, - "nodeType": "Block", - "src": "24707:4534:5", - "statements": [ - { - "assignments": [ - 2506 - ], - "declarations": [ - { - "constant": false, - "id": 2506, - "mutability": "mutable", - "name": "step", - "nodeType": "VariableDeclaration", - "scope": 2827, - "src": "24721:28:5", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_StepComputations_$2381_memory_ptr", - "typeString": "struct UniswapV3Pool.StepComputations" - }, - "typeName": { - "id": 2505, - "name": "StepComputations", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 2381, - "src": "24721:16:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_StepComputations_$2381_storage_ptr", - "typeString": "struct UniswapV3Pool.StepComputations" - } - }, - "visibility": "internal" - } - ], - "id": 2507, - "nodeType": "VariableDeclarationStatement", - "src": "24721:28:5" - }, - { - "expression": { - "id": 2513, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 2508, - "name": "step", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2506, - "src": "24764:4:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_StepComputations_$2381_memory_ptr", - "typeString": "struct UniswapV3Pool.StepComputations memory" - } - }, - "id": 2510, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "sqrtPriceStartX96", - "nodeType": "MemberAccess", - "referencedDeclaration": 2368, - "src": "24764:22:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "expression": { - "id": 2511, - "name": "state", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2479, - "src": "24789:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapState_$2366_memory_ptr", - "typeString": "struct UniswapV3Pool.SwapState memory" - } - }, - "id": 2512, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "sqrtPriceX96", - "nodeType": "MemberAccess", - "referencedDeclaration": 2357, - "src": "24789:18:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "src": "24764:43:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "id": 2514, - "nodeType": "ExpressionStatement", - "src": "24764:43:5" - }, - { - "expression": { - "id": 2528, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "components": [ - { - "expression": { - "id": 2515, - "name": "step", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2506, - "src": "24823:4:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_StepComputations_$2381_memory_ptr", - "typeString": "struct UniswapV3Pool.StepComputations memory" - } - }, - "id": 2517, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "tickNext", - "nodeType": "MemberAccess", - "referencedDeclaration": 2370, - "src": "24823:13:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - { - "expression": { - "id": 2518, - "name": "step", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2506, - "src": "24838:4:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_StepComputations_$2381_memory_ptr", - "typeString": "struct UniswapV3Pool.StepComputations memory" - } - }, - "id": 2519, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "initialized", - "nodeType": "MemberAccess", - "referencedDeclaration": 2372, - "src": "24838:16:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "id": 2520, - "isConstant": false, - "isInlineArray": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "TupleExpression", - "src": "24822:33:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_int24_$_t_bool_$", - "typeString": "tuple(int24,bool)" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "expression": { - "id": 2523, - "name": "state", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2479, - "src": "24919:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapState_$2366_memory_ptr", - "typeString": "struct UniswapV3Pool.SwapState memory" - } - }, - "id": 2524, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "tick", - "nodeType": "MemberAccess", - "referencedDeclaration": 2359, - "src": "24919:10:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - { - "id": 2525, - "name": "tickSpacing", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1093, - "src": "24947:11:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - { - "id": 2526, - "name": "zeroForOne", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2386, - "src": "24976:10:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "expression": { - "id": 2521, - "name": "tickBitmap", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1149, - "src": "24858:10:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_int16_$_t_uint256_$", - "typeString": "mapping(int16 => uint256)" - } - }, - "id": 2522, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "nextInitializedTickWithinOneWord", - "nodeType": "MemberAccess", - "referencedDeclaration": 7331, - "src": "24858:43:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_mapping$_t_int16_$_t_uint256_$_$_t_int24_$_t_int24_$_t_bool_$returns$_t_int24_$_t_bool_$bound_to$_t_mapping$_t_int16_$_t_uint256_$_$", - "typeString": "function (mapping(int16 => uint256),int24,int24,bool) view returns (int24,bool)" - } - }, - "id": 2527, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "24858:142:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_int24_$_t_bool_$", - "typeString": "tuple(int24,bool)" - } - }, - "src": "24822:178:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2529, - "nodeType": "ExpressionStatement", - "src": "24822:178:5" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "id": 2534, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 2530, - "name": "step", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2506, - "src": "25132:4:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_StepComputations_$2381_memory_ptr", - "typeString": "struct UniswapV3Pool.StepComputations memory" - } - }, - "id": 2531, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "tickNext", - "nodeType": "MemberAccess", - "referencedDeclaration": 2370, - "src": "25132:13:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "expression": { - "id": 2532, - "name": "TickMath", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7867, - "src": "25148:8:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_TickMath_$7867_$", - "typeString": "type(library TickMath)" - } - }, - "id": 2533, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "MIN_TICK", - "nodeType": "MemberAccess", - "referencedDeclaration": 7340, - "src": "25148:17:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "src": "25132:33:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "condition": { - "commonType": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "id": 2547, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 2543, - "name": "step", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2506, - "src": "25243:4:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_StepComputations_$2381_memory_ptr", - "typeString": "struct UniswapV3Pool.StepComputations memory" - } - }, - "id": 2544, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "tickNext", - "nodeType": "MemberAccess", - "referencedDeclaration": 2370, - "src": "25243:13:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "expression": { - "id": 2545, - "name": "TickMath", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7867, - "src": "25259:8:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_TickMath_$7867_$", - "typeString": "type(library TickMath)" - } - }, - "id": 2546, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "MAX_TICK", - "nodeType": "MemberAccess", - "referencedDeclaration": 7345, - "src": "25259:17:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "src": "25243:33:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 2556, - "nodeType": "IfStatement", - "src": "25239:105:5", - "trueBody": { - "id": 2555, - "nodeType": "Block", - "src": "25278:66:5", - "statements": [ - { - "expression": { - "id": 2553, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 2548, - "name": "step", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2506, - "src": "25296:4:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_StepComputations_$2381_memory_ptr", - "typeString": "struct UniswapV3Pool.StepComputations memory" - } - }, - "id": 2550, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "tickNext", - "nodeType": "MemberAccess", - "referencedDeclaration": 2370, - "src": "25296:13:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "expression": { - "id": 2551, - "name": "TickMath", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7867, - "src": "25312:8:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_TickMath_$7867_$", - "typeString": "type(library TickMath)" - } - }, - "id": 2552, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "MAX_TICK", - "nodeType": "MemberAccess", - "referencedDeclaration": 7345, - "src": "25312:17:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "src": "25296:33:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "id": 2554, - "nodeType": "ExpressionStatement", - "src": "25296:33:5" - } - ] - } - }, - "id": 2557, - "nodeType": "IfStatement", - "src": "25128:216:5", - "trueBody": { - "id": 2542, - "nodeType": "Block", - "src": "25167:66:5", - "statements": [ - { - "expression": { - "id": 2540, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 2535, - "name": "step", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2506, - "src": "25185:4:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_StepComputations_$2381_memory_ptr", - "typeString": "struct UniswapV3Pool.StepComputations memory" - } - }, - "id": 2537, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "tickNext", - "nodeType": "MemberAccess", - "referencedDeclaration": 2370, - "src": "25185:13:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "expression": { - "id": 2538, - "name": "TickMath", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7867, - "src": "25201:8:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_TickMath_$7867_$", - "typeString": "type(library TickMath)" - } - }, - "id": 2539, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "MIN_TICK", - "nodeType": "MemberAccess", - "referencedDeclaration": 7340, - "src": "25201:17:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "src": "25185:33:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "id": 2541, - "nodeType": "ExpressionStatement", - "src": "25185:33:5" - } - ] - } - }, - { - "expression": { - "id": 2566, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 2558, - "name": "step", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2506, - "src": "25405:4:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_StepComputations_$2381_memory_ptr", - "typeString": "struct UniswapV3Pool.StepComputations memory" - } - }, - "id": 2560, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "sqrtPriceNextX96", - "nodeType": "MemberAccess", - "referencedDeclaration": 2374, - "src": "25405:21:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "expression": { - "id": 2563, - "name": "step", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2506, - "src": "25457:4:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_StepComputations_$2381_memory_ptr", - "typeString": "struct UniswapV3Pool.StepComputations memory" - } - }, - "id": 2564, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "tickNext", - "nodeType": "MemberAccess", - "referencedDeclaration": 2370, - "src": "25457:13:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - ], - "expression": { - "id": 2561, - "name": "TickMath", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7867, - "src": "25429:8:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_TickMath_$7867_$", - "typeString": "type(library TickMath)" - } - }, - "id": 2562, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "getSqrtRatioAtTick", - "nodeType": "MemberAccess", - "referencedDeclaration": 7727, - "src": "25429:27:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_int24_$returns$_t_uint160_$", - "typeString": "function (int24) pure returns (uint160)" - } - }, - "id": 2565, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "25429:42:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "src": "25405:66:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "id": 2567, - "nodeType": "ExpressionStatement", - "src": "25405:66:5" - }, - { - "expression": { - "id": 2603, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "components": [ - { - "expression": { - "id": 2568, - "name": "state", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2479, - "src": "25606:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapState_$2366_memory_ptr", - "typeString": "struct UniswapV3Pool.SwapState memory" - } - }, - "id": 2570, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "sqrtPriceX96", - "nodeType": "MemberAccess", - "referencedDeclaration": 2357, - "src": "25606:18:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - { - "expression": { - "id": 2571, - "name": "step", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2506, - "src": "25626:4:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_StepComputations_$2381_memory_ptr", - "typeString": "struct UniswapV3Pool.StepComputations memory" - } - }, - "id": 2572, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "amountIn", - "nodeType": "MemberAccess", - "referencedDeclaration": 2376, - "src": "25626:13:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "expression": { - "id": 2573, - "name": "step", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2506, - "src": "25641:4:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_StepComputations_$2381_memory_ptr", - "typeString": "struct UniswapV3Pool.StepComputations memory" - } - }, - "id": 2574, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "amountOut", - "nodeType": "MemberAccess", - "referencedDeclaration": 2378, - "src": "25641:14:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "expression": { - "id": 2575, - "name": "step", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2506, - "src": "25657:4:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_StepComputations_$2381_memory_ptr", - "typeString": "struct UniswapV3Pool.StepComputations memory" - } - }, - "id": 2576, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "feeAmount", - "nodeType": "MemberAccess", - "referencedDeclaration": 2380, - "src": "25657:14:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 2577, - "isConstant": false, - "isInlineArray": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "TupleExpression", - "src": "25605:67:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint160_$_t_uint256_$_t_uint256_$_t_uint256_$", - "typeString": "tuple(uint160,uint256,uint256,uint256)" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "expression": { - "id": 2580, - "name": "state", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2479, - "src": "25717:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapState_$2366_memory_ptr", - "typeString": "struct UniswapV3Pool.SwapState memory" - } - }, - "id": 2581, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "sqrtPriceX96", - "nodeType": "MemberAccess", - "referencedDeclaration": 2357, - "src": "25717:18:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - { - "condition": { - "components": [ - { - "condition": { - "id": 2582, - "name": "zeroForOne", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2386, - "src": "25754:10:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseExpression": { - "commonType": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "id": 2590, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 2587, - "name": "step", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2506, - "src": "25811:4:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_StepComputations_$2381_memory_ptr", - "typeString": "struct UniswapV3Pool.StepComputations memory" - } - }, - "id": 2588, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "sqrtPriceNextX96", - "nodeType": "MemberAccess", - "referencedDeclaration": 2374, - "src": "25811:21:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "id": 2589, - "name": "sqrtPriceLimitX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2390, - "src": "25835:17:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "src": "25811:41:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 2591, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "Conditional", - "src": "25754:98:5", - "trueExpression": { - "commonType": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "id": 2586, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 2583, - "name": "step", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2506, - "src": "25767:4:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_StepComputations_$2381_memory_ptr", - "typeString": "struct UniswapV3Pool.StepComputations memory" - } - }, - "id": 2584, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "sqrtPriceNextX96", - "nodeType": "MemberAccess", - "referencedDeclaration": 2374, - "src": "25767:21:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "id": 2585, - "name": "sqrtPriceLimitX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2390, - "src": "25791:17:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "src": "25767:41:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "id": 2592, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "25753:100:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseExpression": { - "expression": { - "id": 2594, - "name": "step", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2506, - "src": "25916:4:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_StepComputations_$2381_memory_ptr", - "typeString": "struct UniswapV3Pool.StepComputations memory" - } - }, - "id": 2595, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "sqrtPriceNextX96", - "nodeType": "MemberAccess", - "referencedDeclaration": 2374, - "src": "25916:21:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "id": 2596, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "Conditional", - "src": "25753:184:5", - "trueExpression": { - "id": 2593, - "name": "sqrtPriceLimitX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2390, - "src": "25876:17:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - { - "expression": { - "id": 2597, - "name": "state", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2479, - "src": "25955:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapState_$2366_memory_ptr", - "typeString": "struct UniswapV3Pool.SwapState memory" - } - }, - "id": 2598, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "liquidity", - "nodeType": "MemberAccess", - "referencedDeclaration": 2365, - "src": "25955:15:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - { - "expression": { - "id": 2599, - "name": "state", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2479, - "src": "25988:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapState_$2366_memory_ptr", - "typeString": "struct UniswapV3Pool.SwapState memory" - } - }, - "id": 2600, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "amountSpecifiedRemaining", - "nodeType": "MemberAccess", - "referencedDeclaration": 2353, - "src": "25988:30:5", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - { - "id": 2601, - "name": "fee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1089, - "src": "26036:3:5", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - ], - "expression": { - "id": 2578, - "name": "SwapMath", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6624, - "src": "25675:8:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_SwapMath_$6624_$", - "typeString": "type(library SwapMath)" - } - }, - "id": 2579, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "computeSwapStep", - "nodeType": "MemberAccess", - "referencedDeclaration": 6623, - "src": "25675:24:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$_t_int256_$_t_uint24_$returns$_t_uint160_$_t_uint256_$_t_uint256_$_t_uint256_$", - "typeString": "function (uint160,uint160,uint128,int256,uint24) pure returns (uint160,uint256,uint256,uint256)" - } - }, - "id": 2602, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "25675:378:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint160_$_t_uint256_$_t_uint256_$_t_uint256_$", - "typeString": "tuple(uint160,uint256,uint256,uint256)" - } - }, - "src": "25605:448:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2604, - "nodeType": "ExpressionStatement", - "src": "25605:448:5" - }, - { - "condition": { - "id": 2605, - "name": "exactInput", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2473, - "src": "26072:10:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 2659, - "nodeType": "Block", - "src": "26296:206:5", - "statements": [ - { - "expression": { - "id": 2640, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 2633, - "name": "state", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2479, - "src": "26314:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapState_$2366_memory_ptr", - "typeString": "struct UniswapV3Pool.SwapState memory" - } - }, - "id": 2635, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "amountSpecifiedRemaining", - "nodeType": "MemberAccess", - "referencedDeclaration": 2353, - "src": "26314:30:5", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "expression": { - "id": 2636, - "name": "step", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2506, - "src": "26348:4:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_StepComputations_$2381_memory_ptr", - "typeString": "struct UniswapV3Pool.StepComputations memory" - } - }, - "id": 2637, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "amountOut", - "nodeType": "MemberAccess", - "referencedDeclaration": 2378, - "src": "26348:14:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 2638, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "toInt256", - "nodeType": "MemberAccess", - "referencedDeclaration": 5846, - "src": "26348:23:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_int256_$bound_to$_t_uint256_$", - "typeString": "function (uint256) pure returns (int256)" - } - }, - "id": 2639, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "26348:25:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "src": "26314:59:5", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "id": 2641, - "nodeType": "ExpressionStatement", - "src": "26314:59:5" - }, - { - "expression": { - "id": 2657, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 2642, - "name": "state", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2479, - "src": "26391:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapState_$2366_memory_ptr", - "typeString": "struct UniswapV3Pool.SwapState memory" - } - }, - "id": 2644, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "amountCalculated", - "nodeType": "MemberAccess", - "referencedDeclaration": 2355, - "src": "26391:22:5", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 2652, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 2648, - "name": "step", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2506, - "src": "26444:4:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_StepComputations_$2381_memory_ptr", - "typeString": "struct UniswapV3Pool.StepComputations memory" - } - }, - "id": 2649, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "amountIn", - "nodeType": "MemberAccess", - "referencedDeclaration": 2376, - "src": "26444:13:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "expression": { - "id": 2650, - "name": "step", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2506, - "src": "26460:4:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_StepComputations_$2381_memory_ptr", - "typeString": "struct UniswapV3Pool.StepComputations memory" - } - }, - "id": 2651, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "feeAmount", - "nodeType": "MemberAccess", - "referencedDeclaration": 2380, - "src": "26460:14:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "26444:30:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 2653, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "26443:32:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 2654, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "toInt256", - "nodeType": "MemberAccess", - "referencedDeclaration": 5846, - "src": "26443:41:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_int256_$bound_to$_t_uint256_$", - "typeString": "function (uint256) pure returns (int256)" - } - }, - "id": 2655, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "26443:43:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - ], - "expression": { - "expression": { - "id": 2645, - "name": "state", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2479, - "src": "26416:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapState_$2366_memory_ptr", - "typeString": "struct UniswapV3Pool.SwapState memory" - } - }, - "id": 2646, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "amountCalculated", - "nodeType": "MemberAccess", - "referencedDeclaration": 2355, - "src": "26416:22:5", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "id": 2647, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "add", - "nodeType": "MemberAccess", - "referencedDeclaration": 4841, - "src": "26416:26:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$", - "typeString": "function (int256,int256) pure returns (int256)" - } - }, - "id": 2656, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "26416:71:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "src": "26391:96:5", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "id": 2658, - "nodeType": "ExpressionStatement", - "src": "26391:96:5" - } - ] - }, - "id": 2660, - "nodeType": "IfStatement", - "src": "26068:434:5", - "trueBody": { - "id": 2632, - "nodeType": "Block", - "src": "26084:206:5", - "statements": [ - { - "expression": { - "id": 2617, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 2606, - "name": "state", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2479, - "src": "26102:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapState_$2366_memory_ptr", - "typeString": "struct UniswapV3Pool.SwapState memory" - } - }, - "id": 2608, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "amountSpecifiedRemaining", - "nodeType": "MemberAccess", - "referencedDeclaration": 2353, - "src": "26102:30:5", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "nodeType": "Assignment", - "operator": "-=", - "rightHandSide": { - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 2613, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 2609, - "name": "step", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2506, - "src": "26137:4:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_StepComputations_$2381_memory_ptr", - "typeString": "struct UniswapV3Pool.StepComputations memory" - } - }, - "id": 2610, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "amountIn", - "nodeType": "MemberAccess", - "referencedDeclaration": 2376, - "src": "26137:13:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "expression": { - "id": 2611, - "name": "step", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2506, - "src": "26153:4:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_StepComputations_$2381_memory_ptr", - "typeString": "struct UniswapV3Pool.StepComputations memory" - } - }, - "id": 2612, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "feeAmount", - "nodeType": "MemberAccess", - "referencedDeclaration": 2380, - "src": "26153:14:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "26137:30:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 2614, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "26136:32:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 2615, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "toInt256", - "nodeType": "MemberAccess", - "referencedDeclaration": 5846, - "src": "26136:41:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_int256_$bound_to$_t_uint256_$", - "typeString": "function (uint256) pure returns (int256)" - } - }, - "id": 2616, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "26136:43:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "src": "26102:77:5", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "id": 2618, - "nodeType": "ExpressionStatement", - "src": "26102:77:5" - }, - { - "expression": { - "id": 2630, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 2619, - "name": "state", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2479, - "src": "26197:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapState_$2366_memory_ptr", - "typeString": "struct UniswapV3Pool.SwapState memory" - } - }, - "id": 2621, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "amountCalculated", - "nodeType": "MemberAccess", - "referencedDeclaration": 2355, - "src": "26197:22:5", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "expression": { - "id": 2625, - "name": "step", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2506, - "src": "26249:4:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_StepComputations_$2381_memory_ptr", - "typeString": "struct UniswapV3Pool.StepComputations memory" - } - }, - "id": 2626, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "amountOut", - "nodeType": "MemberAccess", - "referencedDeclaration": 2378, - "src": "26249:14:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 2627, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "toInt256", - "nodeType": "MemberAccess", - "referencedDeclaration": 5846, - "src": "26249:23:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_int256_$bound_to$_t_uint256_$", - "typeString": "function (uint256) pure returns (int256)" - } - }, - "id": 2628, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "26249:25:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - ], - "expression": { - "expression": { - "id": 2622, - "name": "state", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2479, - "src": "26222:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapState_$2366_memory_ptr", - "typeString": "struct UniswapV3Pool.SwapState memory" - } - }, - "id": 2623, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "amountCalculated", - "nodeType": "MemberAccess", - "referencedDeclaration": 2355, - "src": "26222:22:5", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "id": 2624, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sub", - "nodeType": "MemberAccess", - "referencedDeclaration": 4868, - "src": "26222:26:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$", - "typeString": "function (int256,int256) pure returns (int256)" - } - }, - "id": 2629, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "26222:53:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "src": "26197:78:5", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "id": 2631, - "nodeType": "ExpressionStatement", - "src": "26197:78:5" - } - ] - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 2664, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 2661, - "name": "cache", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2450, - "src": "26637:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapCache_$2351_memory_ptr", - "typeString": "struct UniswapV3Pool.SwapCache memory" - } - }, - "id": 2662, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "feeProtocol", - "nodeType": "MemberAccess", - "referencedDeclaration": 2340, - "src": "26637:17:5", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 2663, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "26657:1:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "26637:21:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 2689, - "nodeType": "IfStatement", - "src": "26633:204:5", - "trueBody": { - "id": 2688, - "nodeType": "Block", - "src": "26660:177:5", - "statements": [ - { - "assignments": [ - 2666 - ], - "declarations": [ - { - "constant": false, - "id": 2666, - "mutability": "mutable", - "name": "delta", - "nodeType": "VariableDeclaration", - "scope": 2688, - "src": "26678:13:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2665, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "26678:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 2672, - "initialValue": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 2671, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 2667, - "name": "step", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2506, - "src": "26694:4:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_StepComputations_$2381_memory_ptr", - "typeString": "struct UniswapV3Pool.StepComputations memory" - } - }, - "id": 2668, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "feeAmount", - "nodeType": "MemberAccess", - "referencedDeclaration": 2380, - "src": "26694:14:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "expression": { - "id": 2669, - "name": "cache", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2450, - "src": "26711:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapCache_$2351_memory_ptr", - "typeString": "struct UniswapV3Pool.SwapCache memory" - } - }, - "id": 2670, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "feeProtocol", - "nodeType": "MemberAccess", - "referencedDeclaration": 2340, - "src": "26711:17:5", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "26694:34:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "26678:50:5" - }, - { - "expression": { - "id": 2677, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 2673, - "name": "step", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2506, - "src": "26746:4:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_StepComputations_$2381_memory_ptr", - "typeString": "struct UniswapV3Pool.StepComputations memory" - } - }, - "id": 2675, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "feeAmount", - "nodeType": "MemberAccess", - "referencedDeclaration": 2380, - "src": "26746:14:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "-=", - "rightHandSide": { - "id": 2676, - "name": "delta", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2666, - "src": "26764:5:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "26746:23:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 2678, - "nodeType": "ExpressionStatement", - "src": "26746:23:5" - }, - { - "expression": { - "id": 2686, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 2679, - "name": "state", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2479, - "src": "26787:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapState_$2366_memory_ptr", - "typeString": "struct UniswapV3Pool.SwapState memory" - } - }, - "id": 2681, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "protocolFee", - "nodeType": "MemberAccess", - "referencedDeclaration": 2363, - "src": "26787:17:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "arguments": [ - { - "id": 2684, - "name": "delta", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2666, - "src": "26816:5:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 2683, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "26808:7:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint128_$", - "typeString": "type(uint128)" - }, - "typeName": { - "id": 2682, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "26808:7:5", - "typeDescriptions": {} - } - }, - "id": 2685, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "26808:14:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "src": "26787:35:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "id": 2687, - "nodeType": "ExpressionStatement", - "src": "26787:35:5" - } - ] - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "id": 2693, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 2690, - "name": "state", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2479, - "src": "26896:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapState_$2366_memory_ptr", - "typeString": "struct UniswapV3Pool.SwapState memory" - } - }, - "id": 2691, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "liquidity", - "nodeType": "MemberAccess", - "referencedDeclaration": 2365, - "src": "26896:15:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 2692, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "26914:1:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "26896:19:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 2708, - "nodeType": "IfStatement", - "src": "26892:138:5", - "trueBody": { - "expression": { - "id": 2706, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 2694, - "name": "state", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2479, - "src": "26933:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapState_$2366_memory_ptr", - "typeString": "struct UniswapV3Pool.SwapState memory" - } - }, - "id": 2696, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "feeGrowthGlobalX128", - "nodeType": "MemberAccess", - "referencedDeclaration": 2361, - "src": "26933:25:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "arguments": [ - { - "expression": { - "id": 2699, - "name": "step", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2506, - "src": "26978:4:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_StepComputations_$2381_memory_ptr", - "typeString": "struct UniswapV3Pool.StepComputations memory" - } - }, - "id": 2700, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "feeAmount", - "nodeType": "MemberAccess", - "referencedDeclaration": 2380, - "src": "26978:14:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "expression": { - "id": 2701, - "name": "FixedPoint128", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4504, - "src": "26994:13:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_FixedPoint128_$4504_$", - "typeString": "type(library FixedPoint128)" - } - }, - "id": 2702, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "Q128", - "nodeType": "MemberAccess", - "referencedDeclaration": 4503, - "src": "26994:18:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "expression": { - "id": 2703, - "name": "state", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2479, - "src": "27014:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapState_$2366_memory_ptr", - "typeString": "struct UniswapV3Pool.SwapState memory" - } - }, - "id": 2704, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "liquidity", - "nodeType": "MemberAccess", - "referencedDeclaration": 2365, - "src": "27014:15:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - ], - "expression": { - "id": 2697, - "name": "FullMath", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4687, - "src": "26962:8:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_FullMath_$4687_$", - "typeString": "type(library FullMath)" - } - }, - "id": 2698, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "mulDiv", - "nodeType": "MemberAccess", - "referencedDeclaration": 4643, - "src": "26962:15:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 2705, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "26962:68:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "26933:97:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 2707, - "nodeType": "ExpressionStatement", - "src": "26933:97:5" - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "id": 2713, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 2709, - "name": "state", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2479, - "src": "27104:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapState_$2366_memory_ptr", - "typeString": "struct UniswapV3Pool.SwapState memory" - } - }, - "id": 2710, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "sqrtPriceX96", - "nodeType": "MemberAccess", - "referencedDeclaration": 2357, - "src": "27104:18:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "expression": { - "id": 2711, - "name": "step", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2506, - "src": "27126:4:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_StepComputations_$2381_memory_ptr", - "typeString": "struct UniswapV3Pool.StepComputations memory" - } - }, - "id": 2712, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "sqrtPriceNextX96", - "nodeType": "MemberAccess", - "referencedDeclaration": 2374, - "src": "27126:21:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "src": "27104:43:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "condition": { - "commonType": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "id": 2813, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 2809, - "name": "state", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2479, - "src": "28972:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapState_$2366_memory_ptr", - "typeString": "struct UniswapV3Pool.SwapState memory" - } - }, - "id": 2810, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "sqrtPriceX96", - "nodeType": "MemberAccess", - "referencedDeclaration": 2357, - "src": "28972:18:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "expression": { - "id": 2811, - "name": "step", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2506, - "src": "28994:4:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_StepComputations_$2381_memory_ptr", - "typeString": "struct UniswapV3Pool.StepComputations memory" - } - }, - "id": 2812, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "sqrtPriceStartX96", - "nodeType": "MemberAccess", - "referencedDeclaration": 2368, - "src": "28994:22:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "src": "28972:44:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 2825, - "nodeType": "IfStatement", - "src": "28968:263:5", - "trueBody": { - "id": 2824, - "nodeType": "Block", - "src": "29018:213:5", - "statements": [ - { - "expression": { - "id": 2822, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 2814, - "name": "state", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2479, - "src": "29156:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapState_$2366_memory_ptr", - "typeString": "struct UniswapV3Pool.SwapState memory" - } - }, - "id": 2816, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "tick", - "nodeType": "MemberAccess", - "referencedDeclaration": 2359, - "src": "29156:10:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "expression": { - "id": 2819, - "name": "state", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2479, - "src": "29197:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapState_$2366_memory_ptr", - "typeString": "struct UniswapV3Pool.SwapState memory" - } - }, - "id": 2820, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "sqrtPriceX96", - "nodeType": "MemberAccess", - "referencedDeclaration": 2357, - "src": "29197:18:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - ], - "expression": { - "id": 2817, - "name": "TickMath", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7867, - "src": "29169:8:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_TickMath_$7867_$", - "typeString": "type(library TickMath)" - } - }, - "id": 2818, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "getTickAtSqrtRatio", - "nodeType": "MemberAccess", - "referencedDeclaration": 7866, - "src": "29169:27:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint160_$returns$_t_int24_$", - "typeString": "function (uint160) pure returns (int24)" - } - }, - "id": 2821, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "29169:47:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "src": "29156:60:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "id": 2823, - "nodeType": "ExpressionStatement", - "src": "29156:60:5" - } - ] - } - }, - "id": 2826, - "nodeType": "IfStatement", - "src": "27100:2131:5", - "trueBody": { - "id": 2808, - "nodeType": "Block", - "src": "27149:1813:5", - "statements": [ - { - "condition": { - "expression": { - "id": 2714, - "name": "step", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2506, - "src": "27242:4:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_StepComputations_$2381_memory_ptr", - "typeString": "struct UniswapV3Pool.StepComputations memory" - } - }, - "id": 2715, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "initialized", - "nodeType": "MemberAccess", - "referencedDeclaration": 2372, - "src": "27242:16:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 2794, - "nodeType": "IfStatement", - "src": "27238:1632:5", - "trueBody": { - "id": 2793, - "nodeType": "Block", - "src": "27260:1610:5", - "statements": [ - { - "condition": { - "id": 2718, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "27456:32:5", - "subExpression": { - "expression": { - "id": 2716, - "name": "cache", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2450, - "src": "27457:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapCache_$2351_memory_ptr", - "typeString": "struct UniswapV3Pool.SwapCache memory" - } - }, - "id": 2717, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "computedLatestObservation", - "nodeType": "MemberAccess", - "referencedDeclaration": 2350, - "src": "27457:31:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 2748, - "nodeType": "IfStatement", - "src": "27452:565:5", - "trueBody": { - "id": 2747, - "nodeType": "Block", - "src": "27490:527:5", - "statements": [ - { - "expression": { - "id": 2739, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "components": [ - { - "expression": { - "id": 2719, - "name": "cache", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2450, - "src": "27517:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapCache_$2351_memory_ptr", - "typeString": "struct UniswapV3Pool.SwapCache memory" - } - }, - "id": 2721, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "tickCumulative", - "nodeType": "MemberAccess", - "referencedDeclaration": 2346, - "src": "27517:20:5", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - } - }, - { - "expression": { - "id": 2722, - "name": "cache", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2450, - "src": "27539:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapCache_$2351_memory_ptr", - "typeString": "struct UniswapV3Pool.SwapCache memory" - } - }, - "id": 2723, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "secondsPerLiquidityCumulativeX128", - "nodeType": "MemberAccess", - "referencedDeclaration": 2348, - "src": "27539:39:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - } - ], - "id": 2724, - "isConstant": false, - "isInlineArray": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "TupleExpression", - "src": "27516:63:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_int56_$_t_uint160_$", - "typeString": "tuple(int56,uint160)" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "expression": { - "id": 2727, - "name": "cache", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2450, - "src": "27638:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapCache_$2351_memory_ptr", - "typeString": "struct UniswapV3Pool.SwapCache memory" - } - }, - "id": 2728, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "blockTimestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": 2344, - "src": "27638:20:5", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - { - "hexValue": "30", - "id": 2729, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "27688:1:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - { - "expression": { - "id": 2730, - "name": "slot0Start", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2410, - "src": "27719:10:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Slot0_$1112_memory_ptr", - "typeString": "struct UniswapV3Pool.Slot0 memory" - } - }, - "id": 2731, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "tick", - "nodeType": "MemberAccess", - "referencedDeclaration": 1101, - "src": "27719:15:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - { - "expression": { - "id": 2732, - "name": "slot0Start", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2410, - "src": "27764:10:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Slot0_$1112_memory_ptr", - "typeString": "struct UniswapV3Pool.Slot0 memory" - } - }, - "id": 2733, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "observationIndex", - "nodeType": "MemberAccess", - "referencedDeclaration": 1103, - "src": "27764:27:5", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - { - "expression": { - "id": 2734, - "name": "cache", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2450, - "src": "27821:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapCache_$2351_memory_ptr", - "typeString": "struct UniswapV3Pool.SwapCache memory" - } - }, - "id": 2735, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "liquidityStart", - "nodeType": "MemberAccess", - "referencedDeclaration": 2342, - "src": "27821:20:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - { - "expression": { - "id": 2736, - "name": "slot0Start", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2410, - "src": "27871:10:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Slot0_$1112_memory_ptr", - "typeString": "struct UniswapV3Pool.Slot0 memory" - } - }, - "id": 2737, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "observationCardinality", - "nodeType": "MemberAccess", - "referencedDeclaration": 1105, - "src": "27871:33:5", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - ], - "expression": { - "id": 2725, - "name": "observations", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1161, - "src": "27582:12:5", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Observation_$4881_storage_$65535_storage", - "typeString": "struct Oracle.Observation storage ref[65535] storage ref" - } - }, - "id": 2726, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "observeSingle", - "nodeType": "MemberAccess", - "referencedDeclaration": 5517, - "src": "27582:26:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_array$_t_struct$_Observation_$4881_storage_$65535_storage_ptr_$_t_uint32_$_t_uint32_$_t_int24_$_t_uint16_$_t_uint128_$_t_uint16_$returns$_t_int56_$_t_uint160_$bound_to$_t_array$_t_struct$_Observation_$4881_storage_$65535_storage_ptr_$", - "typeString": "function (struct Oracle.Observation storage ref[65535] storage pointer,uint32,uint32,int24,uint16,uint128,uint16) view returns (int56,uint160)" - } - }, - "id": 2738, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "27582:348:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_int56_$_t_uint160_$", - "typeString": "tuple(int56,uint160)" - } - }, - "src": "27516:414:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2740, - "nodeType": "ExpressionStatement", - "src": "27516:414:5" - }, - { - "expression": { - "id": 2745, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 2741, - "name": "cache", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2450, - "src": "27956:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapCache_$2351_memory_ptr", - "typeString": "struct UniswapV3Pool.SwapCache memory" - } - }, - "id": 2743, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "computedLatestObservation", - "nodeType": "MemberAccess", - "referencedDeclaration": 2350, - "src": "27956:31:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "74727565", - "id": 2744, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "27990:4:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "27956:38:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 2746, - "nodeType": "ExpressionStatement", - "src": "27956:38:5" - } - ] - } - }, - { - "assignments": [ - 2750 - ], - "declarations": [ - { - "constant": false, - "id": 2750, - "mutability": "mutable", - "name": "liquidityNet", - "nodeType": "VariableDeclaration", - "scope": 2793, - "src": "28038:19:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - }, - "typeName": { - "id": 2749, - "name": "int128", - "nodeType": "ElementaryTypeName", - "src": "28038:6:5", - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - }, - "visibility": "internal" - } - ], - "id": 2774, - "initialValue": { - "arguments": [ - { - "expression": { - "id": 2753, - "name": "step", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2506, - "src": "28125:4:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_StepComputations_$2381_memory_ptr", - "typeString": "struct UniswapV3Pool.StepComputations memory" - } - }, - "id": 2754, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "tickNext", - "nodeType": "MemberAccess", - "referencedDeclaration": 2370, - "src": "28125:13:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - { - "components": [ - { - "condition": { - "id": 2755, - "name": "zeroForOne", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2386, - "src": "28169:10:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseExpression": { - "id": 2758, - "name": "feeGrowthGlobal0X128", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1120, - "src": "28210:20:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 2759, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "Conditional", - "src": "28169:61:5", - "trueExpression": { - "expression": { - "id": 2756, - "name": "state", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2479, - "src": "28182:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapState_$2366_memory_ptr", - "typeString": "struct UniswapV3Pool.SwapState memory" - } - }, - "id": 2757, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "feeGrowthGlobalX128", - "nodeType": "MemberAccess", - "referencedDeclaration": 2361, - "src": "28182:25:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 2760, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "28168:63:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "components": [ - { - "condition": { - "id": 2761, - "name": "zeroForOne", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2386, - "src": "28262:10:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseExpression": { - "expression": { - "id": 2763, - "name": "state", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2479, - "src": "28298:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapState_$2366_memory_ptr", - "typeString": "struct UniswapV3Pool.SwapState memory" - } - }, - "id": 2764, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "feeGrowthGlobalX128", - "nodeType": "MemberAccess", - "referencedDeclaration": 2361, - "src": "28298:25:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 2765, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "Conditional", - "src": "28262:61:5", - "trueExpression": { - "id": 2762, - "name": "feeGrowthGlobal1X128", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1124, - "src": "28275:20:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 2766, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "28261:63:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "expression": { - "id": 2767, - "name": "cache", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2450, - "src": "28354:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapCache_$2351_memory_ptr", - "typeString": "struct UniswapV3Pool.SwapCache memory" - } - }, - "id": 2768, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "secondsPerLiquidityCumulativeX128", - "nodeType": "MemberAccess", - "referencedDeclaration": 2348, - "src": "28354:39:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - { - "expression": { - "id": 2769, - "name": "cache", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2450, - "src": "28423:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapCache_$2351_memory_ptr", - "typeString": "struct UniswapV3Pool.SwapCache memory" - } - }, - "id": 2770, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "tickCumulative", - "nodeType": "MemberAccess", - "referencedDeclaration": 2346, - "src": "28423:20:5", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - } - }, - { - "expression": { - "id": 2771, - "name": "cache", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2450, - "src": "28473:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapCache_$2351_memory_ptr", - "typeString": "struct UniswapV3Pool.SwapCache memory" - } - }, - "id": 2772, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "blockTimestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": 2344, - "src": "28473:20:5", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - { - "typeIdentifier": "t_int56", - "typeString": "int56" - }, - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - ], - "expression": { - "id": 2751, - "name": "ticks", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1143, - "src": "28084:5:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Info_$6654_storage_$", - "typeString": "mapping(int24 => struct Tick.Info storage ref)" - } - }, - "id": 2752, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "cross", - "nodeType": "MemberAccess", - "referencedDeclaration": 7075, - "src": "28084:11:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_mapping$_t_int24_$_t_struct$_Info_$6654_storage_$_$_t_int24_$_t_uint256_$_t_uint256_$_t_uint160_$_t_int56_$_t_uint32_$returns$_t_int128_$bound_to$_t_mapping$_t_int24_$_t_struct$_Info_$6654_storage_$_$", - "typeString": "function (mapping(int24 => struct Tick.Info storage ref),int24,uint256,uint256,uint160,int56,uint32) returns (int128)" - } - }, - "id": 2773, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "28084:435:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "28038:481:5" - }, - { - "condition": { - "id": 2775, - "name": "zeroForOne", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2386, - "src": "28717:10:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 2781, - "nodeType": "IfStatement", - "src": "28713:44:5", - "trueBody": { - "expression": { - "id": 2779, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 2776, - "name": "liquidityNet", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2750, - "src": "28729:12:5", - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 2778, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "-", - "prefix": true, - "src": "28744:13:5", - "subExpression": { - "id": 2777, - "name": "liquidityNet", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2750, - "src": "28745:12:5", - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - }, - "src": "28729:28:5", - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - }, - "id": 2780, - "nodeType": "ExpressionStatement", - "src": "28729:28:5" - } - }, - { - "expression": { - "id": 2791, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 2782, - "name": "state", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2479, - "src": "28780:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapState_$2366_memory_ptr", - "typeString": "struct UniswapV3Pool.SwapState memory" - } - }, - "id": 2784, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "liquidity", - "nodeType": "MemberAccess", - "referencedDeclaration": 2365, - "src": "28780:15:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "expression": { - "id": 2787, - "name": "state", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2479, - "src": "28821:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapState_$2366_memory_ptr", - "typeString": "struct UniswapV3Pool.SwapState memory" - } - }, - "id": 2788, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "liquidity", - "nodeType": "MemberAccess", - "referencedDeclaration": 2365, - "src": "28821:15:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - { - "id": 2789, - "name": "liquidityNet", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2750, - "src": "28838:12:5", - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - ], - "expression": { - "id": 2785, - "name": "LiquidityMath", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4739, - "src": "28798:13:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_LiquidityMath_$4739_$", - "typeString": "type(library LiquidityMath)" - } - }, - "id": 2786, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "addDelta", - "nodeType": "MemberAccess", - "referencedDeclaration": 4738, - "src": "28798:22:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint128_$_t_int128_$returns$_t_uint128_$", - "typeString": "function (uint128,int128) pure returns (uint128)" - } - }, - "id": 2790, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "28798:53:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "src": "28780:71:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "id": 2792, - "nodeType": "ExpressionStatement", - "src": "28780:71:5" - } - ] - } - }, - { - "expression": { - "id": 2806, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 2795, - "name": "state", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2479, - "src": "28888:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapState_$2366_memory_ptr", - "typeString": "struct UniswapV3Pool.SwapState memory" - } - }, - "id": 2797, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "tick", - "nodeType": "MemberAccess", - "referencedDeclaration": 2359, - "src": "28888:10:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "condition": { - "id": 2798, - "name": "zeroForOne", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2386, - "src": "28901:10:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseExpression": { - "expression": { - "id": 2803, - "name": "step", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2506, - "src": "28934:4:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_StepComputations_$2381_memory_ptr", - "typeString": "struct UniswapV3Pool.StepComputations memory" - } - }, - "id": 2804, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "tickNext", - "nodeType": "MemberAccess", - "referencedDeclaration": 2370, - "src": "28934:13:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "id": 2805, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "Conditional", - "src": "28901:46:5", - "trueExpression": { - "commonType": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "id": 2802, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 2799, - "name": "step", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2506, - "src": "28914:4:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_StepComputations_$2381_memory_ptr", - "typeString": "struct UniswapV3Pool.StepComputations memory" - } - }, - "id": 2800, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "tickNext", - "nodeType": "MemberAccess", - "referencedDeclaration": 2370, - "src": "28914:13:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "hexValue": "31", - "id": 2801, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "28930:1:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "28914:17:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "src": "28888:59:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "id": 2807, - "nodeType": "ExpressionStatement", - "src": "28888:59:5" - } - ] - } - } - ] - }, - "condition": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 2504, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "id": 2499, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 2496, - "name": "state", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2479, - "src": "24627:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapState_$2366_memory_ptr", - "typeString": "struct UniswapV3Pool.SwapState memory" - } - }, - "id": 2497, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "amountSpecifiedRemaining", - "nodeType": "MemberAccess", - "referencedDeclaration": 2353, - "src": "24627:30:5", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "hexValue": "30", - "id": 2498, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "24661:1:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "24627:35:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "id": 2503, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 2500, - "name": "state", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2479, - "src": "24666:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapState_$2366_memory_ptr", - "typeString": "struct UniswapV3Pool.SwapState memory" - } - }, - "id": 2501, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "sqrtPriceX96", - "nodeType": "MemberAccess", - "referencedDeclaration": 2357, - "src": "24666:18:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "id": 2502, - "name": "sqrtPriceLimitX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2390, - "src": "24688:17:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "src": "24666:39:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "24627:78:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 2828, - "nodeType": "WhileStatement", - "src": "24620:4621:5" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "id": 2833, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 2829, - "name": "state", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2479, - "src": "29323:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapState_$2366_memory_ptr", - "typeString": "struct UniswapV3Pool.SwapState memory" - } - }, - "id": 2830, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "tick", - "nodeType": "MemberAccess", - "referencedDeclaration": 2359, - "src": "29323:10:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "expression": { - "id": 2831, - "name": "slot0Start", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2410, - "src": "29337:10:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Slot0_$1112_memory_ptr", - "typeString": "struct UniswapV3Pool.Slot0 memory" - } - }, - "id": 2832, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "tick", - "nodeType": "MemberAccess", - "referencedDeclaration": 1101, - "src": "29337:15:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "src": "29323:29:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 2881, - "nodeType": "Block", - "src": "30035:111:5", - "statements": [ - { - "expression": { - "id": 2879, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 2874, - "name": "slot0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1116, - "src": "30096:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Slot0_$1112_storage", - "typeString": "struct UniswapV3Pool.Slot0 storage ref" - } - }, - "id": 2876, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "sqrtPriceX96", - "nodeType": "MemberAccess", - "referencedDeclaration": 1099, - "src": "30096:18:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "expression": { - "id": 2877, - "name": "state", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2479, - "src": "30117:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapState_$2366_memory_ptr", - "typeString": "struct UniswapV3Pool.SwapState memory" - } - }, - "id": 2878, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "sqrtPriceX96", - "nodeType": "MemberAccess", - "referencedDeclaration": 2357, - "src": "30117:18:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "src": "30096:39:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "id": 2880, - "nodeType": "ExpressionStatement", - "src": "30096:39:5" - } - ] - }, - "id": 2882, - "nodeType": "IfStatement", - "src": "29319:827:5", - "trueBody": { - "id": 2873, - "nodeType": "Block", - "src": "29354:675:5", - "statements": [ - { - "assignments": [ - 2835, - 2837 - ], - "declarations": [ - { - "constant": false, - "id": 2835, - "mutability": "mutable", - "name": "observationIndex", - "nodeType": "VariableDeclaration", - "scope": 2873, - "src": "29369:23:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - "typeName": { - "id": 2834, - "name": "uint16", - "nodeType": "ElementaryTypeName", - "src": "29369:6:5", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2837, - "mutability": "mutable", - "name": "observationCardinality", - "nodeType": "VariableDeclaration", - "scope": 2873, - "src": "29394:29:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - "typeName": { - "id": 2836, - "name": "uint16", - "nodeType": "ElementaryTypeName", - "src": "29394:6:5", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "visibility": "internal" - } - ], - "id": 2853, - "initialValue": { - "arguments": [ - { - "expression": { - "id": 2840, - "name": "slot0Start", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2410, - "src": "29483:10:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Slot0_$1112_memory_ptr", - "typeString": "struct UniswapV3Pool.Slot0 memory" - } - }, - "id": 2841, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "observationIndex", - "nodeType": "MemberAccess", - "referencedDeclaration": 1103, - "src": "29483:27:5", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - { - "expression": { - "id": 2842, - "name": "cache", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2450, - "src": "29532:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapCache_$2351_memory_ptr", - "typeString": "struct UniswapV3Pool.SwapCache memory" - } - }, - "id": 2843, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "blockTimestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": 2344, - "src": "29532:20:5", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - { - "expression": { - "id": 2844, - "name": "slot0Start", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2410, - "src": "29574:10:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Slot0_$1112_memory_ptr", - "typeString": "struct UniswapV3Pool.Slot0 memory" - } - }, - "id": 2845, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "tick", - "nodeType": "MemberAccess", - "referencedDeclaration": 1101, - "src": "29574:15:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - { - "expression": { - "id": 2846, - "name": "cache", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2450, - "src": "29611:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapCache_$2351_memory_ptr", - "typeString": "struct UniswapV3Pool.SwapCache memory" - } - }, - "id": 2847, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "liquidityStart", - "nodeType": "MemberAccess", - "referencedDeclaration": 2342, - "src": "29611:20:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - { - "expression": { - "id": 2848, - "name": "slot0Start", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2410, - "src": "29653:10:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Slot0_$1112_memory_ptr", - "typeString": "struct UniswapV3Pool.Slot0 memory" - } - }, - "id": 2849, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "observationCardinality", - "nodeType": "MemberAccess", - "referencedDeclaration": 1105, - "src": "29653:33:5", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - { - "expression": { - "id": 2850, - "name": "slot0Start", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2410, - "src": "29708:10:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Slot0_$1112_memory_ptr", - "typeString": "struct UniswapV3Pool.Slot0 memory" - } - }, - "id": 2851, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "observationCardinalityNext", - "nodeType": "MemberAccess", - "referencedDeclaration": 1107, - "src": "29708:37:5", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - ], - "expression": { - "id": 2838, - "name": "observations", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1161, - "src": "29443:12:5", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Observation_$4881_storage_$65535_storage", - "typeString": "struct Oracle.Observation storage ref[65535] storage ref" - } - }, - "id": 2839, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "write", - "nodeType": "MemberAccess", - "referencedDeclaration": 5047, - "src": "29443:18:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_struct$_Observation_$4881_storage_$65535_storage_ptr_$_t_uint16_$_t_uint32_$_t_int24_$_t_uint128_$_t_uint16_$_t_uint16_$returns$_t_uint16_$_t_uint16_$bound_to$_t_array$_t_struct$_Observation_$4881_storage_$65535_storage_ptr_$", - "typeString": "function (struct Oracle.Observation storage ref[65535] storage pointer,uint16,uint32,int24,uint128,uint16,uint16) returns (uint16,uint16)" - } - }, - "id": 2852, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "29443:320:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint16_$_t_uint16_$", - "typeString": "tuple(uint16,uint16)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "29368:395:5" - }, - { - "expression": { - "id": 2871, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "components": [ - { - "expression": { - "id": 2854, - "name": "slot0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1116, - "src": "29778:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Slot0_$1112_storage", - "typeString": "struct UniswapV3Pool.Slot0 storage ref" - } - }, - "id": 2856, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "sqrtPriceX96", - "nodeType": "MemberAccess", - "referencedDeclaration": 1099, - "src": "29778:18:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - { - "expression": { - "id": 2857, - "name": "slot0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1116, - "src": "29798:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Slot0_$1112_storage", - "typeString": "struct UniswapV3Pool.Slot0 storage ref" - } - }, - "id": 2858, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "tick", - "nodeType": "MemberAccess", - "referencedDeclaration": 1101, - "src": "29798:10:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - { - "expression": { - "id": 2859, - "name": "slot0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1116, - "src": "29810:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Slot0_$1112_storage", - "typeString": "struct UniswapV3Pool.Slot0 storage ref" - } - }, - "id": 2860, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "observationIndex", - "nodeType": "MemberAccess", - "referencedDeclaration": 1103, - "src": "29810:22:5", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - { - "expression": { - "id": 2861, - "name": "slot0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1116, - "src": "29834:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Slot0_$1112_storage", - "typeString": "struct UniswapV3Pool.Slot0 storage ref" - } - }, - "id": 2862, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "observationCardinality", - "nodeType": "MemberAccess", - "referencedDeclaration": 1105, - "src": "29834:28:5", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - } - ], - "id": 2863, - "isConstant": false, - "isInlineArray": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "TupleExpression", - "src": "29777:86:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint160_$_t_int24_$_t_uint16_$_t_uint16_$", - "typeString": "tuple(uint160,int24,uint16,uint16)" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "components": [ - { - "expression": { - "id": 2864, - "name": "state", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2479, - "src": "29884:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapState_$2366_memory_ptr", - "typeString": "struct UniswapV3Pool.SwapState memory" - } - }, - "id": 2865, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "sqrtPriceX96", - "nodeType": "MemberAccess", - "referencedDeclaration": 2357, - "src": "29884:18:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - { - "expression": { - "id": 2866, - "name": "state", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2479, - "src": "29920:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapState_$2366_memory_ptr", - "typeString": "struct UniswapV3Pool.SwapState memory" - } - }, - "id": 2867, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "tick", - "nodeType": "MemberAccess", - "referencedDeclaration": 2359, - "src": "29920:10:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - { - "id": 2868, - "name": "observationIndex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2835, - "src": "29948:16:5", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - { - "id": 2869, - "name": "observationCardinality", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2837, - "src": "29982:22:5", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - } - ], - "id": 2870, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "29866:152:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint160_$_t_int24_$_t_uint16_$_t_uint16_$", - "typeString": "tuple(uint160,int24,uint16,uint16)" - } - }, - "src": "29777:241:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2872, - "nodeType": "ExpressionStatement", - "src": "29777:241:5" - } - ] - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "id": 2887, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 2883, - "name": "cache", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2450, - "src": "30202:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapCache_$2351_memory_ptr", - "typeString": "struct UniswapV3Pool.SwapCache memory" - } - }, - "id": 2884, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "liquidityStart", - "nodeType": "MemberAccess", - "referencedDeclaration": 2342, - "src": "30202:20:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "expression": { - "id": 2885, - "name": "state", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2479, - "src": "30226:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapState_$2366_memory_ptr", - "typeString": "struct UniswapV3Pool.SwapState memory" - } - }, - "id": 2886, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "liquidity", - "nodeType": "MemberAccess", - "referencedDeclaration": 2365, - "src": "30226:15:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "src": "30202:39:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 2893, - "nodeType": "IfStatement", - "src": "30198:72:5", - "trueBody": { - "expression": { - "id": 2891, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 2888, - "name": "liquidity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1137, - "src": "30243:9:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "expression": { - "id": 2889, - "name": "state", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2479, - "src": "30255:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapState_$2366_memory_ptr", - "typeString": "struct UniswapV3Pool.SwapState memory" - } - }, - "id": 2890, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "liquidity", - "nodeType": "MemberAccess", - "referencedDeclaration": 2365, - "src": "30255:15:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "src": "30243:27:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "id": 2892, - "nodeType": "ExpressionStatement", - "src": "30243:27:5" - } - }, - { - "condition": { - "id": 2894, - "name": "zeroForOne", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2386, - "src": "30452:10:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 2930, - "nodeType": "Block", - "src": "30624:154:5", - "statements": [ - { - "expression": { - "id": 2916, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 2913, - "name": "feeGrowthGlobal1X128", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1124, - "src": "30638:20:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "expression": { - "id": 2914, - "name": "state", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2479, - "src": "30661:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapState_$2366_memory_ptr", - "typeString": "struct UniswapV3Pool.SwapState memory" - } - }, - "id": 2915, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "feeGrowthGlobalX128", - "nodeType": "MemberAccess", - "referencedDeclaration": 2361, - "src": "30661:25:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "30638:48:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 2917, - "nodeType": "ExpressionStatement", - "src": "30638:48:5" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "id": 2921, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 2918, - "name": "state", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2479, - "src": "30704:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapState_$2366_memory_ptr", - "typeString": "struct UniswapV3Pool.SwapState memory" - } - }, - "id": 2919, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "protocolFee", - "nodeType": "MemberAccess", - "referencedDeclaration": 2363, - "src": "30704:17:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 2920, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "30724:1:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "30704:21:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 2929, - "nodeType": "IfStatement", - "src": "30700:67:5", - "trueBody": { - "expression": { - "id": 2927, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 2922, - "name": "protocolFees", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1133, - "src": "30727:12:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ProtocolFees_$1129_storage", - "typeString": "struct UniswapV3Pool.ProtocolFees storage ref" - } - }, - "id": 2924, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "token1", - "nodeType": "MemberAccess", - "referencedDeclaration": 1128, - "src": "30727:19:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "expression": { - "id": 2925, - "name": "state", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2479, - "src": "30750:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapState_$2366_memory_ptr", - "typeString": "struct UniswapV3Pool.SwapState memory" - } - }, - "id": 2926, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "protocolFee", - "nodeType": "MemberAccess", - "referencedDeclaration": 2363, - "src": "30750:17:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "src": "30727:40:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "id": 2928, - "nodeType": "ExpressionStatement", - "src": "30727:40:5" - } - } - ] - }, - "id": 2931, - "nodeType": "IfStatement", - "src": "30448:330:5", - "trueBody": { - "id": 2912, - "nodeType": "Block", - "src": "30464:154:5", - "statements": [ - { - "expression": { - "id": 2898, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 2895, - "name": "feeGrowthGlobal0X128", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1120, - "src": "30478:20:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "expression": { - "id": 2896, - "name": "state", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2479, - "src": "30501:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapState_$2366_memory_ptr", - "typeString": "struct UniswapV3Pool.SwapState memory" - } - }, - "id": 2897, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "feeGrowthGlobalX128", - "nodeType": "MemberAccess", - "referencedDeclaration": 2361, - "src": "30501:25:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "30478:48:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 2899, - "nodeType": "ExpressionStatement", - "src": "30478:48:5" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "id": 2903, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 2900, - "name": "state", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2479, - "src": "30544:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapState_$2366_memory_ptr", - "typeString": "struct UniswapV3Pool.SwapState memory" - } - }, - "id": 2901, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "protocolFee", - "nodeType": "MemberAccess", - "referencedDeclaration": 2363, - "src": "30544:17:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 2902, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "30564:1:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "30544:21:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 2911, - "nodeType": "IfStatement", - "src": "30540:67:5", - "trueBody": { - "expression": { - "id": 2909, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 2904, - "name": "protocolFees", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1133, - "src": "30567:12:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ProtocolFees_$1129_storage", - "typeString": "struct UniswapV3Pool.ProtocolFees storage ref" - } - }, - "id": 2906, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "token0", - "nodeType": "MemberAccess", - "referencedDeclaration": 1126, - "src": "30567:19:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "expression": { - "id": 2907, - "name": "state", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2479, - "src": "30590:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapState_$2366_memory_ptr", - "typeString": "struct UniswapV3Pool.SwapState memory" - } - }, - "id": 2908, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "protocolFee", - "nodeType": "MemberAccess", - "referencedDeclaration": 2363, - "src": "30590:17:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "src": "30567:40:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "id": 2910, - "nodeType": "ExpressionStatement", - "src": "30567:40:5" - } - } - ] - } - }, - { - "expression": { - "id": 2953, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "components": [ - { - "id": 2932, - "name": "amount0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2398, - "src": "30789:7:5", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - { - "id": 2933, - "name": "amount1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2400, - "src": "30798:7:5", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - } - ], - "id": 2934, - "isConstant": false, - "isInlineArray": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "TupleExpression", - "src": "30788:18:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_int256_$_t_int256_$", - "typeString": "tuple(int256,int256)" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "condition": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 2937, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 2935, - "name": "zeroForOne", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2386, - "src": "30809:10:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "id": 2936, - "name": "exactInput", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2473, - "src": "30823:10:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "30809:24:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseExpression": { - "components": [ - { - "expression": { - "id": 2945, - "name": "state", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2479, - "src": "30938:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapState_$2366_memory_ptr", - "typeString": "struct UniswapV3Pool.SwapState memory" - } - }, - "id": 2946, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "amountCalculated", - "nodeType": "MemberAccess", - "referencedDeclaration": 2355, - "src": "30938:22:5", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - { - "commonType": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "id": 2950, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 2947, - "name": "amountSpecified", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2388, - "src": "30962:15:5", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "expression": { - "id": 2948, - "name": "state", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2479, - "src": "30980:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapState_$2366_memory_ptr", - "typeString": "struct UniswapV3Pool.SwapState memory" - } - }, - "id": 2949, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "amountSpecifiedRemaining", - "nodeType": "MemberAccess", - "referencedDeclaration": 2353, - "src": "30980:30:5", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "src": "30962:48:5", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - } - ], - "id": 2951, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "30937:74:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_int256_$_t_int256_$", - "typeString": "tuple(int256,int256)" - } - }, - "id": 2952, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "Conditional", - "src": "30809:202:5", - "trueExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "id": 2941, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 2938, - "name": "amountSpecified", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2388, - "src": "30849:15:5", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "expression": { - "id": 2939, - "name": "state", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2479, - "src": "30867:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapState_$2366_memory_ptr", - "typeString": "struct UniswapV3Pool.SwapState memory" - } - }, - "id": 2940, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "amountSpecifiedRemaining", - "nodeType": "MemberAccess", - "referencedDeclaration": 2353, - "src": "30867:30:5", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "src": "30849:48:5", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - { - "expression": { - "id": 2942, - "name": "state", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2479, - "src": "30899:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapState_$2366_memory_ptr", - "typeString": "struct UniswapV3Pool.SwapState memory" - } - }, - "id": 2943, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "amountCalculated", - "nodeType": "MemberAccess", - "referencedDeclaration": 2355, - "src": "30899:22:5", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - } - ], - "id": 2944, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "30848:74:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_int256_$_t_int256_$", - "typeString": "tuple(int256,int256)" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_int256_$_t_int256_$", - "typeString": "tuple(int256,int256)" - } - }, - "src": "30788:223:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2954, - "nodeType": "ExpressionStatement", - "src": "30788:223:5" - }, - { - "condition": { - "id": 2955, - "name": "zeroForOne", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2386, - "src": "31074:10:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 3047, - "nodeType": "Block", - "src": "31423:331:5", - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "id": 3004, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 3002, - "name": "amount0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2398, - "src": "31441:7:5", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "hexValue": "30", - "id": 3003, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "31451:1:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "31441:11:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 3017, - "nodeType": "IfStatement", - "src": "31437:82:5", - "trueBody": { - "expression": { - "arguments": [ - { - "id": 3008, - "name": "token0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1081, - "src": "31482:6:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 3009, - "name": "recipient", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2384, - "src": "31490:9:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "arguments": [ - { - "id": 3013, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "-", - "prefix": true, - "src": "31509:8:5", - "subExpression": { - "id": 3012, - "name": "amount0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2398, - "src": "31510:7:5", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - ], - "id": 3011, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "31501:7:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 3010, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "31501:7:5", - "typeDescriptions": {} - } - }, - "id": 3014, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "31501:17:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 3005, - "name": "TransferHelper", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7918, - "src": "31454:14:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_TransferHelper_$7918_$", - "typeString": "type(library TransferHelper)" - } - }, - "id": 3007, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "safeTransfer", - "nodeType": "MemberAccess", - "referencedDeclaration": 7917, - "src": "31454:27:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,address,uint256)" - } - }, - "id": 3015, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "31454:65:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 3016, - "nodeType": "ExpressionStatement", - "src": "31454:65:5" - } - }, - { - "assignments": [ - 3019 - ], - "declarations": [ - { - "constant": false, - "id": 3019, - "mutability": "mutable", - "name": "balance1Before", - "nodeType": "VariableDeclaration", - "scope": 3047, - "src": "31534:22:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 3018, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "31534:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 3022, - "initialValue": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 3020, - "name": "balance1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1361, - "src": "31559:8:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", - "typeString": "function () view returns (uint256)" - } - }, - "id": 3021, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "31559:10:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "31534:35:5" - }, - { - "expression": { - "arguments": [ - { - "id": 3028, - "name": "amount0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2398, - "src": "31640:7:5", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - { - "id": 3029, - "name": "amount1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2400, - "src": "31649:7:5", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - { - "id": 3030, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2392, - "src": "31658:4:5", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - ], - "expression": { - "arguments": [ - { - "expression": { - "id": 3024, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "31606:3:5", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 3025, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "31606:10:5", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "id": 3023, - "name": "IUniswapV3SwapCallback", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3798, - "src": "31583:22:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IUniswapV3SwapCallback_$3798_$", - "typeString": "type(contract IUniswapV3SwapCallback)" - } - }, - "id": 3026, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "31583:34:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_IUniswapV3SwapCallback_$3798", - "typeString": "contract IUniswapV3SwapCallback" - } - }, - "id": 3027, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "uniswapV3SwapCallback", - "nodeType": "MemberAccess", - "referencedDeclaration": 3797, - "src": "31583:56:5", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_int256_$_t_int256_$_t_bytes_memory_ptr_$returns$__$", - "typeString": "function (int256,int256,bytes memory) external" - } - }, - "id": 3031, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "31583:80:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 3032, - "nodeType": "ExpressionStatement", - "src": "31583:80:5" - }, - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 3043, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "arguments": [ - { - "arguments": [ - { - "id": 3038, - "name": "amount1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2400, - "src": "31712:7:5", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - ], - "id": 3037, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "31704:7:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 3036, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "31704:7:5", - "typeDescriptions": {} - } - }, - "id": 3039, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "31704:16:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 3034, - "name": "balance1Before", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3019, - "src": "31685:14:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 3035, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "add", - "nodeType": "MemberAccess", - "referencedDeclaration": 4764, - "src": "31685:18:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 3040, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "31685:36:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 3041, - "name": "balance1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1361, - "src": "31725:8:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", - "typeString": "function () view returns (uint256)" - } - }, - "id": 3042, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "31725:10:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "31685:50:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "494941", - "id": 3044, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "31737:5:5", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_ead9ba8f24b0c9c3e87a0076a48a0a166e1d5cd0bd355971195d20d966e145fc", - "typeString": "literal_string \"IIA\"" - }, - "value": "IIA" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_ead9ba8f24b0c9c3e87a0076a48a0a166e1d5cd0bd355971195d20d966e145fc", - "typeString": "literal_string \"IIA\"" - } - ], - "id": 3033, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "31677:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 3045, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "31677:66:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 3046, - "nodeType": "ExpressionStatement", - "src": "31677:66:5" - } - ] - }, - "id": 3048, - "nodeType": "IfStatement", - "src": "31070:684:5", - "trueBody": { - "id": 3001, - "nodeType": "Block", - "src": "31086:331:5", - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "id": 2958, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 2956, - "name": "amount1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2400, - "src": "31104:7:5", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "hexValue": "30", - "id": 2957, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "31114:1:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "31104:11:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 2971, - "nodeType": "IfStatement", - "src": "31100:82:5", - "trueBody": { - "expression": { - "arguments": [ - { - "id": 2962, - "name": "token1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1085, - "src": "31145:6:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 2963, - "name": "recipient", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2384, - "src": "31153:9:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "arguments": [ - { - "id": 2967, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "-", - "prefix": true, - "src": "31172:8:5", - "subExpression": { - "id": 2966, - "name": "amount1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2400, - "src": "31173:7:5", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - ], - "id": 2965, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "31164:7:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 2964, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "31164:7:5", - "typeDescriptions": {} - } - }, - "id": 2968, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "31164:17:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 2959, - "name": "TransferHelper", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7918, - "src": "31117:14:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_TransferHelper_$7918_$", - "typeString": "type(library TransferHelper)" - } - }, - "id": 2961, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "safeTransfer", - "nodeType": "MemberAccess", - "referencedDeclaration": 7917, - "src": "31117:27:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,address,uint256)" - } - }, - "id": 2969, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "31117:65:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2970, - "nodeType": "ExpressionStatement", - "src": "31117:65:5" - } - }, - { - "assignments": [ - 2973 - ], - "declarations": [ - { - "constant": false, - "id": 2973, - "mutability": "mutable", - "name": "balance0Before", - "nodeType": "VariableDeclaration", - "scope": 3001, - "src": "31197:22:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2972, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "31197:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 2976, - "initialValue": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 2974, - "name": "balance0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1319, - "src": "31222:8:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", - "typeString": "function () view returns (uint256)" - } - }, - "id": 2975, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "31222:10:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "31197:35:5" - }, - { - "expression": { - "arguments": [ - { - "id": 2982, - "name": "amount0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2398, - "src": "31303:7:5", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - { - "id": 2983, - "name": "amount1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2400, - "src": "31312:7:5", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - { - "id": 2984, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2392, - "src": "31321:4:5", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - ], - "expression": { - "arguments": [ - { - "expression": { - "id": 2978, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "31269:3:5", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 2979, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "31269:10:5", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "id": 2977, - "name": "IUniswapV3SwapCallback", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3798, - "src": "31246:22:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IUniswapV3SwapCallback_$3798_$", - "typeString": "type(contract IUniswapV3SwapCallback)" - } - }, - "id": 2980, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "31246:34:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_IUniswapV3SwapCallback_$3798", - "typeString": "contract IUniswapV3SwapCallback" - } - }, - "id": 2981, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "uniswapV3SwapCallback", - "nodeType": "MemberAccess", - "referencedDeclaration": 3797, - "src": "31246:56:5", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_int256_$_t_int256_$_t_bytes_memory_ptr_$returns$__$", - "typeString": "function (int256,int256,bytes memory) external" - } - }, - "id": 2985, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "31246:80:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2986, - "nodeType": "ExpressionStatement", - "src": "31246:80:5" - }, - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 2997, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "arguments": [ - { - "arguments": [ - { - "id": 2992, - "name": "amount0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2398, - "src": "31375:7:5", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - ], - "id": 2991, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "31367:7:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 2990, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "31367:7:5", - "typeDescriptions": {} - } - }, - "id": 2993, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "31367:16:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 2988, - "name": "balance0Before", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2973, - "src": "31348:14:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 2989, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "add", - "nodeType": "MemberAccess", - "referencedDeclaration": 4764, - "src": "31348:18:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 2994, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "31348:36:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 2995, - "name": "balance0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1319, - "src": "31388:8:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", - "typeString": "function () view returns (uint256)" - } - }, - "id": 2996, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "31388:10:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "31348:50:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "494941", - "id": 2998, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "31400:5:5", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_ead9ba8f24b0c9c3e87a0076a48a0a166e1d5cd0bd355971195d20d966e145fc", - "typeString": "literal_string \"IIA\"" - }, - "value": "IIA" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_ead9ba8f24b0c9c3e87a0076a48a0a166e1d5cd0bd355971195d20d966e145fc", - "typeString": "literal_string \"IIA\"" - } - ], - "id": 2987, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "31340:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 2999, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "31340:66:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 3000, - "nodeType": "ExpressionStatement", - "src": "31340:66:5" - } - ] - } - }, - { - "eventCall": { - "arguments": [ - { - "expression": { - "id": 3050, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "31774:3:5", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 3051, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "31774:10:5", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - { - "id": 3052, - "name": "recipient", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2384, - "src": "31786:9:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 3053, - "name": "amount0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2398, - "src": "31797:7:5", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - { - "id": 3054, - "name": "amount1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2400, - "src": "31806:7:5", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - { - "expression": { - "id": 3055, - "name": "state", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2479, - "src": "31815:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapState_$2366_memory_ptr", - "typeString": "struct UniswapV3Pool.SwapState memory" - } - }, - "id": 3056, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "sqrtPriceX96", - "nodeType": "MemberAccess", - "referencedDeclaration": 2357, - "src": "31815:18:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - { - "expression": { - "id": 3057, - "name": "state", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2479, - "src": "31835:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapState_$2366_memory_ptr", - "typeString": "struct UniswapV3Pool.SwapState memory" - } - }, - "id": 3058, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "liquidity", - "nodeType": "MemberAccess", - "referencedDeclaration": 2365, - "src": "31835:15:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - { - "expression": { - "id": 3059, - "name": "state", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2479, - "src": "31852:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_SwapState_$2366_memory_ptr", - "typeString": "struct UniswapV3Pool.SwapState memory" - } - }, - "id": 3060, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "tick", - "nodeType": "MemberAccess", - "referencedDeclaration": 2359, - "src": "31852:10:5", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - ], - "id": 3049, - "name": "Swap", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3999, - "src": "31769:4:5", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_int256_$_t_int256_$_t_uint160_$_t_uint128_$_t_int24_$returns$__$", - "typeString": "function (address,address,int256,int256,uint160,uint128,int24)" - } - }, - "id": 3061, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "31769:94:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 3062, - "nodeType": "EmitStatement", - "src": "31764:99:5" - }, - { - "expression": { - "id": 3067, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 3063, - "name": "slot0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1116, - "src": "31873:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Slot0_$1112_storage", - "typeString": "struct UniswapV3Pool.Slot0 storage ref" - } - }, - "id": 3065, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "unlocked", - "nodeType": "MemberAccess", - "referencedDeclaration": 1111, - "src": "31873:14:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "74727565", - "id": 3066, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "31890:4:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "31873:21:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 3068, - "nodeType": "ExpressionStatement", - "src": "31873:21:5" - } - ] - }, - "documentation": { - "id": 2382, - "nodeType": "StructuredDocumentation", - "src": "22857:37:5", - "text": "@inheritdoc IUniswapV3PoolActions" - }, - "functionSelector": "128acb08", - "id": 3070, - "implemented": true, - "kind": "function", - "modifiers": [ - { - "id": 2396, - "modifierName": { - "id": 2395, - "name": "noDelegateCall", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 735, - "src": "23085:14:5", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "23085:14:5" - } - ], - "name": "swap", - "nodeType": "FunctionDefinition", - "overrides": { - "id": 2394, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "23076:8:5" - }, - "parameters": { - "id": 2393, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2384, - "mutability": "mutable", - "name": "recipient", - "nodeType": "VariableDeclaration", - "scope": 3070, - "src": "22922:17:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 2383, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "22922:7:5", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2386, - "mutability": "mutable", - "name": "zeroForOne", - "nodeType": "VariableDeclaration", - "scope": 3070, - "src": "22949:15:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 2385, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "22949:4:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2388, - "mutability": "mutable", - "name": "amountSpecified", - "nodeType": "VariableDeclaration", - "scope": 3070, - "src": "22974:22:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "typeName": { - "id": 2387, - "name": "int256", - "nodeType": "ElementaryTypeName", - "src": "22974:6:5", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2390, - "mutability": "mutable", - "name": "sqrtPriceLimitX96", - "nodeType": "VariableDeclaration", - "scope": 3070, - "src": "23006:25:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "typeName": { - "id": 2389, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "23006:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2392, - "mutability": "mutable", - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 3070, - "src": "23041:19:5", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 2391, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "23041:5:5", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "22912:154:5" - }, - "returnParameters": { - "id": 2401, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2398, - "mutability": "mutable", - "name": "amount0", - "nodeType": "VariableDeclaration", - "scope": 3070, - "src": "23109:14:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "typeName": { - "id": 2397, - "name": "int256", - "nodeType": "ElementaryTypeName", - "src": "23109:6:5", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 2400, - "mutability": "mutable", - "name": "amount1", - "nodeType": "VariableDeclaration", - "scope": 3070, - "src": "23125:14:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "typeName": { - "id": 2399, - "name": "int256", - "nodeType": "ElementaryTypeName", - "src": "23125:6:5", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "visibility": "internal" - } - ], - "src": "23108:32:5" - }, - "scope": 3491, - "src": "22899:9002:5", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "baseFunctions": [ - 3887 - ], - "body": { - "id": 3314, - "nodeType": "Block", - "src": "32114:1748:5", - "statements": [ - { - "assignments": [ - 3088 - ], - "declarations": [ - { - "constant": false, - "id": 3088, - "mutability": "mutable", - "name": "_liquidity", - "nodeType": "VariableDeclaration", - "scope": 3314, - "src": "32124:18:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "typeName": { - "id": 3087, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "32124:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "visibility": "internal" - } - ], - "id": 3090, - "initialValue": { - "id": 3089, - "name": "liquidity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1137, - "src": "32145:9:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "32124:30:5" - }, - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "id": 3094, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 3092, - "name": "_liquidity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3088, - "src": "32172:10:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 3093, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "32185:1:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "32172:14:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "4c", - "id": 3095, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "32188:3:5", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_8aa64f937099b65a4febc243a5ae0f2d6416bb9e473c30dd29c1ee498fb7c5a8", - "typeString": "literal_string \"L\"" - }, - "value": "L" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_8aa64f937099b65a4febc243a5ae0f2d6416bb9e473c30dd29c1ee498fb7c5a8", - "typeString": "literal_string \"L\"" - } - ], - "id": 3091, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "32164:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 3096, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "32164:28:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 3097, - "nodeType": "ExpressionStatement", - "src": "32164:28:5" - }, - { - "assignments": [ - 3099 - ], - "declarations": [ - { - "constant": false, - "id": 3099, - "mutability": "mutable", - "name": "fee0", - "nodeType": "VariableDeclaration", - "scope": 3314, - "src": "32203:12:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 3098, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "32203:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 3106, - "initialValue": { - "arguments": [ - { - "id": 3102, - "name": "amount0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3075, - "src": "32244:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 3103, - "name": "fee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1089, - "src": "32253:3:5", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - { - "hexValue": "316536", - "id": 3104, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "32258:3:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_1000000_by_1", - "typeString": "int_const 1000000" - }, - "value": "1e6" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - }, - { - "typeIdentifier": "t_rational_1000000_by_1", - "typeString": "int_const 1000000" - } - ], - "expression": { - "id": 3100, - "name": "FullMath", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4687, - "src": "32218:8:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_FullMath_$4687_$", - "typeString": "type(library FullMath)" - } - }, - "id": 3101, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "mulDivRoundingUp", - "nodeType": "MemberAccess", - "referencedDeclaration": 4686, - "src": "32218:25:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 3105, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "32218:44:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "32203:59:5" - }, - { - "assignments": [ - 3108 - ], - "declarations": [ - { - "constant": false, - "id": 3108, - "mutability": "mutable", - "name": "fee1", - "nodeType": "VariableDeclaration", - "scope": 3314, - "src": "32272:12:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 3107, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "32272:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 3115, - "initialValue": { - "arguments": [ - { - "id": 3111, - "name": "amount1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3077, - "src": "32313:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 3112, - "name": "fee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1089, - "src": "32322:3:5", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - { - "hexValue": "316536", - "id": 3113, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "32327:3:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_1000000_by_1", - "typeString": "int_const 1000000" - }, - "value": "1e6" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - }, - { - "typeIdentifier": "t_rational_1000000_by_1", - "typeString": "int_const 1000000" - } - ], - "expression": { - "id": 3109, - "name": "FullMath", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4687, - "src": "32287:8:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_FullMath_$4687_$", - "typeString": "type(library FullMath)" - } - }, - "id": 3110, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "mulDivRoundingUp", - "nodeType": "MemberAccess", - "referencedDeclaration": 4686, - "src": "32287:25:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 3114, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "32287:44:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "32272:59:5" - }, - { - "assignments": [ - 3117 - ], - "declarations": [ - { - "constant": false, - "id": 3117, - "mutability": "mutable", - "name": "balance0Before", - "nodeType": "VariableDeclaration", - "scope": 3314, - "src": "32341:22:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 3116, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "32341:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 3120, - "initialValue": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 3118, - "name": "balance0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1319, - "src": "32366:8:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", - "typeString": "function () view returns (uint256)" - } - }, - "id": 3119, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "32366:10:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "32341:35:5" - }, - { - "assignments": [ - 3122 - ], - "declarations": [ - { - "constant": false, - "id": 3122, - "mutability": "mutable", - "name": "balance1Before", - "nodeType": "VariableDeclaration", - "scope": 3314, - "src": "32386:22:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 3121, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "32386:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 3125, - "initialValue": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 3123, - "name": "balance1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1361, - "src": "32411:8:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", - "typeString": "function () view returns (uint256)" - } - }, - "id": 3124, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "32411:10:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "32386:35:5" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 3128, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 3126, - "name": "amount0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3075, - "src": "32436:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 3127, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "32446:1:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "32436:11:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 3137, - "nodeType": "IfStatement", - "src": "32432:72:5", - "trueBody": { - "expression": { - "arguments": [ - { - "id": 3132, - "name": "token0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1081, - "src": "32477:6:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 3133, - "name": "recipient", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3073, - "src": "32485:9:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 3134, - "name": "amount0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3075, - "src": "32496:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 3129, - "name": "TransferHelper", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7918, - "src": "32449:14:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_TransferHelper_$7918_$", - "typeString": "type(library TransferHelper)" - } - }, - "id": 3131, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "safeTransfer", - "nodeType": "MemberAccess", - "referencedDeclaration": 7917, - "src": "32449:27:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,address,uint256)" - } - }, - "id": 3135, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "32449:55:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 3136, - "nodeType": "ExpressionStatement", - "src": "32449:55:5" - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 3140, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 3138, - "name": "amount1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3077, - "src": "32518:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 3139, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "32528:1:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "32518:11:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 3149, - "nodeType": "IfStatement", - "src": "32514:72:5", - "trueBody": { - "expression": { - "arguments": [ - { - "id": 3144, - "name": "token1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1085, - "src": "32559:6:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 3145, - "name": "recipient", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3073, - "src": "32567:9:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 3146, - "name": "amount1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3077, - "src": "32578:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 3141, - "name": "TransferHelper", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7918, - "src": "32531:14:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_TransferHelper_$7918_$", - "typeString": "type(library TransferHelper)" - } - }, - "id": 3143, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "safeTransfer", - "nodeType": "MemberAccess", - "referencedDeclaration": 7917, - "src": "32531:27:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,address,uint256)" - } - }, - "id": 3147, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "32531:55:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 3148, - "nodeType": "ExpressionStatement", - "src": "32531:55:5" - } - }, - { - "expression": { - "arguments": [ - { - "id": 3155, - "name": "fee0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3099, - "src": "32656:4:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 3156, - "name": "fee1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3108, - "src": "32662:4:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 3157, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3079, - "src": "32668:4:5", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes calldata" - } - ], - "expression": { - "arguments": [ - { - "expression": { - "id": 3151, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "32621:3:5", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 3152, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "32621:10:5", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - ], - "id": 3150, - "name": "IUniswapV3FlashCallback", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3770, - "src": "32597:23:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IUniswapV3FlashCallback_$3770_$", - "typeString": "type(contract IUniswapV3FlashCallback)" - } - }, - "id": 3153, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "32597:35:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_IUniswapV3FlashCallback_$3770", - "typeString": "contract IUniswapV3FlashCallback" - } - }, - "id": 3154, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "uniswapV3FlashCallback", - "nodeType": "MemberAccess", - "referencedDeclaration": 3769, - "src": "32597:58:5", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", - "typeString": "function (uint256,uint256,bytes memory) external" - } - }, - "id": 3158, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "32597:76:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 3159, - "nodeType": "ExpressionStatement", - "src": "32597:76:5" - }, - { - "assignments": [ - 3161 - ], - "declarations": [ - { - "constant": false, - "id": 3161, - "mutability": "mutable", - "name": "balance0After", - "nodeType": "VariableDeclaration", - "scope": 3314, - "src": "32684:21:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 3160, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "32684:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 3164, - "initialValue": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 3162, - "name": "balance0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1319, - "src": "32708:8:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", - "typeString": "function () view returns (uint256)" - } - }, - "id": 3163, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "32708:10:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "32684:34:5" - }, - { - "assignments": [ - 3166 - ], - "declarations": [ - { - "constant": false, - "id": 3166, - "mutability": "mutable", - "name": "balance1After", - "nodeType": "VariableDeclaration", - "scope": 3314, - "src": "32728:21:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 3165, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "32728:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 3169, - "initialValue": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 3167, - "name": "balance1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1361, - "src": "32752:8:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", - "typeString": "function () view returns (uint256)" - } - }, - "id": 3168, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "32752:10:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "32728:34:5" - }, - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 3176, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "arguments": [ - { - "id": 3173, - "name": "fee0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3099, - "src": "32800:4:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 3171, - "name": "balance0Before", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3117, - "src": "32781:14:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 3172, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "add", - "nodeType": "MemberAccess", - "referencedDeclaration": 4764, - "src": "32781:18:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 3174, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "32781:24:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "id": 3175, - "name": "balance0After", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3161, - "src": "32809:13:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "32781:41:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "4630", - "id": 3177, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "32824:4:5", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_03a44893a6f04a1de143742ff3f2d3f895f4c0834e5d5ed116313011722d95d5", - "typeString": "literal_string \"F0\"" - }, - "value": "F0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_03a44893a6f04a1de143742ff3f2d3f895f4c0834e5d5ed116313011722d95d5", - "typeString": "literal_string \"F0\"" - } - ], - "id": 3170, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "32773:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 3178, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "32773:56:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 3179, - "nodeType": "ExpressionStatement", - "src": "32773:56:5" - }, - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 3186, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "arguments": [ - { - "id": 3183, - "name": "fee1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3108, - "src": "32866:4:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 3181, - "name": "balance1Before", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3122, - "src": "32847:14:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 3182, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "add", - "nodeType": "MemberAccess", - "referencedDeclaration": 4764, - "src": "32847:18:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 3184, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "32847:24:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "id": 3185, - "name": "balance1After", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3166, - "src": "32875:13:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "32847:41:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "4631", - "id": 3187, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "32890:4:5", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_61f8f8560327748d3d32b99138645b9511e5310a7109d5ec11cbfb1b408602cf", - "typeString": "literal_string \"F1\"" - }, - "value": "F1" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_61f8f8560327748d3d32b99138645b9511e5310a7109d5ec11cbfb1b408602cf", - "typeString": "literal_string \"F1\"" - } - ], - "id": 3180, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "32839:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 3188, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "32839:56:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 3189, - "nodeType": "ExpressionStatement", - "src": "32839:56:5" - }, - { - "assignments": [ - 3191 - ], - "declarations": [ - { - "constant": false, - "id": 3191, - "mutability": "mutable", - "name": "paid0", - "nodeType": "VariableDeclaration", - "scope": 3314, - "src": "32994:13:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 3190, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "32994:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 3195, - "initialValue": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 3194, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 3192, - "name": "balance0After", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3161, - "src": "33010:13:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "id": 3193, - "name": "balance0Before", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3117, - "src": "33026:14:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "33010:30:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "32994:46:5" - }, - { - "assignments": [ - 3197 - ], - "declarations": [ - { - "constant": false, - "id": 3197, - "mutability": "mutable", - "name": "paid1", - "nodeType": "VariableDeclaration", - "scope": 3314, - "src": "33050:13:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 3196, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "33050:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 3201, - "initialValue": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 3200, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 3198, - "name": "balance1After", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3166, - "src": "33066:13:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "id": 3199, - "name": "balance1Before", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3122, - "src": "33082:14:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "33066:30:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "33050:46:5" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 3204, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 3202, - "name": "paid0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3191, - "src": "33111:5:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 3203, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "33119:1:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "33111:9:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 3252, - "nodeType": "IfStatement", - "src": "33107:332:5", - "trueBody": { - "id": 3251, - "nodeType": "Block", - "src": "33122:317:5", - "statements": [ - { - "assignments": [ - 3206 - ], - "declarations": [ - { - "constant": false, - "id": 3206, - "mutability": "mutable", - "name": "feeProtocol0", - "nodeType": "VariableDeclaration", - "scope": 3251, - "src": "33136:18:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 3205, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "33136:5:5", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "visibility": "internal" - } - ], - "id": 3211, - "initialValue": { - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 3210, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 3207, - "name": "slot0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1116, - "src": "33157:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Slot0_$1112_storage", - "typeString": "struct UniswapV3Pool.Slot0 storage ref" - } - }, - "id": 3208, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "feeProtocol", - "nodeType": "MemberAccess", - "referencedDeclaration": 1109, - "src": "33157:17:5", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "%", - "rightExpression": { - "hexValue": "3136", - "id": 3209, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "33177:2:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_16_by_1", - "typeString": "int_const 16" - }, - "value": "16" - }, - "src": "33157:22:5", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "33136:43:5" - }, - { - "assignments": [ - 3213 - ], - "declarations": [ - { - "constant": false, - "id": 3213, - "mutability": "mutable", - "name": "fees0", - "nodeType": "VariableDeclaration", - "scope": 3251, - "src": "33193:13:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 3212, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "33193:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 3222, - "initialValue": { - "condition": { - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 3216, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 3214, - "name": "feeProtocol0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3206, - "src": "33209:12:5", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 3215, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "33225:1:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "33209:17:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 3220, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 3218, - "name": "paid0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3191, - "src": "33233:5:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "id": 3219, - "name": "feeProtocol0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3206, - "src": "33241:12:5", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "33233:20:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 3221, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "Conditional", - "src": "33209:44:5", - "trueExpression": { - "hexValue": "30", - "id": 3217, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "33229:1:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "33193:60:5" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "id": 3228, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "arguments": [ - { - "id": 3225, - "name": "fees0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3213, - "src": "33279:5:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 3224, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "33271:7:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint128_$", - "typeString": "type(uint128)" - }, - "typeName": { - "id": 3223, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "33271:7:5", - "typeDescriptions": {} - } - }, - "id": 3226, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "33271:14:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 3227, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "33288:1:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "33271:18:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 3238, - "nodeType": "IfStatement", - "src": "33267:61:5", - "trueBody": { - "expression": { - "id": 3236, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 3229, - "name": "protocolFees", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1133, - "src": "33291:12:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ProtocolFees_$1129_storage", - "typeString": "struct UniswapV3Pool.ProtocolFees storage ref" - } - }, - "id": 3231, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "token0", - "nodeType": "MemberAccess", - "referencedDeclaration": 1126, - "src": "33291:19:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "arguments": [ - { - "id": 3234, - "name": "fees0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3213, - "src": "33322:5:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 3233, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "33314:7:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint128_$", - "typeString": "type(uint128)" - }, - "typeName": { - "id": 3232, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "33314:7:5", - "typeDescriptions": {} - } - }, - "id": 3235, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "33314:14:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "src": "33291:37:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "id": 3237, - "nodeType": "ExpressionStatement", - "src": "33291:37:5" - } - }, - { - "expression": { - "id": 3249, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 3239, - "name": "feeGrowthGlobal0X128", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1120, - "src": "33342:20:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 3244, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 3242, - "name": "paid0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3191, - "src": "33382:5:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "id": 3243, - "name": "fees0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3213, - "src": "33390:5:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "33382:13:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "expression": { - "id": 3245, - "name": "FixedPoint128", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4504, - "src": "33397:13:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_FixedPoint128_$4504_$", - "typeString": "type(library FixedPoint128)" - } - }, - "id": 3246, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "Q128", - "nodeType": "MemberAccess", - "referencedDeclaration": 4503, - "src": "33397:18:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 3247, - "name": "_liquidity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3088, - "src": "33417:10:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - ], - "expression": { - "id": 3240, - "name": "FullMath", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4687, - "src": "33366:8:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_FullMath_$4687_$", - "typeString": "type(library FullMath)" - } - }, - "id": 3241, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "mulDiv", - "nodeType": "MemberAccess", - "referencedDeclaration": 4643, - "src": "33366:15:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 3248, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "33366:62:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "33342:86:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 3250, - "nodeType": "ExpressionStatement", - "src": "33342:86:5" - } - ] - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 3255, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 3253, - "name": "paid1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3197, - "src": "33452:5:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 3254, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "33460:1:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "33452:9:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 3303, - "nodeType": "IfStatement", - "src": "33448:332:5", - "trueBody": { - "id": 3302, - "nodeType": "Block", - "src": "33463:317:5", - "statements": [ - { - "assignments": [ - 3257 - ], - "declarations": [ - { - "constant": false, - "id": 3257, - "mutability": "mutable", - "name": "feeProtocol1", - "nodeType": "VariableDeclaration", - "scope": 3302, - "src": "33477:18:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 3256, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "33477:5:5", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "visibility": "internal" - } - ], - "id": 3262, - "initialValue": { - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 3261, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 3258, - "name": "slot0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1116, - "src": "33498:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Slot0_$1112_storage", - "typeString": "struct UniswapV3Pool.Slot0 storage ref" - } - }, - "id": 3259, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "feeProtocol", - "nodeType": "MemberAccess", - "referencedDeclaration": 1109, - "src": "33498:17:5", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": ">>", - "rightExpression": { - "hexValue": "34", - "id": 3260, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "33519:1:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_4_by_1", - "typeString": "int_const 4" - }, - "value": "4" - }, - "src": "33498:22:5", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "33477:43:5" - }, - { - "assignments": [ - 3264 - ], - "declarations": [ - { - "constant": false, - "id": 3264, - "mutability": "mutable", - "name": "fees1", - "nodeType": "VariableDeclaration", - "scope": 3302, - "src": "33534:13:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 3263, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "33534:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 3273, - "initialValue": { - "condition": { - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 3267, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 3265, - "name": "feeProtocol1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3257, - "src": "33550:12:5", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 3266, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "33566:1:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "33550:17:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 3271, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 3269, - "name": "paid1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3197, - "src": "33574:5:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "id": 3270, - "name": "feeProtocol1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3257, - "src": "33582:12:5", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "33574:20:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 3272, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "Conditional", - "src": "33550:44:5", - "trueExpression": { - "hexValue": "30", - "id": 3268, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "33570:1:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "33534:60:5" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "id": 3279, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "arguments": [ - { - "id": 3276, - "name": "fees1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3264, - "src": "33620:5:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 3275, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "33612:7:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint128_$", - "typeString": "type(uint128)" - }, - "typeName": { - "id": 3274, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "33612:7:5", - "typeDescriptions": {} - } - }, - "id": 3277, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "33612:14:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 3278, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "33629:1:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "33612:18:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 3289, - "nodeType": "IfStatement", - "src": "33608:61:5", - "trueBody": { - "expression": { - "id": 3287, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 3280, - "name": "protocolFees", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1133, - "src": "33632:12:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ProtocolFees_$1129_storage", - "typeString": "struct UniswapV3Pool.ProtocolFees storage ref" - } - }, - "id": 3282, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "token1", - "nodeType": "MemberAccess", - "referencedDeclaration": 1128, - "src": "33632:19:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "arguments": [ - { - "id": 3285, - "name": "fees1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3264, - "src": "33663:5:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 3284, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "33655:7:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint128_$", - "typeString": "type(uint128)" - }, - "typeName": { - "id": 3283, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "33655:7:5", - "typeDescriptions": {} - } - }, - "id": 3286, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "33655:14:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "src": "33632:37:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "id": 3288, - "nodeType": "ExpressionStatement", - "src": "33632:37:5" - } - }, - { - "expression": { - "id": 3300, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 3290, - "name": "feeGrowthGlobal1X128", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1124, - "src": "33683:20:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 3295, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 3293, - "name": "paid1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3197, - "src": "33723:5:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "id": 3294, - "name": "fees1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3264, - "src": "33731:5:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "33723:13:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "expression": { - "id": 3296, - "name": "FixedPoint128", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4504, - "src": "33738:13:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_FixedPoint128_$4504_$", - "typeString": "type(library FixedPoint128)" - } - }, - "id": 3297, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "Q128", - "nodeType": "MemberAccess", - "referencedDeclaration": 4503, - "src": "33738:18:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 3298, - "name": "_liquidity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3088, - "src": "33758:10:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - ], - "expression": { - "id": 3291, - "name": "FullMath", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4687, - "src": "33707:8:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_FullMath_$4687_$", - "typeString": "type(library FullMath)" - } - }, - "id": 3292, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "mulDiv", - "nodeType": "MemberAccess", - "referencedDeclaration": 4643, - "src": "33707:15:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 3299, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "33707:62:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "33683:86:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 3301, - "nodeType": "ExpressionStatement", - "src": "33683:86:5" - } - ] - } - }, - { - "eventCall": { - "arguments": [ - { - "expression": { - "id": 3305, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "33801:3:5", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 3306, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "33801:10:5", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - { - "id": 3307, - "name": "recipient", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3073, - "src": "33813:9:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 3308, - "name": "amount0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3075, - "src": "33824:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 3309, - "name": "amount1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3077, - "src": "33833:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 3310, - "name": "paid0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3191, - "src": "33842:5:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 3311, - "name": "paid1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3197, - "src": "33849:5:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 3304, - "name": "Flash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4014, - "src": "33795:5:5", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$", - "typeString": "function (address,address,uint256,uint256,uint256,uint256)" - } - }, - "id": 3312, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "33795:60:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 3313, - "nodeType": "EmitStatement", - "src": "33790:65:5" - } - ] - }, - "documentation": { - "id": 3071, - "nodeType": "StructuredDocumentation", - "src": "31907:37:5", - "text": "@inheritdoc IUniswapV3PoolActions" - }, - "functionSelector": "490e6cbc", - "id": 3315, - "implemented": true, - "kind": "function", - "modifiers": [ - { - "id": 3083, - "modifierName": { - "id": 3082, - "name": "lock", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1184, - "src": "32094:4:5", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "32094:4:5" - }, - { - "id": 3085, - "modifierName": { - "id": 3084, - "name": "noDelegateCall", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 735, - "src": "32099:14:5", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "32099:14:5" - } - ], - "name": "flash", - "nodeType": "FunctionDefinition", - "overrides": { - "id": 3081, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "32085:8:5" - }, - "parameters": { - "id": 3080, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3073, - "mutability": "mutable", - "name": "recipient", - "nodeType": "VariableDeclaration", - "scope": 3315, - "src": "31973:17:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 3072, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "31973:7:5", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3075, - "mutability": "mutable", - "name": "amount0", - "nodeType": "VariableDeclaration", - "scope": 3315, - "src": "32000:15:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 3074, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "32000:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3077, - "mutability": "mutable", - "name": "amount1", - "nodeType": "VariableDeclaration", - "scope": 3315, - "src": "32025:15:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 3076, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "32025:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3079, - "mutability": "mutable", - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 3315, - "src": "32050:19:5", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 3078, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "32050:5:5", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "31963:112:5" - }, - "returnParameters": { - "id": 3086, - "nodeType": "ParameterList", - "parameters": [], - "src": "32114:0:5" - }, - "scope": 3491, - "src": "31949:1913:5", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "baseFunctions": [ - 4095 - ], - "body": { - "id": 3385, - "nodeType": "Block", - "src": "34019:409:5", - "statements": [ - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 3355, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 3340, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 3331, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 3329, - "name": "feeProtocol0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3318, - "src": "34051:12:5", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 3330, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "34067:1:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "34051:17:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 3338, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 3334, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 3332, - "name": "feeProtocol0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3318, - "src": "34073:12:5", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "hexValue": "34", - "id": 3333, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "34089:1:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_4_by_1", - "typeString": "int_const 4" - }, - "value": "4" - }, - "src": "34073:17:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 3337, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 3335, - "name": "feeProtocol0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3318, - "src": "34094:12:5", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "hexValue": "3130", - "id": 3336, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "34110:2:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_10_by_1", - "typeString": "int_const 10" - }, - "value": "10" - }, - "src": "34094:18:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "34073:39:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "id": 3339, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "34072:41:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "34051:62:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "id": 3341, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "34050:64:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 3353, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 3344, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 3342, - "name": "feeProtocol1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3320, - "src": "34135:12:5", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 3343, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "34151:1:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "34135:17:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 3351, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 3347, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 3345, - "name": "feeProtocol1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3320, - "src": "34157:12:5", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "hexValue": "34", - "id": 3346, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "34173:1:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_4_by_1", - "typeString": "int_const 4" - }, - "value": "4" - }, - "src": "34157:17:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 3350, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 3348, - "name": "feeProtocol1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3320, - "src": "34178:12:5", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "hexValue": "3130", - "id": 3349, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "34194:2:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_10_by_1", - "typeString": "int_const 10" - }, - "value": "10" - }, - "src": "34178:18:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "34157:39:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "id": 3352, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "34156:41:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "34135:62:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "id": 3354, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "34134:64:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "34050:148:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 3328, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "34029:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 3356, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "34029:179:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 3357, - "nodeType": "ExpressionStatement", - "src": "34029:179:5" - }, - { - "assignments": [ - 3359 - ], - "declarations": [ - { - "constant": false, - "id": 3359, - "mutability": "mutable", - "name": "feeProtocolOld", - "nodeType": "VariableDeclaration", - "scope": 3385, - "src": "34218:20:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 3358, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "34218:5:5", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "visibility": "internal" - } - ], - "id": 3362, - "initialValue": { - "expression": { - "id": 3360, - "name": "slot0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1116, - "src": "34241:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Slot0_$1112_storage", - "typeString": "struct UniswapV3Pool.Slot0 storage ref" - } - }, - "id": 3361, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "feeProtocol", - "nodeType": "MemberAccess", - "referencedDeclaration": 1109, - "src": "34241:17:5", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "34218:40:5" - }, - { - "expression": { - "id": 3372, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 3363, - "name": "slot0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1116, - "src": "34268:5:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Slot0_$1112_storage", - "typeString": "struct UniswapV3Pool.Slot0 storage ref" - } - }, - "id": 3365, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "feeProtocol", - "nodeType": "MemberAccess", - "referencedDeclaration": 1109, - "src": "34268:17:5", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 3371, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 3366, - "name": "feeProtocol0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3318, - "src": "34288:12:5", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 3369, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 3367, - "name": "feeProtocol1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3320, - "src": "34304:12:5", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "<<", - "rightExpression": { - "hexValue": "34", - "id": 3368, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "34320:1:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_4_by_1", - "typeString": "int_const 4" - }, - "value": "4" - }, - "src": "34304:17:5", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - } - ], - "id": 3370, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "34303:19:5", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "34288:34:5", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "34268:54:5", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 3373, - "nodeType": "ExpressionStatement", - "src": "34268:54:5" - }, - { - "eventCall": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 3377, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 3375, - "name": "feeProtocolOld", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3359, - "src": "34352:14:5", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "%", - "rightExpression": { - "hexValue": "3136", - "id": 3376, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "34369:2:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_16_by_1", - "typeString": "int_const 16" - }, - "value": "16" - }, - "src": "34352:19:5", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - { - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 3380, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 3378, - "name": "feeProtocolOld", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3359, - "src": "34373:14:5", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": ">>", - "rightExpression": { - "hexValue": "34", - "id": 3379, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "34391:1:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_4_by_1", - "typeString": "int_const 4" - }, - "value": "4" - }, - "src": "34373:19:5", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - { - "id": 3381, - "name": "feeProtocol0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3318, - "src": "34394:12:5", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - { - "id": 3382, - "name": "feeProtocol1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3320, - "src": "34408:12:5", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - ], - "id": 3374, - "name": "SetFeeProtocol", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4032, - "src": "34337:14:5", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_uint8_$_t_uint8_$_t_uint8_$_t_uint8_$returns$__$", - "typeString": "function (uint8,uint8,uint8,uint8)" - } - }, - "id": 3383, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "34337:84:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 3384, - "nodeType": "EmitStatement", - "src": "34332:89:5" - } - ] - }, - "documentation": { - "id": 3316, - "nodeType": "StructuredDocumentation", - "src": "33868:42:5", - "text": "@inheritdoc IUniswapV3PoolOwnerActions" - }, - "functionSelector": "8206a4d1", - "id": 3386, - "implemented": true, - "kind": "function", - "modifiers": [ - { - "id": 3324, - "modifierName": { - "id": 3323, - "name": "lock", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1184, - "src": "33997:4:5", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "33997:4:5" - }, - { - "id": 3326, - "modifierName": { - "id": 3325, - "name": "onlyFactoryOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1200, - "src": "34002:16:5", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "34002:16:5" - } - ], - "name": "setFeeProtocol", - "nodeType": "FunctionDefinition", - "overrides": { - "id": 3322, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "33988:8:5" - }, - "parameters": { - "id": 3321, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3318, - "mutability": "mutable", - "name": "feeProtocol0", - "nodeType": "VariableDeclaration", - "scope": 3386, - "src": "33939:18:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 3317, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "33939:5:5", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3320, - "mutability": "mutable", - "name": "feeProtocol1", - "nodeType": "VariableDeclaration", - "scope": 3386, - "src": "33959:18:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 3319, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "33959:5:5", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "visibility": "internal" - } - ], - "src": "33938:40:5" - }, - "returnParameters": { - "id": 3327, - "nodeType": "ParameterList", - "parameters": [], - "src": "34019:0:5" - }, - "scope": 3491, - "src": "33915:513:5", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "baseFunctions": [ - 4109 - ], - "body": { - "id": 3489, - "nodeType": "Block", - "src": "34690:808:5", - "statements": [ - { - "expression": { - "id": 3414, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 3405, - "name": "amount0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3401, - "src": "34700:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "condition": { - "commonType": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "id": 3409, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 3406, - "name": "amount0Requested", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3391, - "src": "34710:16:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "expression": { - "id": 3407, - "name": "protocolFees", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1133, - "src": "34729:12:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ProtocolFees_$1129_storage", - "typeString": "struct UniswapV3Pool.ProtocolFees storage ref" - } - }, - "id": 3408, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "token0", - "nodeType": "MemberAccess", - "referencedDeclaration": 1126, - "src": "34729:19:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "src": "34710:38:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseExpression": { - "id": 3412, - "name": "amount0Requested", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3391, - "src": "34773:16:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "id": 3413, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "Conditional", - "src": "34710:79:5", - "trueExpression": { - "expression": { - "id": 3410, - "name": "protocolFees", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1133, - "src": "34751:12:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ProtocolFees_$1129_storage", - "typeString": "struct UniswapV3Pool.ProtocolFees storage ref" - } - }, - "id": 3411, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "token0", - "nodeType": "MemberAccess", - "referencedDeclaration": 1126, - "src": "34751:19:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "src": "34700:89:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "id": 3415, - "nodeType": "ExpressionStatement", - "src": "34700:89:5" - }, - { - "expression": { - "id": 3425, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 3416, - "name": "amount1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3403, - "src": "34799:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "condition": { - "commonType": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "id": 3420, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 3417, - "name": "amount1Requested", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3393, - "src": "34809:16:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "expression": { - "id": 3418, - "name": "protocolFees", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1133, - "src": "34828:12:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ProtocolFees_$1129_storage", - "typeString": "struct UniswapV3Pool.ProtocolFees storage ref" - } - }, - "id": 3419, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "token1", - "nodeType": "MemberAccess", - "referencedDeclaration": 1128, - "src": "34828:19:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "src": "34809:38:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseExpression": { - "id": 3423, - "name": "amount1Requested", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3393, - "src": "34872:16:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "id": 3424, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "Conditional", - "src": "34809:79:5", - "trueExpression": { - "expression": { - "id": 3421, - "name": "protocolFees", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1133, - "src": "34850:12:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ProtocolFees_$1129_storage", - "typeString": "struct UniswapV3Pool.ProtocolFees storage ref" - } - }, - "id": 3422, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "token1", - "nodeType": "MemberAccess", - "referencedDeclaration": 1128, - "src": "34850:19:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "src": "34799:89:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "id": 3426, - "nodeType": "ExpressionStatement", - "src": "34799:89:5" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "id": 3429, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 3427, - "name": "amount0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3401, - "src": "34903:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 3428, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "34913:1:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "34903:11:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 3453, - "nodeType": "IfStatement", - "src": "34899:256:5", - "trueBody": { - "id": 3452, - "nodeType": "Block", - "src": "34916:239:5", - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "id": 3433, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 3430, - "name": "amount0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3401, - "src": "34934:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "expression": { - "id": 3431, - "name": "protocolFees", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1133, - "src": "34945:12:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ProtocolFees_$1129_storage", - "typeString": "struct UniswapV3Pool.ProtocolFees storage ref" - } - }, - "id": 3432, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "token0", - "nodeType": "MemberAccess", - "referencedDeclaration": 1126, - "src": "34945:19:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "src": "34934:30:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 3437, - "nodeType": "IfStatement", - "src": "34930:45:5", - "trueBody": { - "expression": { - "id": 3435, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "--", - "prefix": false, - "src": "34966:9:5", - "subExpression": { - "id": 3434, - "name": "amount0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3401, - "src": "34966:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "id": 3436, - "nodeType": "ExpressionStatement", - "src": "34966:9:5" - } - }, - { - "expression": { - "id": 3442, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 3438, - "name": "protocolFees", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1133, - "src": "35045:12:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ProtocolFees_$1129_storage", - "typeString": "struct UniswapV3Pool.ProtocolFees storage ref" - } - }, - "id": 3440, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "token0", - "nodeType": "MemberAccess", - "referencedDeclaration": 1126, - "src": "35045:19:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "nodeType": "Assignment", - "operator": "-=", - "rightHandSide": { - "id": 3441, - "name": "amount0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3401, - "src": "35068:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "src": "35045:30:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "id": 3443, - "nodeType": "ExpressionStatement", - "src": "35045:30:5" - }, - { - "expression": { - "arguments": [ - { - "id": 3447, - "name": "token0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1081, - "src": "35117:6:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 3448, - "name": "recipient", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3389, - "src": "35125:9:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 3449, - "name": "amount0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3401, - "src": "35136:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - ], - "expression": { - "id": 3444, - "name": "TransferHelper", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7918, - "src": "35089:14:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_TransferHelper_$7918_$", - "typeString": "type(library TransferHelper)" - } - }, - "id": 3446, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "safeTransfer", - "nodeType": "MemberAccess", - "referencedDeclaration": 7917, - "src": "35089:27:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,address,uint256)" - } - }, - "id": 3450, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "35089:55:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 3451, - "nodeType": "ExpressionStatement", - "src": "35089:55:5" - } - ] - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "id": 3456, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 3454, - "name": "amount1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3403, - "src": "35168:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 3455, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "35178:1:5", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "35168:11:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 3480, - "nodeType": "IfStatement", - "src": "35164:256:5", - "trueBody": { - "id": 3479, - "nodeType": "Block", - "src": "35181:239:5", - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "id": 3460, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 3457, - "name": "amount1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3403, - "src": "35199:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "expression": { - "id": 3458, - "name": "protocolFees", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1133, - "src": "35210:12:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ProtocolFees_$1129_storage", - "typeString": "struct UniswapV3Pool.ProtocolFees storage ref" - } - }, - "id": 3459, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "token1", - "nodeType": "MemberAccess", - "referencedDeclaration": 1128, - "src": "35210:19:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "src": "35199:30:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 3464, - "nodeType": "IfStatement", - "src": "35195:45:5", - "trueBody": { - "expression": { - "id": 3462, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "--", - "prefix": false, - "src": "35231:9:5", - "subExpression": { - "id": 3461, - "name": "amount1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3403, - "src": "35231:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "id": 3463, - "nodeType": "ExpressionStatement", - "src": "35231:9:5" - } - }, - { - "expression": { - "id": 3469, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 3465, - "name": "protocolFees", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1133, - "src": "35310:12:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ProtocolFees_$1129_storage", - "typeString": "struct UniswapV3Pool.ProtocolFees storage ref" - } - }, - "id": 3467, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "token1", - "nodeType": "MemberAccess", - "referencedDeclaration": 1128, - "src": "35310:19:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "nodeType": "Assignment", - "operator": "-=", - "rightHandSide": { - "id": 3468, - "name": "amount1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3403, - "src": "35333:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "src": "35310:30:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "id": 3470, - "nodeType": "ExpressionStatement", - "src": "35310:30:5" - }, - { - "expression": { - "arguments": [ - { - "id": 3474, - "name": "token1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1085, - "src": "35382:6:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 3475, - "name": "recipient", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3389, - "src": "35390:9:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 3476, - "name": "amount1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3403, - "src": "35401:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - ], - "expression": { - "id": 3471, - "name": "TransferHelper", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7918, - "src": "35354:14:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_TransferHelper_$7918_$", - "typeString": "type(library TransferHelper)" - } - }, - "id": 3473, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "safeTransfer", - "nodeType": "MemberAccess", - "referencedDeclaration": 7917, - "src": "35354:27:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", - "typeString": "function (address,address,uint256)" - } - }, - "id": 3477, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "35354:55:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 3478, - "nodeType": "ExpressionStatement", - "src": "35354:55:5" - } - ] - } - }, - { - "eventCall": { - "arguments": [ - { - "expression": { - "id": 3482, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -15, - "src": "35451:3:5", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 3483, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "src": "35451:10:5", - "typeDescriptions": { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - } - }, - { - "id": 3484, - "name": "recipient", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3389, - "src": "35463:9:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 3485, - "name": "amount0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3401, - "src": "35474:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - { - "id": 3486, - "name": "amount1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3403, - "src": "35483:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address_payable", - "typeString": "address payable" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - ], - "id": 3481, - "name": "CollectProtocol", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4043, - "src": "35435:15:5", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint128_$_t_uint128_$returns$__$", - "typeString": "function (address,address,uint128,uint128)" - } - }, - "id": 3487, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "35435:56:5", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 3488, - "nodeType": "EmitStatement", - "src": "35430:61:5" - } - ] - }, - "documentation": { - "id": 3387, - "nodeType": "StructuredDocumentation", - "src": "34434:42:5", - "text": "@inheritdoc IUniswapV3PoolOwnerActions" - }, - "functionSelector": "85b66729", - "id": 3490, - "implemented": true, - "kind": "function", - "modifiers": [ - { - "id": 3397, - "modifierName": { - "id": 3396, - "name": "lock", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1184, - "src": "34625:4:5", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "34625:4:5" - }, - { - "id": 3399, - "modifierName": { - "id": 3398, - "name": "onlyFactoryOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1200, - "src": "34630:16:5", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "34630:16:5" - } - ], - "name": "collectProtocol", - "nodeType": "FunctionDefinition", - "overrides": { - "id": 3395, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "34616:8:5" - }, - "parameters": { - "id": 3394, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3389, - "mutability": "mutable", - "name": "recipient", - "nodeType": "VariableDeclaration", - "scope": 3490, - "src": "34515:17:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 3388, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "34515:7:5", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3391, - "mutability": "mutable", - "name": "amount0Requested", - "nodeType": "VariableDeclaration", - "scope": 3490, - "src": "34542:24:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "typeName": { - "id": 3390, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "34542:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3393, - "mutability": "mutable", - "name": "amount1Requested", - "nodeType": "VariableDeclaration", - "scope": 3490, - "src": "34576:24:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "typeName": { - "id": 3392, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "34576:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "visibility": "internal" - } - ], - "src": "34505:101:5" - }, - "returnParameters": { - "id": 3404, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3401, - "mutability": "mutable", - "name": "amount0", - "nodeType": "VariableDeclaration", - "scope": 3490, - "src": "34656:15:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "typeName": { - "id": 3400, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "34656:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3403, - "mutability": "mutable", - "name": "amount1", - "nodeType": "VariableDeclaration", - "scope": 3490, - "src": "34673:15:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "typeName": { - "id": 3402, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "34673:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "visibility": "internal" - } - ], - "src": "34655:34:5" - }, - "scope": 3491, - "src": "34481:1017:5", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - } - ], - "scope": 3492, - "src": "932:34568:5" - } - ], - "src": "37:35464:5" - }, - "id": 5 - }, - "@uniswap/v3-core/contracts/UniswapV3PoolDeployer.sol": { - "ast": { - "absolutePath": "@uniswap/v3-core/contracts/UniswapV3PoolDeployer.sol", - "exportedSymbols": { - "BitMath": [ - 4497 - ], - "FixedPoint128": [ - 4504 - ], - "FixedPoint96": [ - 4514 - ], - "FullMath": [ - 4687 - ], - "IERC20Minimal": [ - 3633 - ], - "IUniswapV3Factory": [ - 3716 - ], - "IUniswapV3FlashCallback": [ - 3770 - ], - "IUniswapV3MintCallback": [ - 3784 - ], - "IUniswapV3Pool": [ - 3738 - ], - "IUniswapV3PoolActions": [ - 3894 - ], - "IUniswapV3PoolDeployer": [ - 3756 - ], - "IUniswapV3PoolDerivedState": [ - 3925 - ], - "IUniswapV3PoolEvents": [ - 4044 - ], - "IUniswapV3PoolImmutables": [ - 4084 - ], - "IUniswapV3PoolOwnerActions": [ - 4110 - ], - "IUniswapV3PoolState": [ - 4218 - ], - "IUniswapV3SwapCallback": [ - 3798 - ], - "LiquidityMath": [ - 4739 - ], - "LowGasSafeMath": [ - 4869 - ], - "NoDelegateCall": [ - 736 - ], - "Oracle": [ - 5604 - ], - "Position": [ - 5777 - ], - "SafeCast": [ - 5847 - ], - "SqrtPriceMath": [ - 6363 - ], - "SwapMath": [ - 6624 - ], - "Tick": [ - 7076 - ], - "TickBitmap": [ - 7332 - ], - "TickMath": [ - 7867 - ], - "TransferHelper": [ - 7918 - ], - "UniswapV3Pool": [ - 3491 - ], - "UniswapV3PoolDeployer": [ - 3561 - ], - "UnsafeMath": [ - 7934 - ] - }, - "id": 3562, - "license": "BUSL-1.1", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 3493, - "literals": [ - "solidity", - "=", - "0.7", - ".6" - ], - "nodeType": "PragmaDirective", - "src": "37:23:6" - }, - { - "absolutePath": "@uniswap/v3-core/contracts/interfaces/IUniswapV3PoolDeployer.sol", - "file": "./interfaces/IUniswapV3PoolDeployer.sol", - "id": 3494, - "nodeType": "ImportDirective", - "scope": 3562, - "sourceUnit": 3757, - "src": "62:49:6", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "@uniswap/v3-core/contracts/UniswapV3Pool.sol", - "file": "./UniswapV3Pool.sol", - "id": 3495, - "nodeType": "ImportDirective", - "scope": 3562, - "sourceUnit": 3492, - "src": "113:29:6", - "symbolAliases": [], - "unitAlias": "" - }, - { - "abstract": false, - "baseContracts": [ - { - "baseName": { - "id": 3496, - "name": "IUniswapV3PoolDeployer", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 3756, - "src": "178:22:6", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IUniswapV3PoolDeployer_$3756", - "typeString": "contract IUniswapV3PoolDeployer" - } - }, - "id": 3497, - "nodeType": "InheritanceSpecifier", - "src": "178:22:6" - } - ], - "contractDependencies": [ - 3491, - 3756 - ], - "contractKind": "contract", - "fullyImplemented": true, - "id": 3561, - "linearizedBaseContracts": [ - 3561, - 3756 - ], - "name": "UniswapV3PoolDeployer", - "nodeType": "ContractDefinition", - "nodes": [ - { - "canonicalName": "UniswapV3PoolDeployer.Parameters", - "id": 3508, - "members": [ - { - "constant": false, - "id": 3499, - "mutability": "mutable", - "name": "factory", - "nodeType": "VariableDeclaration", - "scope": 3508, - "src": "235:15:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 3498, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "235:7:6", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3501, - "mutability": "mutable", - "name": "token0", - "nodeType": "VariableDeclaration", - "scope": 3508, - "src": "260:14:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 3500, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "260:7:6", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3503, - "mutability": "mutable", - "name": "token1", - "nodeType": "VariableDeclaration", - "scope": 3508, - "src": "284:14:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 3502, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "284:7:6", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3505, - "mutability": "mutable", - "name": "fee", - "nodeType": "VariableDeclaration", - "scope": 3508, - "src": "308:10:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - }, - "typeName": { - "id": 3504, - "name": "uint24", - "nodeType": "ElementaryTypeName", - "src": "308:6:6", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3507, - "mutability": "mutable", - "name": "tickSpacing", - "nodeType": "VariableDeclaration", - "scope": 3508, - "src": "328:17:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 3506, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "328:5:6", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - } - ], - "name": "Parameters", - "nodeType": "StructDefinition", - "scope": 3561, - "src": "207:145:6", - "visibility": "public" - }, - { - "baseFunctions": [ - 3755 - ], - "constant": false, - "documentation": { - "id": 3509, - "nodeType": "StructuredDocumentation", - "src": "358:38:6", - "text": "@inheritdoc IUniswapV3PoolDeployer" - }, - "functionSelector": "89035730", - "id": 3512, - "mutability": "mutable", - "name": "parameters", - "nodeType": "VariableDeclaration", - "overrides": { - "id": 3511, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "419:8:6" - }, - "scope": 3561, - "src": "401:37:6", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Parameters_$3508_storage", - "typeString": "struct UniswapV3PoolDeployer.Parameters" - }, - "typeName": { - "id": 3510, - "name": "Parameters", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 3508, - "src": "401:10:6", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Parameters_$3508_storage_ptr", - "typeString": "struct UniswapV3PoolDeployer.Parameters" - } - }, - "visibility": "public" - }, - { - "body": { - "id": 3559, - "nodeType": "Block", - "src": "1155:250:6", - "statements": [ - { - "expression": { - "id": 3536, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 3528, - "name": "parameters", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3512, - "src": "1165:10:6", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Parameters_$3508_storage", - "typeString": "struct UniswapV3PoolDeployer.Parameters storage ref" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 3530, - "name": "factory", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3515, - "src": "1199:7:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 3531, - "name": "token0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3517, - "src": "1216:6:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 3532, - "name": "token1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3519, - "src": "1232:6:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 3533, - "name": "fee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3521, - "src": "1245:3:6", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - { - "id": 3534, - "name": "tickSpacing", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3523, - "src": "1263:11:6", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - }, - { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - ], - "id": 3529, - "name": "Parameters", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3508, - "src": "1178:10:6", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_Parameters_$3508_storage_ptr_$", - "typeString": "type(struct UniswapV3PoolDeployer.Parameters storage pointer)" - } - }, - "id": 3535, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "structConstructorCall", - "lValueRequested": false, - "names": [ - "factory", - "token0", - "token1", - "fee", - "tickSpacing" - ], - "nodeType": "FunctionCall", - "src": "1178:98:6", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_struct$_Parameters_$3508_memory_ptr", - "typeString": "struct UniswapV3PoolDeployer.Parameters memory" - } - }, - "src": "1165:111:6", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Parameters_$3508_storage", - "typeString": "struct UniswapV3PoolDeployer.Parameters storage ref" - } - }, - "id": 3537, - "nodeType": "ExpressionStatement", - "src": "1165:111:6" - }, - { - "expression": { - "id": 3554, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 3538, - "name": "pool", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3526, - "src": "1286:4:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "argumentTypes": [], - "id": 3542, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "NewExpression", - "src": "1301:17:6", - "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_UniswapV3Pool_$3491_$", - "typeString": "function () returns (contract UniswapV3Pool)" - }, - "typeName": { - "id": 3541, - "name": "UniswapV3Pool", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 3491, - "src": "1305:13:6", - "typeDescriptions": { - "typeIdentifier": "t_contract$_UniswapV3Pool_$3491", - "typeString": "contract UniswapV3Pool" - } - } - }, - "id": 3551, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "names": [ - "salt" - ], - "nodeType": "FunctionCallOptions", - "options": [ - { - "arguments": [ - { - "arguments": [ - { - "id": 3546, - "name": "token0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3517, - "src": "1346:6:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 3547, - "name": "token1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3519, - "src": "1354:6:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 3548, - "name": "fee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3521, - "src": "1362:3:6", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - ], - "expression": { - "id": 3544, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -1, - "src": "1335:3:6", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 3545, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "encode", - "nodeType": "MemberAccess", - "src": "1335:10:6", - "typeDescriptions": { - "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", - "typeString": "function () pure returns (bytes memory)" - } - }, - "id": 3549, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1335:31:6", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 3543, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -8, - "src": "1325:9:6", - "typeDescriptions": { - "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) pure returns (bytes32)" - } - }, - "id": 3550, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1325:42:6", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "src": "1301:67:6", - "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_UniswapV3Pool_$3491_$salt", - "typeString": "function () returns (contract UniswapV3Pool)" - } - }, - "id": 3552, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1301:69:6", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_UniswapV3Pool_$3491", - "typeString": "contract UniswapV3Pool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_UniswapV3Pool_$3491", - "typeString": "contract UniswapV3Pool" - } - ], - "id": 3540, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1293:7:6", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 3539, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1293:7:6", - "typeDescriptions": {} - } - }, - "id": 3553, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1293:78:6", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "1286:85:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 3555, - "nodeType": "ExpressionStatement", - "src": "1286:85:6" - }, - { - "expression": { - "id": 3557, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "delete", - "prefix": true, - "src": "1381:17:6", - "subExpression": { - "id": 3556, - "name": "parameters", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3512, - "src": "1388:10:6", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Parameters_$3508_storage", - "typeString": "struct UniswapV3PoolDeployer.Parameters storage ref" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 3558, - "nodeType": "ExpressionStatement", - "src": "1381:17:6" - } - ] - }, - "documentation": { - "id": 3513, - "nodeType": "StructuredDocumentation", - "src": "445:531:6", - "text": "@dev Deploys a pool with the given parameters by transiently setting the parameters storage slot and then\n clearing it after deploying the pool.\n @param factory The contract address of the Uniswap V3 factory\n @param token0 The first token of the pool by address sort order\n @param token1 The second token of the pool by address sort order\n @param fee The fee collected upon every swap in the pool, denominated in hundredths of a bip\n @param tickSpacing The spacing between usable ticks" - }, - "id": 3560, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "deploy", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 3524, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3515, - "mutability": "mutable", - "name": "factory", - "nodeType": "VariableDeclaration", - "scope": 3560, - "src": "1006:15:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 3514, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1006:7:6", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3517, - "mutability": "mutable", - "name": "token0", - "nodeType": "VariableDeclaration", - "scope": 3560, - "src": "1031:14:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 3516, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1031:7:6", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3519, - "mutability": "mutable", - "name": "token1", - "nodeType": "VariableDeclaration", - "scope": 3560, - "src": "1055:14:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 3518, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1055:7:6", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3521, - "mutability": "mutable", - "name": "fee", - "nodeType": "VariableDeclaration", - "scope": 3560, - "src": "1079:10:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - }, - "typeName": { - "id": 3520, - "name": "uint24", - "nodeType": "ElementaryTypeName", - "src": "1079:6:6", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3523, - "mutability": "mutable", - "name": "tickSpacing", - "nodeType": "VariableDeclaration", - "scope": 3560, - "src": "1099:17:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 3522, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "1099:5:6", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - } - ], - "src": "996:126:6" - }, - "returnParameters": { - "id": 3527, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3526, - "mutability": "mutable", - "name": "pool", - "nodeType": "VariableDeclaration", - "scope": 3560, - "src": "1141:12:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 3525, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1141:7:6", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "1140:14:6" - }, - "scope": 3561, - "src": "981:424:6", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - } - ], - "scope": 3562, - "src": "144:1263:6" - } - ], - "src": "37:1371:6" - }, - "id": 6 - }, - "@uniswap/v3-core/contracts/interfaces/IERC20Minimal.sol": { - "ast": { - "absolutePath": "@uniswap/v3-core/contracts/interfaces/IERC20Minimal.sol", - "exportedSymbols": { - "IERC20Minimal": [ - 3633 - ] - }, - "id": 3634, - "license": "GPL-2.0-or-later", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 3563, - "literals": [ - "solidity", - ">=", - "0.5", - ".0" - ], - "nodeType": "PragmaDirective", - "src": "45:24:7" - }, - { - "abstract": false, - "baseContracts": [], - "contractDependencies": [], - "contractKind": "interface", - "documentation": { - "id": 3564, - "nodeType": "StructuredDocumentation", - "src": "71:132:7", - "text": "@title Minimal ERC20 interface for Uniswap\n @notice Contains a subset of the full ERC20 interface that is used in Uniswap V3" - }, - "fullyImplemented": false, - "id": 3633, - "linearizedBaseContracts": [ - 3633 - ], - "name": "IERC20Minimal", - "nodeType": "ContractDefinition", - "nodes": [ - { - "documentation": { - "id": 3565, - "nodeType": "StructuredDocumentation", - "src": "233:201:7", - "text": "@notice Returns the balance of a token\n @param account The account for which to look up the number of tokens it has, i.e. its balance\n @return The number of tokens held by the account" - }, - "functionSelector": "70a08231", - "id": 3572, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "balanceOf", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 3568, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3567, - "mutability": "mutable", - "name": "account", - "nodeType": "VariableDeclaration", - "scope": 3572, - "src": "458:15:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 3566, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "458:7:7", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "457:17:7" - }, - "returnParameters": { - "id": 3571, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3570, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 3572, - "src": "498:7:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 3569, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "498:7:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "497:9:7" - }, - "scope": 3633, - "src": "439:68:7", - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "documentation": { - "id": 3573, - "nodeType": "StructuredDocumentation", - "src": "513:333:7", - "text": "@notice Transfers the amount of token from the `msg.sender` to the recipient\n @param recipient The account that will receive the amount transferred\n @param amount The number of tokens to send from the sender to the recipient\n @return Returns true for a successful transfer, false for an unsuccessful transfer" - }, - "functionSelector": "a9059cbb", - "id": 3582, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "transfer", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 3578, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3575, - "mutability": "mutable", - "name": "recipient", - "nodeType": "VariableDeclaration", - "scope": 3582, - "src": "869:17:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 3574, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "869:7:7", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3577, - "mutability": "mutable", - "name": "amount", - "nodeType": "VariableDeclaration", - "scope": 3582, - "src": "888:14:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 3576, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "888:7:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "868:35:7" - }, - "returnParameters": { - "id": 3581, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3580, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 3582, - "src": "922:4:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 3579, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "922:4:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "src": "921:6:7" - }, - "scope": 3633, - "src": "851:77:7", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "documentation": { - "id": 3583, - "nodeType": "StructuredDocumentation", - "src": "934:250:7", - "text": "@notice Returns the current allowance given to a spender by an owner\n @param owner The account of the token owner\n @param spender The account of the token spender\n @return The current allowance granted by `owner` to `spender`" - }, - "functionSelector": "dd62ed3e", - "id": 3592, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "allowance", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 3588, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3585, - "mutability": "mutable", - "name": "owner", - "nodeType": "VariableDeclaration", - "scope": 3592, - "src": "1208:13:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 3584, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1208:7:7", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3587, - "mutability": "mutable", - "name": "spender", - "nodeType": "VariableDeclaration", - "scope": 3592, - "src": "1223:15:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 3586, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1223:7:7", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "1207:32:7" - }, - "returnParameters": { - "id": 3591, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3590, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 3592, - "src": "1263:7:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 3589, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1263:7:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "1262:9:7" - }, - "scope": 3633, - "src": "1189:83:7", - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "documentation": { - "id": 3593, - "nodeType": "StructuredDocumentation", - "src": "1278:343:7", - "text": "@notice Sets the allowance of a spender from the `msg.sender` to the value `amount`\n @param spender The account which will be allowed to spend a given amount of the owners tokens\n @param amount The amount of tokens allowed to be used by `spender`\n @return Returns true for a successful approval, false for unsuccessful" - }, - "functionSelector": "095ea7b3", - "id": 3602, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "approve", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 3598, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3595, - "mutability": "mutable", - "name": "spender", - "nodeType": "VariableDeclaration", - "scope": 3602, - "src": "1643:15:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 3594, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1643:7:7", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3597, - "mutability": "mutable", - "name": "amount", - "nodeType": "VariableDeclaration", - "scope": 3602, - "src": "1660:14:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 3596, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1660:7:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "1642:33:7" - }, - "returnParameters": { - "id": 3601, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3600, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 3602, - "src": "1694:4:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 3599, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "1694:4:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "src": "1693:6:7" - }, - "scope": 3633, - "src": "1626:74:7", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "documentation": { - "id": 3603, - "nodeType": "StructuredDocumentation", - "src": "1706:371:7", - "text": "@notice Transfers `amount` tokens from `sender` to `recipient` up to the allowance given to the `msg.sender`\n @param sender The account from which the transfer will be initiated\n @param recipient The recipient of the transfer\n @param amount The amount of the transfer\n @return Returns true for a successful transfer, false for unsuccessful" - }, - "functionSelector": "23b872dd", - "id": 3614, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "transferFrom", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 3610, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3605, - "mutability": "mutable", - "name": "sender", - "nodeType": "VariableDeclaration", - "scope": 3614, - "src": "2113:14:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 3604, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2113:7:7", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3607, - "mutability": "mutable", - "name": "recipient", - "nodeType": "VariableDeclaration", - "scope": 3614, - "src": "2137:17:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 3606, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2137:7:7", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3609, - "mutability": "mutable", - "name": "amount", - "nodeType": "VariableDeclaration", - "scope": 3614, - "src": "2164:14:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 3608, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2164:7:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "2103:81:7" - }, - "returnParameters": { - "id": 3613, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3612, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 3614, - "src": "2203:4:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 3611, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "2203:4:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "src": "2202:6:7" - }, - "scope": 3633, - "src": "2082:127:7", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "anonymous": false, - "documentation": { - "id": 3615, - "nodeType": "StructuredDocumentation", - "src": "2215:369:7", - "text": "@notice Event emitted when tokens are transferred from one address to another, either via `#transfer` or `#transferFrom`.\n @param from The account from which the tokens were sent, i.e. the balance decreased\n @param to The account to which the tokens were sent, i.e. the balance increased\n @param value The amount of tokens that were transferred" - }, - "id": 3623, - "name": "Transfer", - "nodeType": "EventDefinition", - "parameters": { - "id": 3622, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3617, - "indexed": true, - "mutability": "mutable", - "name": "from", - "nodeType": "VariableDeclaration", - "scope": 3623, - "src": "2604:20:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 3616, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2604:7:7", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3619, - "indexed": true, - "mutability": "mutable", - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 3623, - "src": "2626:18:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 3618, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2626:7:7", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3621, - "indexed": false, - "mutability": "mutable", - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 3623, - "src": "2646:13:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 3620, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2646:7:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "2603:57:7" - }, - "src": "2589:72:7" - }, - { - "anonymous": false, - "documentation": { - "id": 3624, - "nodeType": "StructuredDocumentation", - "src": "2667:321:7", - "text": "@notice Event emitted when the approval amount for the spender of a given owner's tokens changes.\n @param owner The account that approved spending of its tokens\n @param spender The account for which the spending allowance was modified\n @param value The new allowance from the owner to the spender" - }, - "id": 3632, - "name": "Approval", - "nodeType": "EventDefinition", - "parameters": { - "id": 3631, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3626, - "indexed": true, - "mutability": "mutable", - "name": "owner", - "nodeType": "VariableDeclaration", - "scope": 3632, - "src": "3008:21:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 3625, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3008:7:7", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3628, - "indexed": true, - "mutability": "mutable", - "name": "spender", - "nodeType": "VariableDeclaration", - "scope": 3632, - "src": "3031:23:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 3627, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3031:7:7", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3630, - "indexed": false, - "mutability": "mutable", - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 3632, - "src": "3056:13:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 3629, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3056:7:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "3007:63:7" - }, - "src": "2993:78:7" - } - ], - "scope": 3634, - "src": "203:2870:7" - } - ], - "src": "45:3029:7" - }, - "id": 7 - }, - "@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol": { - "ast": { - "absolutePath": "@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol", - "exportedSymbols": { - "IUniswapV3Factory": [ - 3716 - ] - }, - "id": 3717, - "license": "GPL-2.0-or-later", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 3635, - "literals": [ - "solidity", - ">=", - "0.5", - ".0" - ], - "nodeType": "PragmaDirective", - "src": "45:24:8" - }, - { - "abstract": false, - "baseContracts": [], - "contractDependencies": [], - "contractKind": "interface", - "documentation": { - "id": 3636, - "nodeType": "StructuredDocumentation", - "src": "71:163:8", - "text": "@title The interface for the Uniswap V3 Factory\n @notice The Uniswap V3 Factory facilitates creation of Uniswap V3 pools and control over the protocol fees" - }, - "fullyImplemented": false, - "id": 3716, - "linearizedBaseContracts": [ - 3716 - ], - "name": "IUniswapV3Factory", - "nodeType": "ContractDefinition", - "nodes": [ - { - "anonymous": false, - "documentation": { - "id": 3637, - "nodeType": "StructuredDocumentation", - "src": "268:185:8", - "text": "@notice Emitted when the owner of the factory is changed\n @param oldOwner The owner before the owner was changed\n @param newOwner The owner after the owner was changed" - }, - "id": 3643, - "name": "OwnerChanged", - "nodeType": "EventDefinition", - "parameters": { - "id": 3642, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3639, - "indexed": true, - "mutability": "mutable", - "name": "oldOwner", - "nodeType": "VariableDeclaration", - "scope": 3643, - "src": "477:24:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 3638, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "477:7:8", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3641, - "indexed": true, - "mutability": "mutable", - "name": "newOwner", - "nodeType": "VariableDeclaration", - "scope": 3643, - "src": "503:24:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 3640, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "503:7:8", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "476:52:8" - }, - "src": "458:71:8" - }, - { - "anonymous": false, - "documentation": { - "id": 3644, - "nodeType": "StructuredDocumentation", - "src": "535:421:8", - "text": "@notice Emitted when a pool is created\n @param token0 The first token of the pool by address sort order\n @param token1 The second token of the pool by address sort order\n @param fee The fee collected upon every swap in the pool, denominated in hundredths of a bip\n @param tickSpacing The minimum number of ticks between initialized ticks\n @param pool The address of the created pool" - }, - "id": 3656, - "name": "PoolCreated", - "nodeType": "EventDefinition", - "parameters": { - "id": 3655, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3646, - "indexed": true, - "mutability": "mutable", - "name": "token0", - "nodeType": "VariableDeclaration", - "scope": 3656, - "src": "988:22:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 3645, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "988:7:8", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3648, - "indexed": true, - "mutability": "mutable", - "name": "token1", - "nodeType": "VariableDeclaration", - "scope": 3656, - "src": "1020:22:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 3647, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1020:7:8", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3650, - "indexed": true, - "mutability": "mutable", - "name": "fee", - "nodeType": "VariableDeclaration", - "scope": 3656, - "src": "1052:18:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - }, - "typeName": { - "id": 3649, - "name": "uint24", - "nodeType": "ElementaryTypeName", - "src": "1052:6:8", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3652, - "indexed": false, - "mutability": "mutable", - "name": "tickSpacing", - "nodeType": "VariableDeclaration", - "scope": 3656, - "src": "1080:17:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 3651, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "1080:5:8", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3654, - "indexed": false, - "mutability": "mutable", - "name": "pool", - "nodeType": "VariableDeclaration", - "scope": 3656, - "src": "1107:12:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 3653, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1107:7:8", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "978:147:8" - }, - "src": "961:165:8" - }, - { - "anonymous": false, - "documentation": { - "id": 3657, - "nodeType": "StructuredDocumentation", - "src": "1132:275:8", - "text": "@notice Emitted when a new fee amount is enabled for pool creation via the factory\n @param fee The enabled fee, denominated in hundredths of a bip\n @param tickSpacing The minimum number of ticks between initialized ticks for pools created with the given fee" - }, - "id": 3663, - "name": "FeeAmountEnabled", - "nodeType": "EventDefinition", - "parameters": { - "id": 3662, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3659, - "indexed": true, - "mutability": "mutable", - "name": "fee", - "nodeType": "VariableDeclaration", - "scope": 3663, - "src": "1435:18:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - }, - "typeName": { - "id": 3658, - "name": "uint24", - "nodeType": "ElementaryTypeName", - "src": "1435:6:8", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3661, - "indexed": true, - "mutability": "mutable", - "name": "tickSpacing", - "nodeType": "VariableDeclaration", - "scope": 3663, - "src": "1455:25:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 3660, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "1455:5:8", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - } - ], - "src": "1434:47:8" - }, - "src": "1412:70:8" - }, - { - "documentation": { - "id": 3664, - "nodeType": "StructuredDocumentation", - "src": "1488:163:8", - "text": "@notice Returns the current owner of the factory\n @dev Can be changed by the current owner via setOwner\n @return The address of the factory owner" - }, - "functionSelector": "8da5cb5b", - "id": 3669, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "owner", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 3665, - "nodeType": "ParameterList", - "parameters": [], - "src": "1670:2:8" - }, - "returnParameters": { - "id": 3668, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3667, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 3669, - "src": "1696:7:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 3666, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1696:7:8", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "1695:9:8" - }, - "scope": 3716, - "src": "1656:49:8", - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "documentation": { - "id": 3670, - "nodeType": "StructuredDocumentation", - "src": "1711:348:8", - "text": "@notice Returns the tick spacing for a given fee amount, if enabled, or 0 if not enabled\n @dev A fee amount can never be removed, so this value should be hard coded or cached in the calling context\n @param fee The enabled fee, denominated in hundredths of a bip. Returns 0 in case of unenabled fee\n @return The tick spacing" - }, - "functionSelector": "22afcccb", - "id": 3677, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "feeAmountTickSpacing", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 3673, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3672, - "mutability": "mutable", - "name": "fee", - "nodeType": "VariableDeclaration", - "scope": 3677, - "src": "2094:10:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - }, - "typeName": { - "id": 3671, - "name": "uint24", - "nodeType": "ElementaryTypeName", - "src": "2094:6:8", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - "visibility": "internal" - } - ], - "src": "2093:12:8" - }, - "returnParameters": { - "id": 3676, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3675, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 3677, - "src": "2129:5:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 3674, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "2129:5:8", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - } - ], - "src": "2128:7:8" - }, - "scope": 3716, - "src": "2064:72:8", - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "documentation": { - "id": 3678, - "nodeType": "StructuredDocumentation", - "src": "2142:471:8", - "text": "@notice Returns the pool address for a given pair of tokens and a fee, or address 0 if it does not exist\n @dev tokenA and tokenB may be passed in either token0/token1 or token1/token0 order\n @param tokenA The contract address of either token0 or token1\n @param tokenB The contract address of the other token\n @param fee The fee collected upon every swap in the pool, denominated in hundredths of a bip\n @return pool The pool address" - }, - "functionSelector": "1698ee82", - "id": 3689, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "getPool", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 3685, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3680, - "mutability": "mutable", - "name": "tokenA", - "nodeType": "VariableDeclaration", - "scope": 3689, - "src": "2644:14:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 3679, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2644:7:8", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3682, - "mutability": "mutable", - "name": "tokenB", - "nodeType": "VariableDeclaration", - "scope": 3689, - "src": "2668:14:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 3681, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2668:7:8", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3684, - "mutability": "mutable", - "name": "fee", - "nodeType": "VariableDeclaration", - "scope": 3689, - "src": "2692:10:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - }, - "typeName": { - "id": 3683, - "name": "uint24", - "nodeType": "ElementaryTypeName", - "src": "2692:6:8", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - "visibility": "internal" - } - ], - "src": "2634:74:8" - }, - "returnParameters": { - "id": 3688, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3687, - "mutability": "mutable", - "name": "pool", - "nodeType": "VariableDeclaration", - "scope": 3689, - "src": "2732:12:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 3686, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2732:7:8", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "2731:14:8" - }, - "scope": 3716, - "src": "2618:128:8", - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "documentation": { - "id": 3690, - "nodeType": "StructuredDocumentation", - "src": "2752:554:8", - "text": "@notice Creates a pool for the given two tokens and fee\n @param tokenA One of the two tokens in the desired pool\n @param tokenB The other of the two tokens in the desired pool\n @param fee The desired fee for the pool\n @dev tokenA and tokenB may be passed in either order: token0/token1 or token1/token0. tickSpacing is retrieved\n from the fee. The call will revert if the pool already exists, the fee is invalid, or the token arguments\n are invalid.\n @return pool The address of the newly created pool" - }, - "functionSelector": "a1671295", - "id": 3701, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "createPool", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 3697, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3692, - "mutability": "mutable", - "name": "tokenA", - "nodeType": "VariableDeclaration", - "scope": 3701, - "src": "3340:14:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 3691, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3340:7:8", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3694, - "mutability": "mutable", - "name": "tokenB", - "nodeType": "VariableDeclaration", - "scope": 3701, - "src": "3364:14:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 3693, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3364:7:8", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3696, - "mutability": "mutable", - "name": "fee", - "nodeType": "VariableDeclaration", - "scope": 3701, - "src": "3388:10:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - }, - "typeName": { - "id": 3695, - "name": "uint24", - "nodeType": "ElementaryTypeName", - "src": "3388:6:8", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - "visibility": "internal" - } - ], - "src": "3330:74:8" - }, - "returnParameters": { - "id": 3700, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3699, - "mutability": "mutable", - "name": "pool", - "nodeType": "VariableDeclaration", - "scope": 3701, - "src": "3423:12:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 3698, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3423:7:8", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "3422:14:8" - }, - "scope": 3716, - "src": "3311:126:8", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "documentation": { - "id": 3702, - "nodeType": "StructuredDocumentation", - "src": "3443:144:8", - "text": "@notice Updates the owner of the factory\n @dev Must be called by the current owner\n @param _owner The new owner of the factory" - }, - "functionSelector": "13af4035", - "id": 3707, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "setOwner", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 3705, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3704, - "mutability": "mutable", - "name": "_owner", - "nodeType": "VariableDeclaration", - "scope": 3707, - "src": "3610:14:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 3703, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3610:7:8", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "3609:16:8" - }, - "returnParameters": { - "id": 3706, - "nodeType": "ParameterList", - "parameters": [], - "src": "3634:0:8" - }, - "scope": 3716, - "src": "3592:43:8", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "documentation": { - "id": 3708, - "nodeType": "StructuredDocumentation", - "src": "3641:326:8", - "text": "@notice Enables a fee amount with the given tickSpacing\n @dev Fee amounts may never be removed once enabled\n @param fee The fee amount to enable, denominated in hundredths of a bip (i.e. 1e-6)\n @param tickSpacing The spacing between ticks to be enforced for all pools created with the given fee amount" - }, - "functionSelector": "8a7c195f", - "id": 3715, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "enableFeeAmount", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 3713, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3710, - "mutability": "mutable", - "name": "fee", - "nodeType": "VariableDeclaration", - "scope": 3715, - "src": "3997:10:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - }, - "typeName": { - "id": 3709, - "name": "uint24", - "nodeType": "ElementaryTypeName", - "src": "3997:6:8", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3712, - "mutability": "mutable", - "name": "tickSpacing", - "nodeType": "VariableDeclaration", - "scope": 3715, - "src": "4009:17:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 3711, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "4009:5:8", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - } - ], - "src": "3996:31:8" - }, - "returnParameters": { - "id": 3714, - "nodeType": "ParameterList", - "parameters": [], - "src": "4036:0:8" - }, - "scope": 3716, - "src": "3972:65:8", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - } - ], - "scope": 3717, - "src": "234:3805:8" - } - ], - "src": "45:3995:8" - }, - "id": 8 - }, - "@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol": { - "ast": { - "absolutePath": "@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol", - "exportedSymbols": { - "IUniswapV3Pool": [ - 3738 - ], - "IUniswapV3PoolActions": [ - 3894 - ], - "IUniswapV3PoolDerivedState": [ - 3925 - ], - "IUniswapV3PoolEvents": [ - 4044 - ], - "IUniswapV3PoolImmutables": [ - 4084 - ], - "IUniswapV3PoolOwnerActions": [ - 4110 - ], - "IUniswapV3PoolState": [ - 4218 - ] - }, - "id": 3739, - "license": "GPL-2.0-or-later", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 3718, - "literals": [ - "solidity", - ">=", - "0.5", - ".0" - ], - "nodeType": "PragmaDirective", - "src": "45:24:9" - }, - { - "absolutePath": "@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol", - "file": "./pool/IUniswapV3PoolImmutables.sol", - "id": 3719, - "nodeType": "ImportDirective", - "scope": 3739, - "sourceUnit": 4085, - "src": "71:45:9", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol", - "file": "./pool/IUniswapV3PoolState.sol", - "id": 3720, - "nodeType": "ImportDirective", - "scope": 3739, - "sourceUnit": 4219, - "src": "117:40:9", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol", - "file": "./pool/IUniswapV3PoolDerivedState.sol", - "id": 3721, - "nodeType": "ImportDirective", - "scope": 3739, - "sourceUnit": 3926, - "src": "158:47:9", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol", - "file": "./pool/IUniswapV3PoolActions.sol", - "id": 3722, - "nodeType": "ImportDirective", - "scope": 3739, - "sourceUnit": 3895, - "src": "206:42:9", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol", - "file": "./pool/IUniswapV3PoolOwnerActions.sol", - "id": 3723, - "nodeType": "ImportDirective", - "scope": 3739, - "sourceUnit": 4111, - "src": "249:47:9", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol", - "file": "./pool/IUniswapV3PoolEvents.sol", - "id": 3724, - "nodeType": "ImportDirective", - "scope": 3739, - "sourceUnit": 4045, - "src": "297:41:9", - "symbolAliases": [], - "unitAlias": "" - }, - { - "abstract": false, - "baseContracts": [ - { - "baseName": { - "id": 3726, - "name": "IUniswapV3PoolImmutables", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 4084, - "src": "637:24:9", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IUniswapV3PoolImmutables_$4084", - "typeString": "contract IUniswapV3PoolImmutables" - } - }, - "id": 3727, - "nodeType": "InheritanceSpecifier", - "src": "637:24:9" - }, - { - "baseName": { - "id": 3728, - "name": "IUniswapV3PoolState", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 4218, - "src": "667:19:9", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IUniswapV3PoolState_$4218", - "typeString": "contract IUniswapV3PoolState" - } - }, - "id": 3729, - "nodeType": "InheritanceSpecifier", - "src": "667:19:9" - }, - { - "baseName": { - "id": 3730, - "name": "IUniswapV3PoolDerivedState", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 3925, - "src": "692:26:9", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IUniswapV3PoolDerivedState_$3925", - "typeString": "contract IUniswapV3PoolDerivedState" - } - }, - "id": 3731, - "nodeType": "InheritanceSpecifier", - "src": "692:26:9" - }, - { - "baseName": { - "id": 3732, - "name": "IUniswapV3PoolActions", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 3894, - "src": "724:21:9", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IUniswapV3PoolActions_$3894", - "typeString": "contract IUniswapV3PoolActions" - } - }, - "id": 3733, - "nodeType": "InheritanceSpecifier", - "src": "724:21:9" - }, - { - "baseName": { - "id": 3734, - "name": "IUniswapV3PoolOwnerActions", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 4110, - "src": "751:26:9", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IUniswapV3PoolOwnerActions_$4110", - "typeString": "contract IUniswapV3PoolOwnerActions" - } - }, - "id": 3735, - "nodeType": "InheritanceSpecifier", - "src": "751:26:9" - }, - { - "baseName": { - "id": 3736, - "name": "IUniswapV3PoolEvents", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 4044, - "src": "783:20:9", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IUniswapV3PoolEvents_$4044", - "typeString": "contract IUniswapV3PoolEvents" - } - }, - "id": 3737, - "nodeType": "InheritanceSpecifier", - "src": "783:20:9" - } - ], - "contractDependencies": [ - 3894, - 3925, - 4044, - 4084, - 4110, - 4218 - ], - "contractKind": "interface", - "documentation": { - "id": 3725, - "nodeType": "StructuredDocumentation", - "src": "340:265:9", - "text": "@title The interface for a Uniswap V3 Pool\n @notice A Uniswap pool facilitates swapping and automated market making between any two assets that strictly conform\n to the ERC20 specification\n @dev The pool interface is broken up into many smaller pieces" - }, - "fullyImplemented": false, - "id": 3738, - "linearizedBaseContracts": [ - 3738, - 4044, - 4110, - 3894, - 3925, - 4218, - 4084 - ], - "name": "IUniswapV3Pool", - "nodeType": "ContractDefinition", - "nodes": [], - "scope": 3739, - "src": "605:203:9" - } - ], - "src": "45:764:9" - }, - "id": 9 - }, - "@uniswap/v3-core/contracts/interfaces/IUniswapV3PoolDeployer.sol": { - "ast": { - "absolutePath": "@uniswap/v3-core/contracts/interfaces/IUniswapV3PoolDeployer.sol", - "exportedSymbols": { - "IUniswapV3PoolDeployer": [ - 3756 - ] - }, - "id": 3757, - "license": "GPL-2.0-or-later", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 3740, - "literals": [ - "solidity", - ">=", - "0.5", - ".0" - ], - "nodeType": "PragmaDirective", - "src": "45:24:10" - }, - { - "abstract": false, - "baseContracts": [], - "contractDependencies": [], - "contractKind": "interface", - "documentation": { - "id": 3741, - "nodeType": "StructuredDocumentation", - "src": "71:403:10", - "text": "@title An interface for a contract that is capable of deploying Uniswap V3 Pools\n @notice A contract that constructs a pool must implement this to pass arguments to the pool\n @dev This is used to avoid having constructor arguments in the pool contract, which results in the init code hash\n of the pool being constant allowing the CREATE2 address of the pool to be cheaply computed on-chain" - }, - "fullyImplemented": false, - "id": 3756, - "linearizedBaseContracts": [ - 3756 - ], - "name": "IUniswapV3PoolDeployer", - "nodeType": "ContractDefinition", - "nodes": [ - { - "documentation": { - "id": 3742, - "nodeType": "StructuredDocumentation", - "src": "513:560:10", - "text": "@notice Get the parameters to be used in constructing the pool, set transiently during pool creation.\n @dev Called by the pool constructor to fetch the parameters of the pool\n Returns factory The factory address\n Returns token0 The first token of the pool by address sort order\n Returns token1 The second token of the pool by address sort order\n Returns fee The fee collected upon every swap in the pool, denominated in hundredths of a bip\n Returns tickSpacing The minimum number of ticks between initialized ticks" - }, - "functionSelector": "89035730", - "id": 3755, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "parameters", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 3743, - "nodeType": "ParameterList", - "parameters": [], - "src": "1097:2:10" - }, - "returnParameters": { - "id": 3754, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3745, - "mutability": "mutable", - "name": "factory", - "nodeType": "VariableDeclaration", - "scope": 3755, - "src": "1160:15:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 3744, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1160:7:10", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3747, - "mutability": "mutable", - "name": "token0", - "nodeType": "VariableDeclaration", - "scope": 3755, - "src": "1189:14:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 3746, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1189:7:10", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3749, - "mutability": "mutable", - "name": "token1", - "nodeType": "VariableDeclaration", - "scope": 3755, - "src": "1217:14:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 3748, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1217:7:10", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3751, - "mutability": "mutable", - "name": "fee", - "nodeType": "VariableDeclaration", - "scope": 3755, - "src": "1245:10:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - }, - "typeName": { - "id": 3750, - "name": "uint24", - "nodeType": "ElementaryTypeName", - "src": "1245:6:10", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3753, - "mutability": "mutable", - "name": "tickSpacing", - "nodeType": "VariableDeclaration", - "scope": 3755, - "src": "1269:17:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 3752, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "1269:5:10", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - } - ], - "src": "1146:150:10" - }, - "scope": 3756, - "src": "1078:219:10", - "stateMutability": "view", - "virtual": false, - "visibility": "external" - } - ], - "scope": 3757, - "src": "474:825:10" - } - ], - "src": "45:1255:10" - }, - "id": 10 - }, - "@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3FlashCallback.sol": { - "ast": { - "absolutePath": "@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3FlashCallback.sol", - "exportedSymbols": { - "IUniswapV3FlashCallback": [ - 3770 - ] - }, - "id": 3771, - "license": "GPL-2.0-or-later", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 3758, - "literals": [ - "solidity", - ">=", - "0.5", - ".0" - ], - "nodeType": "PragmaDirective", - "src": "45:24:11" - }, - { - "abstract": false, - "baseContracts": [], - "contractDependencies": [], - "contractKind": "interface", - "documentation": { - "id": 3759, - "nodeType": "StructuredDocumentation", - "src": "71:146:11", - "text": "@title Callback for IUniswapV3PoolActions#flash\n @notice Any contract that calls IUniswapV3PoolActions#flash must implement this interface" - }, - "fullyImplemented": false, - "id": 3770, - "linearizedBaseContracts": [ - 3770 - ], - "name": "IUniswapV3FlashCallback", - "nodeType": "ContractDefinition", - "nodes": [ - { - "documentation": { - "id": 3760, - "nodeType": "StructuredDocumentation", - "src": "257:597:11", - "text": "@notice Called to `msg.sender` after transferring to the recipient from IUniswapV3Pool#flash.\n @dev In the implementation you must repay the pool the tokens sent by flash plus the computed fee amounts.\n The caller of this method must be checked to be a UniswapV3Pool deployed by the canonical UniswapV3Factory.\n @param fee0 The fee amount in token0 due to the pool by the end of the flash\n @param fee1 The fee amount in token1 due to the pool by the end of the flash\n @param data Any data passed through by the caller via the IUniswapV3PoolActions#flash call" - }, - "functionSelector": "e9cbafb0", - "id": 3769, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "uniswapV3FlashCallback", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 3767, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3762, - "mutability": "mutable", - "name": "fee0", - "nodeType": "VariableDeclaration", - "scope": 3769, - "src": "900:12:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 3761, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "900:7:11", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3764, - "mutability": "mutable", - "name": "fee1", - "nodeType": "VariableDeclaration", - "scope": 3769, - "src": "922:12:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 3763, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "922:7:11", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3766, - "mutability": "mutable", - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 3769, - "src": "944:19:11", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 3765, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "944:5:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "890:79:11" - }, - "returnParameters": { - "id": 3768, - "nodeType": "ParameterList", - "parameters": [], - "src": "978:0:11" - }, - "scope": 3770, - "src": "859:120:11", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - } - ], - "scope": 3771, - "src": "217:764:11" - } - ], - "src": "45:937:11" - }, - "id": 11 - }, - "@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3MintCallback.sol": { - "ast": { - "absolutePath": "@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3MintCallback.sol", - "exportedSymbols": { - "IUniswapV3MintCallback": [ - 3784 - ] - }, - "id": 3785, - "license": "GPL-2.0-or-later", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 3772, - "literals": [ - "solidity", - ">=", - "0.5", - ".0" - ], - "nodeType": "PragmaDirective", - "src": "45:24:12" - }, - { - "abstract": false, - "baseContracts": [], - "contractDependencies": [], - "contractKind": "interface", - "documentation": { - "id": 3773, - "nodeType": "StructuredDocumentation", - "src": "71:144:12", - "text": "@title Callback for IUniswapV3PoolActions#mint\n @notice Any contract that calls IUniswapV3PoolActions#mint must implement this interface" - }, - "fullyImplemented": false, - "id": 3784, - "linearizedBaseContracts": [ - 3784 - ], - "name": "IUniswapV3MintCallback", - "nodeType": "ContractDefinition", - "nodes": [ - { - "documentation": { - "id": 3774, - "nodeType": "StructuredDocumentation", - "src": "254:585:12", - "text": "@notice Called to `msg.sender` after minting liquidity to a position from IUniswapV3Pool#mint.\n @dev In the implementation you must pay the pool tokens owed for the minted liquidity.\n The caller of this method must be checked to be a UniswapV3Pool deployed by the canonical UniswapV3Factory.\n @param amount0Owed The amount of token0 due to the pool for the minted liquidity\n @param amount1Owed The amount of token1 due to the pool for the minted liquidity\n @param data Any data passed through by the caller via the IUniswapV3PoolActions#mint call" - }, - "functionSelector": "d3487997", - "id": 3783, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "uniswapV3MintCallback", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 3781, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3776, - "mutability": "mutable", - "name": "amount0Owed", - "nodeType": "VariableDeclaration", - "scope": 3783, - "src": "884:19:12", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 3775, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "884:7:12", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3778, - "mutability": "mutable", - "name": "amount1Owed", - "nodeType": "VariableDeclaration", - "scope": 3783, - "src": "913:19:12", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 3777, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "913:7:12", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3780, - "mutability": "mutable", - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 3783, - "src": "942:19:12", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 3779, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "942:5:12", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "874:93:12" - }, - "returnParameters": { - "id": 3782, - "nodeType": "ParameterList", - "parameters": [], - "src": "976:0:12" - }, - "scope": 3784, - "src": "844:133:12", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - } - ], - "scope": 3785, - "src": "215:764:12" - } - ], - "src": "45:935:12" - }, - "id": 12 - }, - "@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol": { - "ast": { - "absolutePath": "@uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol", - "exportedSymbols": { - "IUniswapV3SwapCallback": [ - 3798 - ] - }, - "id": 3799, - "license": "GPL-2.0-or-later", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 3786, - "literals": [ - "solidity", - ">=", - "0.5", - ".0" - ], - "nodeType": "PragmaDirective", - "src": "45:24:13" - }, - { - "abstract": false, - "baseContracts": [], - "contractDependencies": [], - "contractKind": "interface", - "documentation": { - "id": 3787, - "nodeType": "StructuredDocumentation", - "src": "71:144:13", - "text": "@title Callback for IUniswapV3PoolActions#swap\n @notice Any contract that calls IUniswapV3PoolActions#swap must implement this interface" - }, - "fullyImplemented": false, - "id": 3798, - "linearizedBaseContracts": [ - 3798 - ], - "name": "IUniswapV3SwapCallback", - "nodeType": "ContractDefinition", - "nodes": [ - { - "documentation": { - "id": 3788, - "nodeType": "StructuredDocumentation", - "src": "254:898:13", - "text": "@notice Called to `msg.sender` after executing a swap via IUniswapV3Pool#swap.\n @dev In the implementation you must pay the pool tokens owed for the swap.\n The caller of this method must be checked to be a UniswapV3Pool deployed by the canonical UniswapV3Factory.\n amount0Delta and amount1Delta can both be 0 if no tokens were swapped.\n @param amount0Delta The amount of token0 that was sent (negative) or must be received (positive) by the pool by\n the end of the swap. If positive, the callback must send that amount of token0 to the pool.\n @param amount1Delta The amount of token1 that was sent (negative) or must be received (positive) by the pool by\n the end of the swap. If positive, the callback must send that amount of token1 to the pool.\n @param data Any data passed through by the caller via the IUniswapV3PoolActions#swap call" - }, - "functionSelector": "fa461e33", - "id": 3797, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "uniswapV3SwapCallback", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 3795, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3790, - "mutability": "mutable", - "name": "amount0Delta", - "nodeType": "VariableDeclaration", - "scope": 3797, - "src": "1197:19:13", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "typeName": { - "id": 3789, - "name": "int256", - "nodeType": "ElementaryTypeName", - "src": "1197:6:13", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3792, - "mutability": "mutable", - "name": "amount1Delta", - "nodeType": "VariableDeclaration", - "scope": 3797, - "src": "1226:19:13", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "typeName": { - "id": 3791, - "name": "int256", - "nodeType": "ElementaryTypeName", - "src": "1226:6:13", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3794, - "mutability": "mutable", - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 3797, - "src": "1255:19:13", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 3793, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "1255:5:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "1187:93:13" - }, - "returnParameters": { - "id": 3796, - "nodeType": "ParameterList", - "parameters": [], - "src": "1289:0:13" - }, - "scope": 3798, - "src": "1157:133:13", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - } - ], - "scope": 3799, - "src": "215:1077:13" - } - ], - "src": "45:1248:13" - }, - "id": 13 - }, - "@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol": { - "ast": { - "absolutePath": "@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol", - "exportedSymbols": { - "IUniswapV3PoolActions": [ - 3894 - ] - }, - "id": 3895, - "license": "GPL-2.0-or-later", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 3800, - "literals": [ - "solidity", - ">=", - "0.5", - ".0" - ], - "nodeType": "PragmaDirective", - "src": "45:24:14" - }, - { - "abstract": false, - "baseContracts": [], - "contractDependencies": [], - "contractKind": "interface", - "documentation": { - "id": 3801, - "nodeType": "StructuredDocumentation", - "src": "71:102:14", - "text": "@title Permissionless pool actions\n @notice Contains pool methods that can be called by anyone" - }, - "fullyImplemented": false, - "id": 3894, - "linearizedBaseContracts": [ - 3894 - ], - "name": "IUniswapV3PoolActions", - "nodeType": "ContractDefinition", - "nodes": [ - { - "documentation": { - "id": 3802, - "nodeType": "StructuredDocumentation", - "src": "211:206:14", - "text": "@notice Sets the initial price for the pool\n @dev Price is represented as a sqrt(amountToken1/amountToken0) Q64.96 value\n @param sqrtPriceX96 the initial sqrt price of the pool as a Q64.96" - }, - "functionSelector": "f637731d", - "id": 3807, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "initialize", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 3805, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3804, - "mutability": "mutable", - "name": "sqrtPriceX96", - "nodeType": "VariableDeclaration", - "scope": 3807, - "src": "442:20:14", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "typeName": { - "id": 3803, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "442:7:14", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "visibility": "internal" - } - ], - "src": "441:22:14" - }, - "returnParameters": { - "id": 3806, - "nodeType": "ParameterList", - "parameters": [], - "src": "472:0:14" - }, - "scope": 3894, - "src": "422:51:14", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "documentation": { - "id": 3808, - "nodeType": "StructuredDocumentation", - "src": "479:1029:14", - "text": "@notice Adds liquidity for the given recipient/tickLower/tickUpper position\n @dev The caller of this method receives a callback in the form of IUniswapV3MintCallback#uniswapV3MintCallback\n in which they must pay any token0 or token1 owed for the liquidity. The amount of token0/token1 due depends\n on tickLower, tickUpper, the amount of liquidity, and the current price.\n @param recipient The address for which the liquidity will be created\n @param tickLower The lower tick of the position in which to add liquidity\n @param tickUpper The upper tick of the position in which to add liquidity\n @param amount The amount of liquidity to mint\n @param data Any data that should be passed through to the callback\n @return amount0 The amount of token0 that was paid to mint the given amount of liquidity. Matches the value in the callback\n @return amount1 The amount of token1 that was paid to mint the given amount of liquidity. Matches the value in the callback" - }, - "functionSelector": "3c8a7d8d", - "id": 3825, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "mint", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 3819, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3810, - "mutability": "mutable", - "name": "recipient", - "nodeType": "VariableDeclaration", - "scope": 3825, - "src": "1536:17:14", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 3809, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1536:7:14", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3812, - "mutability": "mutable", - "name": "tickLower", - "nodeType": "VariableDeclaration", - "scope": 3825, - "src": "1563:15:14", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 3811, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "1563:5:14", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3814, - "mutability": "mutable", - "name": "tickUpper", - "nodeType": "VariableDeclaration", - "scope": 3825, - "src": "1588:15:14", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 3813, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "1588:5:14", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3816, - "mutability": "mutable", - "name": "amount", - "nodeType": "VariableDeclaration", - "scope": 3825, - "src": "1613:14:14", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "typeName": { - "id": 3815, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "1613:7:14", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3818, - "mutability": "mutable", - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 3825, - "src": "1637:19:14", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 3817, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "1637:5:14", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "1526:136:14" - }, - "returnParameters": { - "id": 3824, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3821, - "mutability": "mutable", - "name": "amount0", - "nodeType": "VariableDeclaration", - "scope": 3825, - "src": "1681:15:14", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 3820, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1681:7:14", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3823, - "mutability": "mutable", - "name": "amount1", - "nodeType": "VariableDeclaration", - "scope": 3825, - "src": "1698:15:14", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 3822, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1698:7:14", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "1680:34:14" - }, - "scope": 3894, - "src": "1513:202:14", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "documentation": { - "id": 3826, - "nodeType": "StructuredDocumentation", - "src": "1721:1053:14", - "text": "@notice Collects tokens owed to a position\n @dev Does not recompute fees earned, which must be done either via mint or burn of any amount of liquidity.\n Collect must be called by the position owner. To withdraw only token0 or only token1, amount0Requested or\n amount1Requested may be set to zero. To withdraw all tokens owed, caller may pass any value greater than the\n actual tokens owed, e.g. type(uint128).max. Tokens owed may be from accumulated swap fees or burned liquidity.\n @param recipient The address which should receive the fees collected\n @param tickLower The lower tick of the position for which to collect fees\n @param tickUpper The upper tick of the position for which to collect fees\n @param amount0Requested How much token0 should be withdrawn from the fees owed\n @param amount1Requested How much token1 should be withdrawn from the fees owed\n @return amount0 The amount of fees collected in token0\n @return amount1 The amount of fees collected in token1" - }, - "functionSelector": "4f1eb3d8", - "id": 3843, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "collect", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 3837, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3828, - "mutability": "mutable", - "name": "recipient", - "nodeType": "VariableDeclaration", - "scope": 3843, - "src": "2805:17:14", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 3827, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2805:7:14", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3830, - "mutability": "mutable", - "name": "tickLower", - "nodeType": "VariableDeclaration", - "scope": 3843, - "src": "2832:15:14", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 3829, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "2832:5:14", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3832, - "mutability": "mutable", - "name": "tickUpper", - "nodeType": "VariableDeclaration", - "scope": 3843, - "src": "2857:15:14", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 3831, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "2857:5:14", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3834, - "mutability": "mutable", - "name": "amount0Requested", - "nodeType": "VariableDeclaration", - "scope": 3843, - "src": "2882:24:14", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "typeName": { - "id": 3833, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "2882:7:14", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3836, - "mutability": "mutable", - "name": "amount1Requested", - "nodeType": "VariableDeclaration", - "scope": 3843, - "src": "2916:24:14", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "typeName": { - "id": 3835, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "2916:7:14", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "visibility": "internal" - } - ], - "src": "2795:151:14" - }, - "returnParameters": { - "id": 3842, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3839, - "mutability": "mutable", - "name": "amount0", - "nodeType": "VariableDeclaration", - "scope": 3843, - "src": "2965:15:14", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "typeName": { - "id": 3838, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "2965:7:14", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3841, - "mutability": "mutable", - "name": "amount1", - "nodeType": "VariableDeclaration", - "scope": 3843, - "src": "2982:15:14", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "typeName": { - "id": 3840, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "2982:7:14", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "visibility": "internal" - } - ], - "src": "2964:34:14" - }, - "scope": 3894, - "src": "2779:220:14", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "documentation": { - "id": 3844, - "nodeType": "StructuredDocumentation", - "src": "3005:631:14", - "text": "@notice Burn liquidity from the sender and account tokens owed for the liquidity to the position\n @dev Can be used to trigger a recalculation of fees owed to a position by calling with an amount of 0\n @dev Fees must be collected separately via a call to #collect\n @param tickLower The lower tick of the position for which to burn liquidity\n @param tickUpper The upper tick of the position for which to burn liquidity\n @param amount How much liquidity to burn\n @return amount0 The amount of token0 sent to the recipient\n @return amount1 The amount of token1 sent to the recipient" - }, - "functionSelector": "a34123a7", - "id": 3857, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "burn", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 3851, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3846, - "mutability": "mutable", - "name": "tickLower", - "nodeType": "VariableDeclaration", - "scope": 3857, - "src": "3664:15:14", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 3845, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "3664:5:14", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3848, - "mutability": "mutable", - "name": "tickUpper", - "nodeType": "VariableDeclaration", - "scope": 3857, - "src": "3689:15:14", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 3847, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "3689:5:14", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3850, - "mutability": "mutable", - "name": "amount", - "nodeType": "VariableDeclaration", - "scope": 3857, - "src": "3714:14:14", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "typeName": { - "id": 3849, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "3714:7:14", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "visibility": "internal" - } - ], - "src": "3654:80:14" - }, - "returnParameters": { - "id": 3856, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3853, - "mutability": "mutable", - "name": "amount0", - "nodeType": "VariableDeclaration", - "scope": 3857, - "src": "3753:15:14", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 3852, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3753:7:14", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3855, - "mutability": "mutable", - "name": "amount1", - "nodeType": "VariableDeclaration", - "scope": 3857, - "src": "3770:15:14", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 3854, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3770:7:14", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "3752:34:14" - }, - "scope": 3894, - "src": "3641:146:14", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "documentation": { - "id": 3858, - "nodeType": "StructuredDocumentation", - "src": "3793:1015:14", - "text": "@notice Swap token0 for token1, or token1 for token0\n @dev The caller of this method receives a callback in the form of IUniswapV3SwapCallback#uniswapV3SwapCallback\n @param recipient The address to receive the output of the swap\n @param zeroForOne The direction of the swap, true for token0 to token1, false for token1 to token0\n @param amountSpecified The amount of the swap, which implicitly configures the swap as exact input (positive), or exact output (negative)\n @param sqrtPriceLimitX96 The Q64.96 sqrt price limit. If zero for one, the price cannot be less than this\n value after the swap. If one for zero, the price cannot be greater than this value after the swap\n @param data Any data to be passed through to the callback\n @return amount0 The delta of the balance of token0 of the pool, exact when negative, minimum when positive\n @return amount1 The delta of the balance of token1 of the pool, exact when negative, minimum when positive" - }, - "functionSelector": "128acb08", - "id": 3875, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "swap", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 3869, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3860, - "mutability": "mutable", - "name": "recipient", - "nodeType": "VariableDeclaration", - "scope": 3875, - "src": "4836:17:14", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 3859, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4836:7:14", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3862, - "mutability": "mutable", - "name": "zeroForOne", - "nodeType": "VariableDeclaration", - "scope": 3875, - "src": "4863:15:14", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 3861, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "4863:4:14", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3864, - "mutability": "mutable", - "name": "amountSpecified", - "nodeType": "VariableDeclaration", - "scope": 3875, - "src": "4888:22:14", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "typeName": { - "id": 3863, - "name": "int256", - "nodeType": "ElementaryTypeName", - "src": "4888:6:14", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3866, - "mutability": "mutable", - "name": "sqrtPriceLimitX96", - "nodeType": "VariableDeclaration", - "scope": 3875, - "src": "4920:25:14", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "typeName": { - "id": 3865, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "4920:7:14", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3868, - "mutability": "mutable", - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 3875, - "src": "4955:19:14", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 3867, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "4955:5:14", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "4826:154:14" - }, - "returnParameters": { - "id": 3874, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3871, - "mutability": "mutable", - "name": "amount0", - "nodeType": "VariableDeclaration", - "scope": 3875, - "src": "4999:14:14", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "typeName": { - "id": 3870, - "name": "int256", - "nodeType": "ElementaryTypeName", - "src": "4999:6:14", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3873, - "mutability": "mutable", - "name": "amount1", - "nodeType": "VariableDeclaration", - "scope": 3875, - "src": "5015:14:14", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "typeName": { - "id": 3872, - "name": "int256", - "nodeType": "ElementaryTypeName", - "src": "5015:6:14", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "visibility": "internal" - } - ], - "src": "4998:32:14" - }, - "scope": 3894, - "src": "4813:218:14", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "documentation": { - "id": 3876, - "nodeType": "StructuredDocumentation", - "src": "5037:657:14", - "text": "@notice Receive token0 and/or token1 and pay it back, plus a fee, in the callback\n @dev The caller of this method receives a callback in the form of IUniswapV3FlashCallback#uniswapV3FlashCallback\n @dev Can be used to donate underlying tokens pro-rata to currently in-range liquidity providers by calling\n with 0 amount{0,1} and sending the donation amount(s) from the callback\n @param recipient The address which will receive the token0 and token1 amounts\n @param amount0 The amount of token0 to send\n @param amount1 The amount of token1 to send\n @param data Any data to be passed through to the callback" - }, - "functionSelector": "490e6cbc", - "id": 3887, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "flash", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 3885, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3878, - "mutability": "mutable", - "name": "recipient", - "nodeType": "VariableDeclaration", - "scope": 3887, - "src": "5723:17:14", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 3877, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "5723:7:14", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3880, - "mutability": "mutable", - "name": "amount0", - "nodeType": "VariableDeclaration", - "scope": 3887, - "src": "5750:15:14", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 3879, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5750:7:14", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3882, - "mutability": "mutable", - "name": "amount1", - "nodeType": "VariableDeclaration", - "scope": 3887, - "src": "5775:15:14", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 3881, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5775:7:14", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3884, - "mutability": "mutable", - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 3887, - "src": "5800:19:14", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_bytes_calldata_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 3883, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "5800:5:14", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "src": "5713:112:14" - }, - "returnParameters": { - "id": 3886, - "nodeType": "ParameterList", - "parameters": [], - "src": "5834:0:14" - }, - "scope": 3894, - "src": "5699:136:14", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "documentation": { - "id": 3888, - "nodeType": "StructuredDocumentation", - "src": "5841:367:14", - "text": "@notice Increase the maximum number of price and liquidity observations that this pool will store\n @dev This method is no-op if the pool already has an observationCardinalityNext greater than or equal to\n the input observationCardinalityNext.\n @param observationCardinalityNext The desired minimum number of observations for the pool to store" - }, - "functionSelector": "32148f67", - "id": 3893, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "increaseObservationCardinalityNext", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 3891, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3890, - "mutability": "mutable", - "name": "observationCardinalityNext", - "nodeType": "VariableDeclaration", - "scope": 3893, - "src": "6257:33:14", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - "typeName": { - "id": 3889, - "name": "uint16", - "nodeType": "ElementaryTypeName", - "src": "6257:6:14", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "visibility": "internal" - } - ], - "src": "6256:35:14" - }, - "returnParameters": { - "id": 3892, - "nodeType": "ParameterList", - "parameters": [], - "src": "6300:0:14" - }, - "scope": 3894, - "src": "6213:88:14", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - } - ], - "scope": 3895, - "src": "173:6130:14" - } - ], - "src": "45:6259:14" - }, - "id": 14 - }, - "@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol": { - "ast": { - "absolutePath": "@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol", - "exportedSymbols": { - "IUniswapV3PoolDerivedState": [ - 3925 - ] - }, - "id": 3926, - "license": "GPL-2.0-or-later", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 3896, - "literals": [ - "solidity", - ">=", - "0.5", - ".0" - ], - "nodeType": "PragmaDirective", - "src": "45:24:15" - }, - { - "abstract": false, - "baseContracts": [], - "contractDependencies": [], - "contractKind": "interface", - "documentation": { - "id": 3897, - "nodeType": "StructuredDocumentation", - "src": "71:222:15", - "text": "@title Pool state that is not stored\n @notice Contains view functions to provide information about the pool that is computed rather than stored on the\n blockchain. The functions here may have variable gas costs." - }, - "fullyImplemented": false, - "id": 3925, - "linearizedBaseContracts": [ - 3925 - ], - "name": "IUniswapV3PoolDerivedState", - "nodeType": "ContractDefinition", - "nodes": [ - { - "documentation": { - "id": 3898, - "nodeType": "StructuredDocumentation", - "src": "336:1045:15", - "text": "@notice Returns the cumulative tick and liquidity as of each timestamp `secondsAgo` from the current block timestamp\n @dev To get a time weighted average tick or liquidity-in-range, you must call this with two values, one representing\n the beginning of the period and another for the end of the period. E.g., to get the last hour time-weighted average tick,\n you must call it with secondsAgos = [3600, 0].\n @dev The time weighted average tick represents the geometric time weighted average price of the pool, in\n log base sqrt(1.0001) of token1 / token0. The TickMath library can be used to go from a tick value to a ratio.\n @param secondsAgos From how long ago each cumulative tick and liquidity value should be returned\n @return tickCumulatives Cumulative tick values as of each `secondsAgos` from the current block timestamp\n @return secondsPerLiquidityCumulativeX128s Cumulative seconds per liquidity-in-range value as of each `secondsAgos` from the current block\n timestamp" - }, - "functionSelector": "883bdbfd", - "id": 3910, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "observe", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 3902, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3901, - "mutability": "mutable", - "name": "secondsAgos", - "nodeType": "VariableDeclaration", - "scope": 3910, - "src": "1403:29:15", - "stateVariable": false, - "storageLocation": "calldata", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint32_$dyn_calldata_ptr", - "typeString": "uint32[]" - }, - "typeName": { - "baseType": { - "id": 3899, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "1403:6:15", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "id": 3900, - "nodeType": "ArrayTypeName", - "src": "1403:8:15", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint32_$dyn_storage_ptr", - "typeString": "uint32[]" - } - }, - "visibility": "internal" - } - ], - "src": "1402:31:15" - }, - "returnParameters": { - "id": 3909, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3905, - "mutability": "mutable", - "name": "tickCumulatives", - "nodeType": "VariableDeclaration", - "scope": 3910, - "src": "1481:30:15", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_int56_$dyn_memory_ptr", - "typeString": "int56[]" - }, - "typeName": { - "baseType": { - "id": 3903, - "name": "int56", - "nodeType": "ElementaryTypeName", - "src": "1481:5:15", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - } - }, - "id": 3904, - "nodeType": "ArrayTypeName", - "src": "1481:7:15", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_int56_$dyn_storage_ptr", - "typeString": "int56[]" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3908, - "mutability": "mutable", - "name": "secondsPerLiquidityCumulativeX128s", - "nodeType": "VariableDeclaration", - "scope": 3910, - "src": "1513:51:15", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint160_$dyn_memory_ptr", - "typeString": "uint160[]" - }, - "typeName": { - "baseType": { - "id": 3906, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "1513:7:15", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "id": 3907, - "nodeType": "ArrayTypeName", - "src": "1513:9:15", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint160_$dyn_storage_ptr", - "typeString": "uint160[]" - } - }, - "visibility": "internal" - } - ], - "src": "1480:85:15" - }, - "scope": 3925, - "src": "1386:180:15", - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "documentation": { - "id": 3911, - "nodeType": "StructuredDocumentation", - "src": "1572:771:15", - "text": "@notice Returns a snapshot of the tick cumulative, seconds per liquidity and seconds inside a tick range\n @dev Snapshots must only be compared to other snapshots, taken over a period for which a position existed.\n I.e., snapshots cannot be compared if a position is not held for the entire period between when the first\n snapshot is taken and the second snapshot is taken.\n @param tickLower The lower tick of the range\n @param tickUpper The upper tick of the range\n @return tickCumulativeInside The snapshot of the tick accumulator for the range\n @return secondsPerLiquidityInsideX128 The snapshot of seconds per liquidity for the range\n @return secondsInside The snapshot of seconds per liquidity for the range" - }, - "functionSelector": "a38807f2", - "id": 3924, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "snapshotCumulativesInside", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 3916, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3913, - "mutability": "mutable", - "name": "tickLower", - "nodeType": "VariableDeclaration", - "scope": 3924, - "src": "2383:15:15", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 3912, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "2383:5:15", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3915, - "mutability": "mutable", - "name": "tickUpper", - "nodeType": "VariableDeclaration", - "scope": 3924, - "src": "2400:15:15", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 3914, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "2400:5:15", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - } - ], - "src": "2382:34:15" - }, - "returnParameters": { - "id": 3923, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3918, - "mutability": "mutable", - "name": "tickCumulativeInside", - "nodeType": "VariableDeclaration", - "scope": 3924, - "src": "2477:26:15", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - }, - "typeName": { - "id": 3917, - "name": "int56", - "nodeType": "ElementaryTypeName", - "src": "2477:5:15", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3920, - "mutability": "mutable", - "name": "secondsPerLiquidityInsideX128", - "nodeType": "VariableDeclaration", - "scope": 3924, - "src": "2517:37:15", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "typeName": { - "id": 3919, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "2517:7:15", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3922, - "mutability": "mutable", - "name": "secondsInside", - "nodeType": "VariableDeclaration", - "scope": 3924, - "src": "2568:20:15", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 3921, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "2568:6:15", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "visibility": "internal" - } - ], - "src": "2463:135:15" - }, - "scope": 3925, - "src": "2348:251:15", - "stateMutability": "view", - "virtual": false, - "visibility": "external" - } - ], - "scope": 3926, - "src": "293:2308:15" - } - ], - "src": "45:2557:15" - }, - "id": 15 - }, - "@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol": { - "ast": { - "absolutePath": "@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol", - "exportedSymbols": { - "IUniswapV3PoolEvents": [ - 4044 - ] - }, - "id": 4045, - "license": "GPL-2.0-or-later", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 3927, - "literals": [ - "solidity", - ">=", - "0.5", - ".0" - ], - "nodeType": "PragmaDirective", - "src": "45:24:16" - }, - { - "abstract": false, - "baseContracts": [], - "contractDependencies": [], - "contractKind": "interface", - "documentation": { - "id": 3928, - "nodeType": "StructuredDocumentation", - "src": "71:88:16", - "text": "@title Events emitted by a pool\n @notice Contains all events emitted by the pool" - }, - "fullyImplemented": true, - "id": 4044, - "linearizedBaseContracts": [ - 4044 - ], - "name": "IUniswapV3PoolEvents", - "nodeType": "ContractDefinition", - "nodes": [ - { - "anonymous": false, - "documentation": { - "id": 3929, - "nodeType": "StructuredDocumentation", - "src": "196:344:16", - "text": "@notice Emitted exactly once by a pool when #initialize is first called on the pool\n @dev Mint/Burn/Swap cannot be emitted by the pool before Initialize\n @param sqrtPriceX96 The initial sqrt price of the pool, as a Q64.96\n @param tick The initial tick of the pool, i.e. log base 1.0001 of the starting price of the pool" - }, - "id": 3935, - "name": "Initialize", - "nodeType": "EventDefinition", - "parameters": { - "id": 3934, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3931, - "indexed": false, - "mutability": "mutable", - "name": "sqrtPriceX96", - "nodeType": "VariableDeclaration", - "scope": 3935, - "src": "562:20:16", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "typeName": { - "id": 3930, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "562:7:16", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3933, - "indexed": false, - "mutability": "mutable", - "name": "tick", - "nodeType": "VariableDeclaration", - "scope": 3935, - "src": "584:10:16", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 3932, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "584:5:16", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - } - ], - "src": "561:34:16" - }, - "src": "545:51:16" - }, - { - "anonymous": false, - "documentation": { - "id": 3936, - "nodeType": "StructuredDocumentation", - "src": "602:551:16", - "text": "@notice Emitted when liquidity is minted for a given position\n @param sender The address that minted the liquidity\n @param owner The owner of the position and recipient of any minted liquidity\n @param tickLower The lower tick of the position\n @param tickUpper The upper tick of the position\n @param amount The amount of liquidity minted to the position range\n @param amount0 How much token0 was required for the minted liquidity\n @param amount1 How much token1 was required for the minted liquidity" - }, - "id": 3952, - "name": "Mint", - "nodeType": "EventDefinition", - "parameters": { - "id": 3951, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3938, - "indexed": false, - "mutability": "mutable", - "name": "sender", - "nodeType": "VariableDeclaration", - "scope": 3952, - "src": "1178:14:16", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 3937, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1178:7:16", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3940, - "indexed": true, - "mutability": "mutable", - "name": "owner", - "nodeType": "VariableDeclaration", - "scope": 3952, - "src": "1202:21:16", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 3939, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1202:7:16", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3942, - "indexed": true, - "mutability": "mutable", - "name": "tickLower", - "nodeType": "VariableDeclaration", - "scope": 3952, - "src": "1233:23:16", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 3941, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "1233:5:16", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3944, - "indexed": true, - "mutability": "mutable", - "name": "tickUpper", - "nodeType": "VariableDeclaration", - "scope": 3952, - "src": "1266:23:16", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 3943, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "1266:5:16", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3946, - "indexed": false, - "mutability": "mutable", - "name": "amount", - "nodeType": "VariableDeclaration", - "scope": 3952, - "src": "1299:14:16", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "typeName": { - "id": 3945, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "1299:7:16", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3948, - "indexed": false, - "mutability": "mutable", - "name": "amount0", - "nodeType": "VariableDeclaration", - "scope": 3952, - "src": "1323:15:16", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 3947, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1323:7:16", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3950, - "indexed": false, - "mutability": "mutable", - "name": "amount1", - "nodeType": "VariableDeclaration", - "scope": 3952, - "src": "1348:15:16", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 3949, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1348:7:16", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "1168:201:16" - }, - "src": "1158:212:16" - }, - { - "anonymous": false, - "documentation": { - "id": 3953, - "nodeType": "StructuredDocumentation", - "src": "1376:493:16", - "text": "@notice Emitted when fees are collected by the owner of a position\n @dev Collect events may be emitted with zero amount0 and amount1 when the caller chooses not to collect fees\n @param owner The owner of the position for which fees are collected\n @param tickLower The lower tick of the position\n @param tickUpper The upper tick of the position\n @param amount0 The amount of token0 fees collected\n @param amount1 The amount of token1 fees collected" - }, - "id": 3967, - "name": "Collect", - "nodeType": "EventDefinition", - "parameters": { - "id": 3966, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3955, - "indexed": true, - "mutability": "mutable", - "name": "owner", - "nodeType": "VariableDeclaration", - "scope": 3967, - "src": "1897:21:16", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 3954, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1897:7:16", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3957, - "indexed": false, - "mutability": "mutable", - "name": "recipient", - "nodeType": "VariableDeclaration", - "scope": 3967, - "src": "1928:17:16", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 3956, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1928:7:16", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3959, - "indexed": true, - "mutability": "mutable", - "name": "tickLower", - "nodeType": "VariableDeclaration", - "scope": 3967, - "src": "1955:23:16", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 3958, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "1955:5:16", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3961, - "indexed": true, - "mutability": "mutable", - "name": "tickUpper", - "nodeType": "VariableDeclaration", - "scope": 3967, - "src": "1988:23:16", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 3960, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "1988:5:16", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3963, - "indexed": false, - "mutability": "mutable", - "name": "amount0", - "nodeType": "VariableDeclaration", - "scope": 3967, - "src": "2021:15:16", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "typeName": { - "id": 3962, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "2021:7:16", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3965, - "indexed": false, - "mutability": "mutable", - "name": "amount1", - "nodeType": "VariableDeclaration", - "scope": 3967, - "src": "2046:15:16", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "typeName": { - "id": 3964, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "2046:7:16", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "visibility": "internal" - } - ], - "src": "1887:180:16" - }, - "src": "1874:194:16" - }, - { - "anonymous": false, - "documentation": { - "id": 3968, - "nodeType": "StructuredDocumentation", - "src": "2074:523:16", - "text": "@notice Emitted when a position's liquidity is removed\n @dev Does not withdraw any fees earned by the liquidity position, which must be withdrawn via #collect\n @param owner The owner of the position for which liquidity is removed\n @param tickLower The lower tick of the position\n @param tickUpper The upper tick of the position\n @param amount The amount of liquidity to remove\n @param amount0 The amount of token0 withdrawn\n @param amount1 The amount of token1 withdrawn" - }, - "id": 3982, - "name": "Burn", - "nodeType": "EventDefinition", - "parameters": { - "id": 3981, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3970, - "indexed": true, - "mutability": "mutable", - "name": "owner", - "nodeType": "VariableDeclaration", - "scope": 3982, - "src": "2622:21:16", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 3969, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2622:7:16", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3972, - "indexed": true, - "mutability": "mutable", - "name": "tickLower", - "nodeType": "VariableDeclaration", - "scope": 3982, - "src": "2653:23:16", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 3971, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "2653:5:16", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3974, - "indexed": true, - "mutability": "mutable", - "name": "tickUpper", - "nodeType": "VariableDeclaration", - "scope": 3982, - "src": "2686:23:16", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 3973, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "2686:5:16", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3976, - "indexed": false, - "mutability": "mutable", - "name": "amount", - "nodeType": "VariableDeclaration", - "scope": 3982, - "src": "2719:14:16", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "typeName": { - "id": 3975, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "2719:7:16", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3978, - "indexed": false, - "mutability": "mutable", - "name": "amount0", - "nodeType": "VariableDeclaration", - "scope": 3982, - "src": "2743:15:16", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 3977, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2743:7:16", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3980, - "indexed": false, - "mutability": "mutable", - "name": "amount1", - "nodeType": "VariableDeclaration", - "scope": 3982, - "src": "2768:15:16", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 3979, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2768:7:16", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "2612:177:16" - }, - "src": "2602:188:16" - }, - { - "anonymous": false, - "documentation": { - "id": 3983, - "nodeType": "StructuredDocumentation", - "src": "2796:600:16", - "text": "@notice Emitted by the pool for any swaps between token0 and token1\n @param sender The address that initiated the swap call, and that received the callback\n @param recipient The address that received the output of the swap\n @param amount0 The delta of the token0 balance of the pool\n @param amount1 The delta of the token1 balance of the pool\n @param sqrtPriceX96 The sqrt(price) of the pool after the swap, as a Q64.96\n @param liquidity The liquidity of the pool after the swap\n @param tick The log base 1.0001 of price of the pool after the swap" - }, - "id": 3999, - "name": "Swap", - "nodeType": "EventDefinition", - "parameters": { - "id": 3998, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 3985, - "indexed": true, - "mutability": "mutable", - "name": "sender", - "nodeType": "VariableDeclaration", - "scope": 3999, - "src": "3421:22:16", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 3984, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3421:7:16", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3987, - "indexed": true, - "mutability": "mutable", - "name": "recipient", - "nodeType": "VariableDeclaration", - "scope": 3999, - "src": "3453:25:16", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 3986, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3453:7:16", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3989, - "indexed": false, - "mutability": "mutable", - "name": "amount0", - "nodeType": "VariableDeclaration", - "scope": 3999, - "src": "3488:14:16", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "typeName": { - "id": 3988, - "name": "int256", - "nodeType": "ElementaryTypeName", - "src": "3488:6:16", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3991, - "indexed": false, - "mutability": "mutable", - "name": "amount1", - "nodeType": "VariableDeclaration", - "scope": 3999, - "src": "3512:14:16", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "typeName": { - "id": 3990, - "name": "int256", - "nodeType": "ElementaryTypeName", - "src": "3512:6:16", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3993, - "indexed": false, - "mutability": "mutable", - "name": "sqrtPriceX96", - "nodeType": "VariableDeclaration", - "scope": 3999, - "src": "3536:20:16", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "typeName": { - "id": 3992, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "3536:7:16", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3995, - "indexed": false, - "mutability": "mutable", - "name": "liquidity", - "nodeType": "VariableDeclaration", - "scope": 3999, - "src": "3566:17:16", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "typeName": { - "id": 3994, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "3566:7:16", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 3997, - "indexed": false, - "mutability": "mutable", - "name": "tick", - "nodeType": "VariableDeclaration", - "scope": 3999, - "src": "3593:10:16", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 3996, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "3593:5:16", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - } - ], - "src": "3411:198:16" - }, - "src": "3401:209:16" - }, - { - "anonymous": false, - "documentation": { - "id": 4000, - "nodeType": "StructuredDocumentation", - "src": "3616:562:16", - "text": "@notice Emitted by the pool for any flashes of token0/token1\n @param sender The address that initiated the swap call, and that received the callback\n @param recipient The address that received the tokens from flash\n @param amount0 The amount of token0 that was flashed\n @param amount1 The amount of token1 that was flashed\n @param paid0 The amount of token0 paid for the flash, which can exceed the amount0 plus the fee\n @param paid1 The amount of token1 paid for the flash, which can exceed the amount1 plus the fee" - }, - "id": 4014, - "name": "Flash", - "nodeType": "EventDefinition", - "parameters": { - "id": 4013, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 4002, - "indexed": true, - "mutability": "mutable", - "name": "sender", - "nodeType": "VariableDeclaration", - "scope": 4014, - "src": "4204:22:16", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 4001, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4204:7:16", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 4004, - "indexed": true, - "mutability": "mutable", - "name": "recipient", - "nodeType": "VariableDeclaration", - "scope": 4014, - "src": "4236:25:16", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 4003, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4236:7:16", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 4006, - "indexed": false, - "mutability": "mutable", - "name": "amount0", - "nodeType": "VariableDeclaration", - "scope": 4014, - "src": "4271:15:16", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 4005, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4271:7:16", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 4008, - "indexed": false, - "mutability": "mutable", - "name": "amount1", - "nodeType": "VariableDeclaration", - "scope": 4014, - "src": "4296:15:16", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 4007, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4296:7:16", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 4010, - "indexed": false, - "mutability": "mutable", - "name": "paid0", - "nodeType": "VariableDeclaration", - "scope": 4014, - "src": "4321:13:16", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 4009, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4321:7:16", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 4012, - "indexed": false, - "mutability": "mutable", - "name": "paid1", - "nodeType": "VariableDeclaration", - "scope": 4014, - "src": "4344:13:16", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 4011, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4344:7:16", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "4194:169:16" - }, - "src": "4183:181:16" - }, - { - "anonymous": false, - "documentation": { - "id": 4015, - "nodeType": "StructuredDocumentation", - "src": "4370:451:16", - "text": "@notice Emitted by the pool for increases to the number of observations that can be stored\n @dev observationCardinalityNext is not the observation cardinality until an observation is written at the index\n just before a mint/swap/burn.\n @param observationCardinalityNextOld The previous value of the next observation cardinality\n @param observationCardinalityNextNew The updated value of the next observation cardinality" - }, - "id": 4021, - "name": "IncreaseObservationCardinalityNext", - "nodeType": "EventDefinition", - "parameters": { - "id": 4020, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 4017, - "indexed": false, - "mutability": "mutable", - "name": "observationCardinalityNextOld", - "nodeType": "VariableDeclaration", - "scope": 4021, - "src": "4876:36:16", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - "typeName": { - "id": 4016, - "name": "uint16", - "nodeType": "ElementaryTypeName", - "src": "4876:6:16", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 4019, - "indexed": false, - "mutability": "mutable", - "name": "observationCardinalityNextNew", - "nodeType": "VariableDeclaration", - "scope": 4021, - "src": "4922:36:16", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - "typeName": { - "id": 4018, - "name": "uint16", - "nodeType": "ElementaryTypeName", - "src": "4922:6:16", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "visibility": "internal" - } - ], - "src": "4866:98:16" - }, - "src": "4826:139:16" - }, - { - "anonymous": false, - "documentation": { - "id": 4022, - "nodeType": "StructuredDocumentation", - "src": "4971:370:16", - "text": "@notice Emitted when the protocol fee is changed by the pool\n @param feeProtocol0Old The previous value of the token0 protocol fee\n @param feeProtocol1Old The previous value of the token1 protocol fee\n @param feeProtocol0New The updated value of the token0 protocol fee\n @param feeProtocol1New The updated value of the token1 protocol fee" - }, - "id": 4032, - "name": "SetFeeProtocol", - "nodeType": "EventDefinition", - "parameters": { - "id": 4031, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 4024, - "indexed": false, - "mutability": "mutable", - "name": "feeProtocol0Old", - "nodeType": "VariableDeclaration", - "scope": 4032, - "src": "5367:21:16", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 4023, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "5367:5:16", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 4026, - "indexed": false, - "mutability": "mutable", - "name": "feeProtocol1Old", - "nodeType": "VariableDeclaration", - "scope": 4032, - "src": "5390:21:16", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 4025, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "5390:5:16", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 4028, - "indexed": false, - "mutability": "mutable", - "name": "feeProtocol0New", - "nodeType": "VariableDeclaration", - "scope": 4032, - "src": "5413:21:16", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 4027, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "5413:5:16", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 4030, - "indexed": false, - "mutability": "mutable", - "name": "feeProtocol1New", - "nodeType": "VariableDeclaration", - "scope": 4032, - "src": "5436:21:16", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 4029, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "5436:5:16", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "visibility": "internal" - } - ], - "src": "5366:92:16" - }, - "src": "5346:113:16" - }, - { - "anonymous": false, - "documentation": { - "id": 4033, - "nodeType": "StructuredDocumentation", - "src": "5465:384:16", - "text": "@notice Emitted when the collected protocol fees are withdrawn by the factory owner\n @param sender The address that collects the protocol fees\n @param recipient The address that receives the collected protocol fees\n @param amount0 The amount of token0 protocol fees that is withdrawn\n @param amount0 The amount of token1 protocol fees that is withdrawn" - }, - "id": 4043, - "name": "CollectProtocol", - "nodeType": "EventDefinition", - "parameters": { - "id": 4042, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 4035, - "indexed": true, - "mutability": "mutable", - "name": "sender", - "nodeType": "VariableDeclaration", - "scope": 4043, - "src": "5876:22:16", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 4034, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "5876:7:16", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 4037, - "indexed": true, - "mutability": "mutable", - "name": "recipient", - "nodeType": "VariableDeclaration", - "scope": 4043, - "src": "5900:25:16", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 4036, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "5900:7:16", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 4039, - "indexed": false, - "mutability": "mutable", - "name": "amount0", - "nodeType": "VariableDeclaration", - "scope": 4043, - "src": "5927:15:16", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "typeName": { - "id": 4038, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "5927:7:16", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 4041, - "indexed": false, - "mutability": "mutable", - "name": "amount1", - "nodeType": "VariableDeclaration", - "scope": 4043, - "src": "5944:15:16", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "typeName": { - "id": 4040, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "5944:7:16", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "visibility": "internal" - } - ], - "src": "5875:85:16" - }, - "src": "5854:107:16" - } - ], - "scope": 4045, - "src": "159:5804:16" - } - ], - "src": "45:5919:16" - }, - "id": 16 - }, - "@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol": { - "ast": { - "absolutePath": "@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol", - "exportedSymbols": { - "IUniswapV3PoolImmutables": [ - 4084 - ] - }, - "id": 4085, - "license": "GPL-2.0-or-later", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 4046, - "literals": [ - "solidity", - ">=", - "0.5", - ".0" - ], - "nodeType": "PragmaDirective", - "src": "45:24:17" - }, - { - "abstract": false, - "baseContracts": [], - "contractDependencies": [], - "contractKind": "interface", - "documentation": { - "id": 4047, - "nodeType": "StructuredDocumentation", - "src": "71:153:17", - "text": "@title Pool state that never changes\n @notice These parameters are fixed for a pool forever, i.e., the methods will always return the same values" - }, - "fullyImplemented": false, - "id": 4084, - "linearizedBaseContracts": [ - 4084 - ], - "name": "IUniswapV3PoolImmutables", - "nodeType": "ContractDefinition", - "nodes": [ - { - "documentation": { - "id": 4048, - "nodeType": "StructuredDocumentation", - "src": "265:138:17", - "text": "@notice The contract that deployed the pool, which must adhere to the IUniswapV3Factory interface\n @return The contract address" - }, - "functionSelector": "c45a0155", - "id": 4053, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "factory", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 4049, - "nodeType": "ParameterList", - "parameters": [], - "src": "424:2:17" - }, - "returnParameters": { - "id": 4052, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 4051, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 4053, - "src": "450:7:17", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 4050, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "450:7:17", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "449:9:17" - }, - "scope": 4084, - "src": "408:51:17", - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "documentation": { - "id": 4054, - "nodeType": "StructuredDocumentation", - "src": "465:113:17", - "text": "@notice The first of the two tokens of the pool, sorted by address\n @return The token contract address" - }, - "functionSelector": "0dfe1681", - "id": 4059, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "token0", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 4055, - "nodeType": "ParameterList", - "parameters": [], - "src": "598:2:17" - }, - "returnParameters": { - "id": 4058, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 4057, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 4059, - "src": "624:7:17", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 4056, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "624:7:17", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "623:9:17" - }, - "scope": 4084, - "src": "583:50:17", - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "documentation": { - "id": 4060, - "nodeType": "StructuredDocumentation", - "src": "639:114:17", - "text": "@notice The second of the two tokens of the pool, sorted by address\n @return The token contract address" - }, - "functionSelector": "d21220a7", - "id": 4065, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "token1", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 4061, - "nodeType": "ParameterList", - "parameters": [], - "src": "773:2:17" - }, - "returnParameters": { - "id": 4064, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 4063, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 4065, - "src": "799:7:17", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 4062, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "799:7:17", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "798:9:17" - }, - "scope": 4084, - "src": "758:50:17", - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "documentation": { - "id": 4066, - "nodeType": "StructuredDocumentation", - "src": "814:84:17", - "text": "@notice The pool's fee in hundredths of a bip, i.e. 1e-6\n @return The fee" - }, - "functionSelector": "ddca3f43", - "id": 4071, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "fee", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 4067, - "nodeType": "ParameterList", - "parameters": [], - "src": "915:2:17" - }, - "returnParameters": { - "id": 4070, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 4069, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 4071, - "src": "941:6:17", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - }, - "typeName": { - "id": 4068, - "name": "uint24", - "nodeType": "ElementaryTypeName", - "src": "941:6:17", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - "visibility": "internal" - } - ], - "src": "940:8:17" - }, - "scope": 4084, - "src": "903:46:17", - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "documentation": { - "id": 4072, - "nodeType": "StructuredDocumentation", - "src": "955:358:17", - "text": "@notice The pool tick spacing\n @dev Ticks can only be used at multiples of this value, minimum of 1 and always positive\n e.g.: a tickSpacing of 3 means ticks can be initialized every 3rd tick, i.e., ..., -6, -3, 0, 3, 6, ...\n This value is an int24 to avoid casting even though it is always positive.\n @return The tick spacing" - }, - "functionSelector": "d0c93a7c", - "id": 4077, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "tickSpacing", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 4073, - "nodeType": "ParameterList", - "parameters": [], - "src": "1338:2:17" - }, - "returnParameters": { - "id": 4076, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 4075, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 4077, - "src": "1364:5:17", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 4074, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "1364:5:17", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - } - ], - "src": "1363:7:17" - }, - "scope": 4084, - "src": "1318:53:17", - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "documentation": { - "id": 4078, - "nodeType": "StructuredDocumentation", - "src": "1377:363:17", - "text": "@notice The maximum amount of position liquidity that can use any tick in the range\n @dev This parameter is enforced per tick to prevent liquidity from overflowing a uint128 at any point, and\n also prevents out-of-range liquidity from being used to prevent adding in-range liquidity to a pool\n @return The max amount of liquidity per tick" - }, - "functionSelector": "70cf754a", - "id": 4083, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "maxLiquidityPerTick", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 4079, - "nodeType": "ParameterList", - "parameters": [], - "src": "1773:2:17" - }, - "returnParameters": { - "id": 4082, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 4081, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 4083, - "src": "1799:7:17", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "typeName": { - "id": 4080, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "1799:7:17", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "visibility": "internal" - } - ], - "src": "1798:9:17" - }, - "scope": 4084, - "src": "1745:63:17", - "stateMutability": "view", - "virtual": false, - "visibility": "external" - } - ], - "scope": 4085, - "src": "224:1586:17" - } - ], - "src": "45:1766:17" - }, - "id": 17 - }, - "@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol": { - "ast": { - "absolutePath": "@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol", - "exportedSymbols": { - "IUniswapV3PoolOwnerActions": [ - 4110 - ] - }, - "id": 4111, - "license": "GPL-2.0-or-later", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 4086, - "literals": [ - "solidity", - ">=", - "0.5", - ".0" - ], - "nodeType": "PragmaDirective", - "src": "45:24:18" - }, - { - "abstract": false, - "baseContracts": [], - "contractDependencies": [], - "contractKind": "interface", - "documentation": { - "id": 4087, - "nodeType": "StructuredDocumentation", - "src": "71:116:18", - "text": "@title Permissioned pool actions\n @notice Contains pool methods that may only be called by the factory owner" - }, - "fullyImplemented": false, - "id": 4110, - "linearizedBaseContracts": [ - 4110 - ], - "name": "IUniswapV3PoolOwnerActions", - "nodeType": "ContractDefinition", - "nodes": [ - { - "documentation": { - "id": 4088, - "nodeType": "StructuredDocumentation", - "src": "230:205:18", - "text": "@notice Set the denominator of the protocol's % share of the fees\n @param feeProtocol0 new protocol fee for token0 of the pool\n @param feeProtocol1 new protocol fee for token1 of the pool" - }, - "functionSelector": "8206a4d1", - "id": 4095, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "setFeeProtocol", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 4093, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 4090, - "mutability": "mutable", - "name": "feeProtocol0", - "nodeType": "VariableDeclaration", - "scope": 4095, - "src": "464:18:18", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 4089, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "464:5:18", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 4092, - "mutability": "mutable", - "name": "feeProtocol1", - "nodeType": "VariableDeclaration", - "scope": 4095, - "src": "484:18:18", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 4091, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "484:5:18", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "visibility": "internal" - } - ], - "src": "463:40:18" - }, - "returnParameters": { - "id": 4094, - "nodeType": "ParameterList", - "parameters": [], - "src": "512:0:18" - }, - "scope": 4110, - "src": "440:73:18", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "documentation": { - "id": 4096, - "nodeType": "StructuredDocumentation", - "src": "519:483:18", - "text": "@notice Collect the protocol fee accrued to the pool\n @param recipient The address to which collected protocol fees should be sent\n @param amount0Requested The maximum amount of token0 to send, can be 0 to collect fees in only token1\n @param amount1Requested The maximum amount of token1 to send, can be 0 to collect fees in only token0\n @return amount0 The protocol fee collected in token0\n @return amount1 The protocol fee collected in token1" - }, - "functionSelector": "85b66729", - "id": 4109, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "collectProtocol", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 4103, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 4098, - "mutability": "mutable", - "name": "recipient", - "nodeType": "VariableDeclaration", - "scope": 4109, - "src": "1041:17:18", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 4097, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1041:7:18", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 4100, - "mutability": "mutable", - "name": "amount0Requested", - "nodeType": "VariableDeclaration", - "scope": 4109, - "src": "1068:24:18", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "typeName": { - "id": 4099, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "1068:7:18", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 4102, - "mutability": "mutable", - "name": "amount1Requested", - "nodeType": "VariableDeclaration", - "scope": 4109, - "src": "1102:24:18", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "typeName": { - "id": 4101, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "1102:7:18", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "visibility": "internal" - } - ], - "src": "1031:101:18" - }, - "returnParameters": { - "id": 4108, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 4105, - "mutability": "mutable", - "name": "amount0", - "nodeType": "VariableDeclaration", - "scope": 4109, - "src": "1151:15:18", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "typeName": { - "id": 4104, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "1151:7:18", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 4107, - "mutability": "mutable", - "name": "amount1", - "nodeType": "VariableDeclaration", - "scope": 4109, - "src": "1168:15:18", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "typeName": { - "id": 4106, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "1168:7:18", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "visibility": "internal" - } - ], - "src": "1150:34:18" - }, - "scope": 4110, - "src": "1007:178:18", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - } - ], - "scope": 4111, - "src": "187:1000:18" - } - ], - "src": "45:1143:18" - }, - "id": 18 - }, - "@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol": { - "ast": { - "absolutePath": "@uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol", - "exportedSymbols": { - "IUniswapV3PoolState": [ - 4218 - ] - }, - "id": 4219, - "license": "GPL-2.0-or-later", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 4112, - "literals": [ - "solidity", - ">=", - "0.5", - ".0" - ], - "nodeType": "PragmaDirective", - "src": "45:24:19" - }, - { - "abstract": false, - "baseContracts": [], - "contractDependencies": [], - "contractKind": "interface", - "documentation": { - "id": 4113, - "nodeType": "StructuredDocumentation", - "src": "71:169:19", - "text": "@title Pool state that can change\n @notice These methods compose the pool's state, and can change with any frequency including multiple times\n per transaction" - }, - "fullyImplemented": false, - "id": 4218, - "linearizedBaseContracts": [ - 4218 - ], - "name": "IUniswapV3PoolState", - "nodeType": "ContractDefinition", - "nodes": [ - { - "documentation": { - "id": 4114, - "nodeType": "StructuredDocumentation", - "src": "276:1140:19", - "text": "@notice The 0th storage slot in the pool stores many values, and is exposed as a single method to save gas\n when accessed externally.\n @return sqrtPriceX96 The current price of the pool as a sqrt(token1/token0) Q64.96 value\n tick The current tick of the pool, i.e. according to the last tick transition that was run.\n This value may not always be equal to SqrtTickMath.getTickAtSqrtRatio(sqrtPriceX96) if the price is on a tick\n boundary.\n observationIndex The index of the last oracle observation that was written,\n observationCardinality The current maximum number of observations stored in the pool,\n observationCardinalityNext The next maximum number of observations, to be updated when the observation.\n feeProtocol The protocol fee for both tokens of the pool.\n Encoded as two 4 bit values, where the protocol fee of token1 is shifted 4 bits and the protocol fee of token0\n is the lower 4 bits. Used as the denominator of a fraction of the swap fee, e.g. 4 means 1/4th of the swap fee.\n unlocked Whether the pool is currently locked to reentrancy" - }, - "functionSelector": "3850c7bd", - "id": 4131, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "slot0", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 4115, - "nodeType": "ParameterList", - "parameters": [], - "src": "1435:2:19" - }, - "returnParameters": { - "id": 4130, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 4117, - "mutability": "mutable", - "name": "sqrtPriceX96", - "nodeType": "VariableDeclaration", - "scope": 4131, - "src": "1498:20:19", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "typeName": { - "id": 4116, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "1498:7:19", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 4119, - "mutability": "mutable", - "name": "tick", - "nodeType": "VariableDeclaration", - "scope": 4131, - "src": "1532:10:19", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 4118, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "1532:5:19", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 4121, - "mutability": "mutable", - "name": "observationIndex", - "nodeType": "VariableDeclaration", - "scope": 4131, - "src": "1556:23:19", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - "typeName": { - "id": 4120, - "name": "uint16", - "nodeType": "ElementaryTypeName", - "src": "1556:6:19", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 4123, - "mutability": "mutable", - "name": "observationCardinality", - "nodeType": "VariableDeclaration", - "scope": 4131, - "src": "1593:29:19", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - "typeName": { - "id": 4122, - "name": "uint16", - "nodeType": "ElementaryTypeName", - "src": "1593:6:19", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 4125, - "mutability": "mutable", - "name": "observationCardinalityNext", - "nodeType": "VariableDeclaration", - "scope": 4131, - "src": "1636:33:19", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - "typeName": { - "id": 4124, - "name": "uint16", - "nodeType": "ElementaryTypeName", - "src": "1636:6:19", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 4127, - "mutability": "mutable", - "name": "feeProtocol", - "nodeType": "VariableDeclaration", - "scope": 4131, - "src": "1683:17:19", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 4126, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "1683:5:19", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 4129, - "mutability": "mutable", - "name": "unlocked", - "nodeType": "VariableDeclaration", - "scope": 4131, - "src": "1714:13:19", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 4128, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "1714:4:19", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "src": "1484:253:19" - }, - "scope": 4218, - "src": "1421:317:19", - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "documentation": { - "id": 4132, - "nodeType": "StructuredDocumentation", - "src": "1744:168:19", - "text": "@notice The fee growth as a Q128.128 fees of token0 collected per unit of liquidity for the entire life of the pool\n @dev This value can overflow the uint256" - }, - "functionSelector": "f3058399", - "id": 4137, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "feeGrowthGlobal0X128", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 4133, - "nodeType": "ParameterList", - "parameters": [], - "src": "1946:2:19" - }, - "returnParameters": { - "id": 4136, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 4135, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 4137, - "src": "1972:7:19", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 4134, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1972:7:19", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "1971:9:19" - }, - "scope": 4218, - "src": "1917:64:19", - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "documentation": { - "id": 4138, - "nodeType": "StructuredDocumentation", - "src": "1987:168:19", - "text": "@notice The fee growth as a Q128.128 fees of token1 collected per unit of liquidity for the entire life of the pool\n @dev This value can overflow the uint256" - }, - "functionSelector": "46141319", - "id": 4143, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "feeGrowthGlobal1X128", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 4139, - "nodeType": "ParameterList", - "parameters": [], - "src": "2189:2:19" - }, - "returnParameters": { - "id": 4142, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 4141, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 4143, - "src": "2215:7:19", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 4140, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2215:7:19", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "2214:9:19" - }, - "scope": 4218, - "src": "2160:64:19", - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "documentation": { - "id": 4144, - "nodeType": "StructuredDocumentation", - "src": "2230:147:19", - "text": "@notice The amounts of token0 and token1 that are owed to the protocol\n @dev Protocol fees will never exceed uint128 max in either token" - }, - "functionSelector": "1ad8b03b", - "id": 4151, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "protocolFees", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 4145, - "nodeType": "ParameterList", - "parameters": [], - "src": "2403:2:19" - }, - "returnParameters": { - "id": 4150, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 4147, - "mutability": "mutable", - "name": "token0", - "nodeType": "VariableDeclaration", - "scope": 4151, - "src": "2429:14:19", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "typeName": { - "id": 4146, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "2429:7:19", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 4149, - "mutability": "mutable", - "name": "token1", - "nodeType": "VariableDeclaration", - "scope": 4151, - "src": "2445:14:19", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "typeName": { - "id": 4148, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "2445:7:19", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "visibility": "internal" - } - ], - "src": "2428:32:19" - }, - "scope": 4218, - "src": "2382:79:19", - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "documentation": { - "id": 4152, - "nodeType": "StructuredDocumentation", - "src": "2467:150:19", - "text": "@notice The currently in range liquidity available to the pool\n @dev This value has no relationship to the total liquidity across all ticks" - }, - "functionSelector": "1a686502", - "id": 4157, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "liquidity", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 4153, - "nodeType": "ParameterList", - "parameters": [], - "src": "2640:2:19" - }, - "returnParameters": { - "id": 4156, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 4155, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 4157, - "src": "2666:7:19", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "typeName": { - "id": 4154, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "2666:7:19", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "visibility": "internal" - } - ], - "src": "2665:9:19" - }, - "scope": 4218, - "src": "2622:53:19", - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "documentation": { - "id": 4158, - "nodeType": "StructuredDocumentation", - "src": "2681:1244:19", - "text": "@notice Look up information about a specific tick in the pool\n @param tick The tick to look up\n @return liquidityGross the total amount of position liquidity that uses the pool either as tick lower or\n tick upper,\n liquidityNet how much liquidity changes when the pool price crosses the tick,\n feeGrowthOutside0X128 the fee growth on the other side of the tick from the current tick in token0,\n feeGrowthOutside1X128 the fee growth on the other side of the tick from the current tick in token1,\n tickCumulativeOutside the cumulative tick value on the other side of the tick from the current tick\n secondsPerLiquidityOutsideX128 the seconds spent per liquidity on the other side of the tick from the current tick,\n secondsOutside the seconds spent on the other side of the tick from the current tick,\n initialized Set to true if the tick is initialized, i.e. liquidityGross is greater than 0, otherwise equal to false.\n Outside values can only be used if the tick is initialized, i.e. if liquidityGross is greater than 0.\n In addition, these values are only relative and must be used only in comparison to previous snapshots for\n a specific position." - }, - "functionSelector": "f30dba93", - "id": 4179, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "ticks", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 4161, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 4160, - "mutability": "mutable", - "name": "tick", - "nodeType": "VariableDeclaration", - "scope": 4179, - "src": "3945:10:19", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 4159, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "3945:5:19", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - } - ], - "src": "3944:12:19" - }, - "returnParameters": { - "id": 4178, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 4163, - "mutability": "mutable", - "name": "liquidityGross", - "nodeType": "VariableDeclaration", - "scope": 4179, - "src": "4017:22:19", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "typeName": { - "id": 4162, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "4017:7:19", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 4165, - "mutability": "mutable", - "name": "liquidityNet", - "nodeType": "VariableDeclaration", - "scope": 4179, - "src": "4053:19:19", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - }, - "typeName": { - "id": 4164, - "name": "int128", - "nodeType": "ElementaryTypeName", - "src": "4053:6:19", - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 4167, - "mutability": "mutable", - "name": "feeGrowthOutside0X128", - "nodeType": "VariableDeclaration", - "scope": 4179, - "src": "4086:29:19", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 4166, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4086:7:19", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 4169, - "mutability": "mutable", - "name": "feeGrowthOutside1X128", - "nodeType": "VariableDeclaration", - "scope": 4179, - "src": "4129:29:19", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 4168, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4129:7:19", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 4171, - "mutability": "mutable", - "name": "tickCumulativeOutside", - "nodeType": "VariableDeclaration", - "scope": 4179, - "src": "4172:27:19", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - }, - "typeName": { - "id": 4170, - "name": "int56", - "nodeType": "ElementaryTypeName", - "src": "4172:5:19", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 4173, - "mutability": "mutable", - "name": "secondsPerLiquidityOutsideX128", - "nodeType": "VariableDeclaration", - "scope": 4179, - "src": "4213:38:19", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "typeName": { - "id": 4172, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "4213:7:19", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 4175, - "mutability": "mutable", - "name": "secondsOutside", - "nodeType": "VariableDeclaration", - "scope": 4179, - "src": "4265:21:19", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 4174, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "4265:6:19", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 4177, - "mutability": "mutable", - "name": "initialized", - "nodeType": "VariableDeclaration", - "scope": 4179, - "src": "4300:16:19", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 4176, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "4300:4:19", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "src": "4003:323:19" - }, - "scope": 4218, - "src": "3930:397:19", - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "documentation": { - "id": 4180, - "nodeType": "StructuredDocumentation", - "src": "4333:99:19", - "text": "@notice Returns 256 packed tick initialized boolean values. See TickBitmap for more information" - }, - "functionSelector": "5339c296", - "id": 4187, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "tickBitmap", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 4183, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 4182, - "mutability": "mutable", - "name": "wordPosition", - "nodeType": "VariableDeclaration", - "scope": 4187, - "src": "4457:18:19", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int16", - "typeString": "int16" - }, - "typeName": { - "id": 4181, - "name": "int16", - "nodeType": "ElementaryTypeName", - "src": "4457:5:19", - "typeDescriptions": { - "typeIdentifier": "t_int16", - "typeString": "int16" - } - }, - "visibility": "internal" - } - ], - "src": "4456:20:19" - }, - "returnParameters": { - "id": 4186, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 4185, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 4187, - "src": "4500:7:19", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 4184, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4500:7:19", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "4499:9:19" - }, - "scope": 4218, - "src": "4437:72:19", - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "documentation": { - "id": 4188, - "nodeType": "StructuredDocumentation", - "src": "4515:700:19", - "text": "@notice Returns the information about a position by the position's key\n @param key The position's key is a hash of a preimage composed by the owner, tickLower and tickUpper\n @return _liquidity The amount of liquidity in the position,\n Returns feeGrowthInside0LastX128 fee growth of token0 inside the tick range as of the last mint/burn/poke,\n Returns feeGrowthInside1LastX128 fee growth of token1 inside the tick range as of the last mint/burn/poke,\n Returns tokensOwed0 the computed amount of token0 owed to the position as of the last mint/burn/poke,\n Returns tokensOwed1 the computed amount of token1 owed to the position as of the last mint/burn/poke" - }, - "functionSelector": "514ea4bf", - "id": 4203, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "positions", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 4191, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 4190, - "mutability": "mutable", - "name": "key", - "nodeType": "VariableDeclaration", - "scope": 4203, - "src": "5239:11:19", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 4189, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "5239:7:19", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "visibility": "internal" - } - ], - "src": "5238:13:19" - }, - "returnParameters": { - "id": 4202, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 4193, - "mutability": "mutable", - "name": "_liquidity", - "nodeType": "VariableDeclaration", - "scope": 4203, - "src": "5312:18:19", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "typeName": { - "id": 4192, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "5312:7:19", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 4195, - "mutability": "mutable", - "name": "feeGrowthInside0LastX128", - "nodeType": "VariableDeclaration", - "scope": 4203, - "src": "5344:32:19", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 4194, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5344:7:19", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 4197, - "mutability": "mutable", - "name": "feeGrowthInside1LastX128", - "nodeType": "VariableDeclaration", - "scope": 4203, - "src": "5390:32:19", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 4196, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5390:7:19", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 4199, - "mutability": "mutable", - "name": "tokensOwed0", - "nodeType": "VariableDeclaration", - "scope": 4203, - "src": "5436:19:19", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "typeName": { - "id": 4198, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "5436:7:19", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 4201, - "mutability": "mutable", - "name": "tokensOwed1", - "nodeType": "VariableDeclaration", - "scope": 4203, - "src": "5469:19:19", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "typeName": { - "id": 4200, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "5469:7:19", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "visibility": "internal" - } - ], - "src": "5298:200:19" - }, - "scope": 4218, - "src": "5220:279:19", - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "documentation": { - "id": 4204, - "nodeType": "StructuredDocumentation", - "src": "5505:749:19", - "text": "@notice Returns data about a specific observation index\n @param index The element of the observations array to fetch\n @dev You most likely want to use #observe() instead of this method to get an observation as of some amount of time\n ago, rather than at a specific index in the array.\n @return blockTimestamp The timestamp of the observation,\n Returns tickCumulative the tick multiplied by seconds elapsed for the life of the pool as of the observation timestamp,\n Returns secondsPerLiquidityCumulativeX128 the seconds per in range liquidity for the life of the pool as of the observation timestamp,\n Returns initialized whether the observation has been initialized and the values are safe to use" - }, - "functionSelector": "252c09d7", - "id": 4217, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "observations", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 4207, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 4206, - "mutability": "mutable", - "name": "index", - "nodeType": "VariableDeclaration", - "scope": 4217, - "src": "6281:13:19", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 4205, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6281:7:19", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "6280:15:19" - }, - "returnParameters": { - "id": 4216, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 4209, - "mutability": "mutable", - "name": "blockTimestamp", - "nodeType": "VariableDeclaration", - "scope": 4217, - "src": "6356:21:19", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 4208, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "6356:6:19", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 4211, - "mutability": "mutable", - "name": "tickCumulative", - "nodeType": "VariableDeclaration", - "scope": 4217, - "src": "6391:20:19", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - }, - "typeName": { - "id": 4210, - "name": "int56", - "nodeType": "ElementaryTypeName", - "src": "6391:5:19", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 4213, - "mutability": "mutable", - "name": "secondsPerLiquidityCumulativeX128", - "nodeType": "VariableDeclaration", - "scope": 4217, - "src": "6425:41:19", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "typeName": { - "id": 4212, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "6425:7:19", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 4215, - "mutability": "mutable", - "name": "initialized", - "nodeType": "VariableDeclaration", - "scope": 4217, - "src": "6480:16:19", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 4214, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "6480:4:19", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "src": "6342:164:19" - }, - "scope": 4218, - "src": "6259:248:19", - "stateMutability": "view", - "virtual": false, - "visibility": "external" - } - ], - "scope": 4219, - "src": "240:6269:19" - } - ], - "src": "45:6465:19" - }, - "id": 19 - }, - "@uniswap/v3-core/contracts/libraries/BitMath.sol": { - "ast": { - "absolutePath": "@uniswap/v3-core/contracts/libraries/BitMath.sol", - "exportedSymbols": { - "BitMath": [ - 4497 - ] - }, - "id": 4498, - "license": "GPL-2.0-or-later", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 4220, - "literals": [ - "solidity", - ">=", - "0.5", - ".0" - ], - "nodeType": "PragmaDirective", - "src": "45:24:20" - }, - { - "abstract": false, - "baseContracts": [], - "contractDependencies": [], - "contractKind": "library", - "documentation": { - "id": 4221, - "nodeType": "StructuredDocumentation", - "src": "71:116:20", - "text": "@title BitMath\n @dev This library provides functionality for computing bit properties of an unsigned integer" - }, - "fullyImplemented": true, - "id": 4497, - "linearizedBaseContracts": [ - 4497 - ], - "name": "BitMath", - "nodeType": "ContractDefinition", - "nodes": [ - { - "body": { - "id": 4334, - "nodeType": "Block", - "src": "742:660:20", - "statements": [ - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 4232, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 4230, - "name": "x", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4224, - "src": "760:1:20", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 4231, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "764:1:20", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "760:5:20", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 4229, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "752:7:20", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 4233, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "752:14:20", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 4234, - "nodeType": "ExpressionStatement", - "src": "752:14:20" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 4237, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 4235, - "name": "x", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4224, - "src": "781:1:20", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "hexValue": "3078313030303030303030303030303030303030303030303030303030303030303030", - "id": 4236, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "786:35:20", - "typeDescriptions": { - "typeIdentifier": "t_rational_340282366920938463463374607431768211456_by_1", - "typeString": "int_const 3402...(31 digits omitted)...1456" - }, - "value": "0x100000000000000000000000000000000" - }, - "src": "781:40:20", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 4247, - "nodeType": "IfStatement", - "src": "777:102:20", - "trueBody": { - "id": 4246, - "nodeType": "Block", - "src": "823:56:20", - "statements": [ - { - "expression": { - "id": 4240, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 4238, - "name": "x", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4224, - "src": "837:1:20", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": ">>=", - "rightHandSide": { - "hexValue": "313238", - "id": 4239, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "843:3:20", - "typeDescriptions": { - "typeIdentifier": "t_rational_128_by_1", - "typeString": "int_const 128" - }, - "value": "128" - }, - "src": "837:9:20", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 4241, - "nodeType": "ExpressionStatement", - "src": "837:9:20" - }, - { - "expression": { - "id": 4244, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 4242, - "name": "r", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4227, - "src": "860:1:20", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "hexValue": "313238", - "id": 4243, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "865:3:20", - "typeDescriptions": { - "typeIdentifier": "t_rational_128_by_1", - "typeString": "int_const 128" - }, - "value": "128" - }, - "src": "860:8:20", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 4245, - "nodeType": "ExpressionStatement", - "src": "860:8:20" - } - ] - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 4250, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 4248, - "name": "x", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4224, - "src": "892:1:20", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "hexValue": "30783130303030303030303030303030303030", - "id": 4249, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "897:19:20", - "typeDescriptions": { - "typeIdentifier": "t_rational_18446744073709551616_by_1", - "typeString": "int_const 18446744073709551616" - }, - "value": "0x10000000000000000" - }, - "src": "892:24:20", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 4260, - "nodeType": "IfStatement", - "src": "888:84:20", - "trueBody": { - "id": 4259, - "nodeType": "Block", - "src": "918:54:20", - "statements": [ - { - "expression": { - "id": 4253, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 4251, - "name": "x", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4224, - "src": "932:1:20", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": ">>=", - "rightHandSide": { - "hexValue": "3634", - "id": 4252, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "938:2:20", - "typeDescriptions": { - "typeIdentifier": "t_rational_64_by_1", - "typeString": "int_const 64" - }, - "value": "64" - }, - "src": "932:8:20", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 4254, - "nodeType": "ExpressionStatement", - "src": "932:8:20" - }, - { - "expression": { - "id": 4257, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 4255, - "name": "r", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4227, - "src": "954:1:20", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "hexValue": "3634", - "id": 4256, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "959:2:20", - "typeDescriptions": { - "typeIdentifier": "t_rational_64_by_1", - "typeString": "int_const 64" - }, - "value": "64" - }, - "src": "954:7:20", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 4258, - "nodeType": "ExpressionStatement", - "src": "954:7:20" - } - ] - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 4263, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 4261, - "name": "x", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4224, - "src": "985:1:20", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "hexValue": "3078313030303030303030", - "id": 4262, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "990:11:20", - "typeDescriptions": { - "typeIdentifier": "t_rational_4294967296_by_1", - "typeString": "int_const 4294967296" - }, - "value": "0x100000000" - }, - "src": "985:16:20", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 4273, - "nodeType": "IfStatement", - "src": "981:76:20", - "trueBody": { - "id": 4272, - "nodeType": "Block", - "src": "1003:54:20", - "statements": [ - { - "expression": { - "id": 4266, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 4264, - "name": "x", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4224, - "src": "1017:1:20", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": ">>=", - "rightHandSide": { - "hexValue": "3332", - "id": 4265, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1023:2:20", - "typeDescriptions": { - "typeIdentifier": "t_rational_32_by_1", - "typeString": "int_const 32" - }, - "value": "32" - }, - "src": "1017:8:20", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 4267, - "nodeType": "ExpressionStatement", - "src": "1017:8:20" - }, - { - "expression": { - "id": 4270, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 4268, - "name": "r", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4227, - "src": "1039:1:20", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "hexValue": "3332", - "id": 4269, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1044:2:20", - "typeDescriptions": { - "typeIdentifier": "t_rational_32_by_1", - "typeString": "int_const 32" - }, - "value": "32" - }, - "src": "1039:7:20", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 4271, - "nodeType": "ExpressionStatement", - "src": "1039:7:20" - } - ] - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 4276, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 4274, - "name": "x", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4224, - "src": "1070:1:20", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "hexValue": "30783130303030", - "id": 4275, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1075:7:20", - "typeDescriptions": { - "typeIdentifier": "t_rational_65536_by_1", - "typeString": "int_const 65536" - }, - "value": "0x10000" - }, - "src": "1070:12:20", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 4286, - "nodeType": "IfStatement", - "src": "1066:72:20", - "trueBody": { - "id": 4285, - "nodeType": "Block", - "src": "1084:54:20", - "statements": [ - { - "expression": { - "id": 4279, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 4277, - "name": "x", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4224, - "src": "1098:1:20", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": ">>=", - "rightHandSide": { - "hexValue": "3136", - "id": 4278, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1104:2:20", - "typeDescriptions": { - "typeIdentifier": "t_rational_16_by_1", - "typeString": "int_const 16" - }, - "value": "16" - }, - "src": "1098:8:20", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 4280, - "nodeType": "ExpressionStatement", - "src": "1098:8:20" - }, - { - "expression": { - "id": 4283, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 4281, - "name": "r", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4227, - "src": "1120:1:20", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "hexValue": "3136", - "id": 4282, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1125:2:20", - "typeDescriptions": { - "typeIdentifier": "t_rational_16_by_1", - "typeString": "int_const 16" - }, - "value": "16" - }, - "src": "1120:7:20", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 4284, - "nodeType": "ExpressionStatement", - "src": "1120:7:20" - } - ] - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 4289, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 4287, - "name": "x", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4224, - "src": "1151:1:20", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "hexValue": "3078313030", - "id": 4288, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1156:5:20", - "typeDescriptions": { - "typeIdentifier": "t_rational_256_by_1", - "typeString": "int_const 256" - }, - "value": "0x100" - }, - "src": "1151:10:20", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 4299, - "nodeType": "IfStatement", - "src": "1147:68:20", - "trueBody": { - "id": 4298, - "nodeType": "Block", - "src": "1163:52:20", - "statements": [ - { - "expression": { - "id": 4292, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 4290, - "name": "x", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4224, - "src": "1177:1:20", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": ">>=", - "rightHandSide": { - "hexValue": "38", - "id": 4291, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1183:1:20", - "typeDescriptions": { - "typeIdentifier": "t_rational_8_by_1", - "typeString": "int_const 8" - }, - "value": "8" - }, - "src": "1177:7:20", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 4293, - "nodeType": "ExpressionStatement", - "src": "1177:7:20" - }, - { - "expression": { - "id": 4296, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 4294, - "name": "r", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4227, - "src": "1198:1:20", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "hexValue": "38", - "id": 4295, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1203:1:20", - "typeDescriptions": { - "typeIdentifier": "t_rational_8_by_1", - "typeString": "int_const 8" - }, - "value": "8" - }, - "src": "1198:6:20", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 4297, - "nodeType": "ExpressionStatement", - "src": "1198:6:20" - } - ] - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 4302, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 4300, - "name": "x", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4224, - "src": "1228:1:20", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "hexValue": "30783130", - "id": 4301, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1233:4:20", - "typeDescriptions": { - "typeIdentifier": "t_rational_16_by_1", - "typeString": "int_const 16" - }, - "value": "0x10" - }, - "src": "1228:9:20", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 4312, - "nodeType": "IfStatement", - "src": "1224:67:20", - "trueBody": { - "id": 4311, - "nodeType": "Block", - "src": "1239:52:20", - "statements": [ - { - "expression": { - "id": 4305, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 4303, - "name": "x", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4224, - "src": "1253:1:20", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": ">>=", - "rightHandSide": { - "hexValue": "34", - "id": 4304, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1259:1:20", - "typeDescriptions": { - "typeIdentifier": "t_rational_4_by_1", - "typeString": "int_const 4" - }, - "value": "4" - }, - "src": "1253:7:20", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 4306, - "nodeType": "ExpressionStatement", - "src": "1253:7:20" - }, - { - "expression": { - "id": 4309, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 4307, - "name": "r", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4227, - "src": "1274:1:20", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "hexValue": "34", - "id": 4308, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1279:1:20", - "typeDescriptions": { - "typeIdentifier": "t_rational_4_by_1", - "typeString": "int_const 4" - }, - "value": "4" - }, - "src": "1274:6:20", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 4310, - "nodeType": "ExpressionStatement", - "src": "1274:6:20" - } - ] - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 4315, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 4313, - "name": "x", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4224, - "src": "1304:1:20", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "hexValue": "307834", - "id": 4314, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1309:3:20", - "typeDescriptions": { - "typeIdentifier": "t_rational_4_by_1", - "typeString": "int_const 4" - }, - "value": "0x4" - }, - "src": "1304:8:20", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 4325, - "nodeType": "IfStatement", - "src": "1300:66:20", - "trueBody": { - "id": 4324, - "nodeType": "Block", - "src": "1314:52:20", - "statements": [ - { - "expression": { - "id": 4318, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 4316, - "name": "x", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4224, - "src": "1328:1:20", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": ">>=", - "rightHandSide": { - "hexValue": "32", - "id": 4317, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1334:1:20", - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "src": "1328:7:20", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 4319, - "nodeType": "ExpressionStatement", - "src": "1328:7:20" - }, - { - "expression": { - "id": 4322, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 4320, - "name": "r", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4227, - "src": "1349:1:20", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "hexValue": "32", - "id": 4321, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1354:1:20", - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "src": "1349:6:20", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 4323, - "nodeType": "ExpressionStatement", - "src": "1349:6:20" - } - ] - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 4328, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 4326, - "name": "x", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4224, - "src": "1379:1:20", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "hexValue": "307832", - "id": 4327, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1384:3:20", - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "0x2" - }, - "src": "1379:8:20", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 4333, - "nodeType": "IfStatement", - "src": "1375:20:20", - "trueBody": { - "expression": { - "id": 4331, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 4329, - "name": "r", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4227, - "src": "1389:1:20", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "hexValue": "31", - "id": 4330, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1394:1:20", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "1389:6:20", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 4332, - "nodeType": "ExpressionStatement", - "src": "1389:6:20" - } - } - ] - }, - "documentation": { - "id": 4222, - "nodeType": "StructuredDocumentation", - "src": "209:457:20", - "text": "@notice Returns the index of the most significant bit of the number,\n where the least significant bit is at index 0 and the most significant bit is at index 255\n @dev The function satisfies the property:\n x >= 2**mostSignificantBit(x) and x < 2**(mostSignificantBit(x)+1)\n @param x the value for which to compute the most significant bit, must be greater than 0\n @return r the index of the most significant bit" - }, - "id": 4335, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "mostSignificantBit", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 4225, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 4224, - "mutability": "mutable", - "name": "x", - "nodeType": "VariableDeclaration", - "scope": 4335, - "src": "699:9:20", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 4223, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "699:7:20", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "698:11:20" - }, - "returnParameters": { - "id": 4228, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 4227, - "mutability": "mutable", - "name": "r", - "nodeType": "VariableDeclaration", - "scope": 4335, - "src": "733:7:20", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 4226, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "733:5:20", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "visibility": "internal" - } - ], - "src": "732:9:20" - }, - "scope": 4497, - "src": "671:731:20", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 4495, - "nodeType": "Block", - "src": "1965:822:20", - "statements": [ - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 4346, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 4344, - "name": "x", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4338, - "src": "1983:1:20", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 4345, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1987:1:20", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1983:5:20", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 4343, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "1975:7:20", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 4347, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1975:14:20", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 4348, - "nodeType": "ExpressionStatement", - "src": "1975:14:20" - }, - { - "expression": { - "id": 4351, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 4349, - "name": "r", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4341, - "src": "2000:1:20", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "323535", - "id": 4350, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2004:3:20", - "typeDescriptions": { - "typeIdentifier": "t_rational_255_by_1", - "typeString": "int_const 255" - }, - "value": "255" - }, - "src": "2000:7:20", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 4352, - "nodeType": "ExpressionStatement", - "src": "2000:7:20" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 4361, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 4359, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 4353, - "name": "x", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4338, - "src": "2021:1:20", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "&", - "rightExpression": { - "expression": { - "arguments": [ - { - "id": 4356, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2030:7:20", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint128_$", - "typeString": "type(uint128)" - }, - "typeName": { - "id": 4355, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "2030:7:20", - "typeDescriptions": {} - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_type$_t_uint128_$", - "typeString": "type(uint128)" - } - ], - "id": 4354, - "name": "type", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -27, - "src": "2025:4:20", - "typeDescriptions": { - "typeIdentifier": "t_function_metatype_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 4357, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2025:13:20", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_magic_meta_type_t_uint128", - "typeString": "type(uint128)" - } - }, - "id": 4358, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "max", - "nodeType": "MemberAccess", - "src": "2025:17:20", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "src": "2021:21:20", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 4360, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2045:1:20", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2021:25:20", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 4371, - "nodeType": "Block", - "src": "2087:34:20", - "statements": [ - { - "expression": { - "id": 4369, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 4367, - "name": "x", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4338, - "src": "2101:1:20", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": ">>=", - "rightHandSide": { - "hexValue": "313238", - "id": 4368, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2107:3:20", - "typeDescriptions": { - "typeIdentifier": "t_rational_128_by_1", - "typeString": "int_const 128" - }, - "value": "128" - }, - "src": "2101:9:20", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 4370, - "nodeType": "ExpressionStatement", - "src": "2101:9:20" - } - ] - }, - "id": 4372, - "nodeType": "IfStatement", - "src": "2017:104:20", - "trueBody": { - "id": 4366, - "nodeType": "Block", - "src": "2048:33:20", - "statements": [ - { - "expression": { - "id": 4364, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 4362, - "name": "r", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4341, - "src": "2062:1:20", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "Assignment", - "operator": "-=", - "rightHandSide": { - "hexValue": "313238", - "id": 4363, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2067:3:20", - "typeDescriptions": { - "typeIdentifier": "t_rational_128_by_1", - "typeString": "int_const 128" - }, - "value": "128" - }, - "src": "2062:8:20", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 4365, - "nodeType": "ExpressionStatement", - "src": "2062:8:20" - } - ] - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 4381, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 4379, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 4373, - "name": "x", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4338, - "src": "2134:1:20", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "&", - "rightExpression": { - "expression": { - "arguments": [ - { - "id": 4376, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2143:6:20", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint64_$", - "typeString": "type(uint64)" - }, - "typeName": { - "id": 4375, - "name": "uint64", - "nodeType": "ElementaryTypeName", - "src": "2143:6:20", - "typeDescriptions": {} - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_type$_t_uint64_$", - "typeString": "type(uint64)" - } - ], - "id": 4374, - "name": "type", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -27, - "src": "2138:4:20", - "typeDescriptions": { - "typeIdentifier": "t_function_metatype_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 4377, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2138:12:20", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_magic_meta_type_t_uint64", - "typeString": "type(uint64)" - } - }, - "id": 4378, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "max", - "nodeType": "MemberAccess", - "src": "2138:16:20", - "typeDescriptions": { - "typeIdentifier": "t_uint64", - "typeString": "uint64" - } - }, - "src": "2134:20:20", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 4380, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2157:1:20", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2134:24:20", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 4391, - "nodeType": "Block", - "src": "2198:33:20", - "statements": [ - { - "expression": { - "id": 4389, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 4387, - "name": "x", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4338, - "src": "2212:1:20", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": ">>=", - "rightHandSide": { - "hexValue": "3634", - "id": 4388, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2218:2:20", - "typeDescriptions": { - "typeIdentifier": "t_rational_64_by_1", - "typeString": "int_const 64" - }, - "value": "64" - }, - "src": "2212:8:20", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 4390, - "nodeType": "ExpressionStatement", - "src": "2212:8:20" - } - ] - }, - "id": 4392, - "nodeType": "IfStatement", - "src": "2130:101:20", - "trueBody": { - "id": 4386, - "nodeType": "Block", - "src": "2160:32:20", - "statements": [ - { - "expression": { - "id": 4384, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 4382, - "name": "r", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4341, - "src": "2174:1:20", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "Assignment", - "operator": "-=", - "rightHandSide": { - "hexValue": "3634", - "id": 4383, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2179:2:20", - "typeDescriptions": { - "typeIdentifier": "t_rational_64_by_1", - "typeString": "int_const 64" - }, - "value": "64" - }, - "src": "2174:7:20", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 4385, - "nodeType": "ExpressionStatement", - "src": "2174:7:20" - } - ] - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 4401, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 4399, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 4393, - "name": "x", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4338, - "src": "2244:1:20", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "&", - "rightExpression": { - "expression": { - "arguments": [ - { - "id": 4396, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2253:6:20", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint32_$", - "typeString": "type(uint32)" - }, - "typeName": { - "id": 4395, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "2253:6:20", - "typeDescriptions": {} - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_type$_t_uint32_$", - "typeString": "type(uint32)" - } - ], - "id": 4394, - "name": "type", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -27, - "src": "2248:4:20", - "typeDescriptions": { - "typeIdentifier": "t_function_metatype_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 4397, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2248:12:20", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_magic_meta_type_t_uint32", - "typeString": "type(uint32)" - } - }, - "id": 4398, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "max", - "nodeType": "MemberAccess", - "src": "2248:16:20", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "src": "2244:20:20", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 4400, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2267:1:20", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2244:24:20", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 4411, - "nodeType": "Block", - "src": "2308:33:20", - "statements": [ - { - "expression": { - "id": 4409, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 4407, - "name": "x", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4338, - "src": "2322:1:20", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": ">>=", - "rightHandSide": { - "hexValue": "3332", - "id": 4408, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2328:2:20", - "typeDescriptions": { - "typeIdentifier": "t_rational_32_by_1", - "typeString": "int_const 32" - }, - "value": "32" - }, - "src": "2322:8:20", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 4410, - "nodeType": "ExpressionStatement", - "src": "2322:8:20" - } - ] - }, - "id": 4412, - "nodeType": "IfStatement", - "src": "2240:101:20", - "trueBody": { - "id": 4406, - "nodeType": "Block", - "src": "2270:32:20", - "statements": [ - { - "expression": { - "id": 4404, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 4402, - "name": "r", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4341, - "src": "2284:1:20", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "Assignment", - "operator": "-=", - "rightHandSide": { - "hexValue": "3332", - "id": 4403, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2289:2:20", - "typeDescriptions": { - "typeIdentifier": "t_rational_32_by_1", - "typeString": "int_const 32" - }, - "value": "32" - }, - "src": "2284:7:20", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 4405, - "nodeType": "ExpressionStatement", - "src": "2284:7:20" - } - ] - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 4421, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 4419, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 4413, - "name": "x", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4338, - "src": "2354:1:20", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "&", - "rightExpression": { - "expression": { - "arguments": [ - { - "id": 4416, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2363:6:20", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint16_$", - "typeString": "type(uint16)" - }, - "typeName": { - "id": 4415, - "name": "uint16", - "nodeType": "ElementaryTypeName", - "src": "2363:6:20", - "typeDescriptions": {} - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_type$_t_uint16_$", - "typeString": "type(uint16)" - } - ], - "id": 4414, - "name": "type", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -27, - "src": "2358:4:20", - "typeDescriptions": { - "typeIdentifier": "t_function_metatype_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 4417, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2358:12:20", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_magic_meta_type_t_uint16", - "typeString": "type(uint16)" - } - }, - "id": 4418, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "max", - "nodeType": "MemberAccess", - "src": "2358:16:20", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "src": "2354:20:20", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 4420, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2377:1:20", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2354:24:20", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 4431, - "nodeType": "Block", - "src": "2418:33:20", - "statements": [ - { - "expression": { - "id": 4429, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 4427, - "name": "x", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4338, - "src": "2432:1:20", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": ">>=", - "rightHandSide": { - "hexValue": "3136", - "id": 4428, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2438:2:20", - "typeDescriptions": { - "typeIdentifier": "t_rational_16_by_1", - "typeString": "int_const 16" - }, - "value": "16" - }, - "src": "2432:8:20", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 4430, - "nodeType": "ExpressionStatement", - "src": "2432:8:20" - } - ] - }, - "id": 4432, - "nodeType": "IfStatement", - "src": "2350:101:20", - "trueBody": { - "id": 4426, - "nodeType": "Block", - "src": "2380:32:20", - "statements": [ - { - "expression": { - "id": 4424, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 4422, - "name": "r", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4341, - "src": "2394:1:20", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "Assignment", - "operator": "-=", - "rightHandSide": { - "hexValue": "3136", - "id": 4423, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2399:2:20", - "typeDescriptions": { - "typeIdentifier": "t_rational_16_by_1", - "typeString": "int_const 16" - }, - "value": "16" - }, - "src": "2394:7:20", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 4425, - "nodeType": "ExpressionStatement", - "src": "2394:7:20" - } - ] - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 4441, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 4439, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 4433, - "name": "x", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4338, - "src": "2464:1:20", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "&", - "rightExpression": { - "expression": { - "arguments": [ - { - "id": 4436, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2473:5:20", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint8_$", - "typeString": "type(uint8)" - }, - "typeName": { - "id": 4435, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "2473:5:20", - "typeDescriptions": {} - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_type$_t_uint8_$", - "typeString": "type(uint8)" - } - ], - "id": 4434, - "name": "type", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -27, - "src": "2468:4:20", - "typeDescriptions": { - "typeIdentifier": "t_function_metatype_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 4437, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2468:11:20", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_magic_meta_type_t_uint8", - "typeString": "type(uint8)" - } - }, - "id": 4438, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "max", - "nodeType": "MemberAccess", - "src": "2468:15:20", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "2464:19:20", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 4440, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2486:1:20", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2464:23:20", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 4451, - "nodeType": "Block", - "src": "2526:32:20", - "statements": [ - { - "expression": { - "id": 4449, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 4447, - "name": "x", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4338, - "src": "2540:1:20", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": ">>=", - "rightHandSide": { - "hexValue": "38", - "id": 4448, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2546:1:20", - "typeDescriptions": { - "typeIdentifier": "t_rational_8_by_1", - "typeString": "int_const 8" - }, - "value": "8" - }, - "src": "2540:7:20", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 4450, - "nodeType": "ExpressionStatement", - "src": "2540:7:20" - } - ] - }, - "id": 4452, - "nodeType": "IfStatement", - "src": "2460:98:20", - "trueBody": { - "id": 4446, - "nodeType": "Block", - "src": "2489:31:20", - "statements": [ - { - "expression": { - "id": 4444, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 4442, - "name": "r", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4341, - "src": "2503:1:20", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "Assignment", - "operator": "-=", - "rightHandSide": { - "hexValue": "38", - "id": 4443, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2508:1:20", - "typeDescriptions": { - "typeIdentifier": "t_rational_8_by_1", - "typeString": "int_const 8" - }, - "value": "8" - }, - "src": "2503:6:20", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 4445, - "nodeType": "ExpressionStatement", - "src": "2503:6:20" - } - ] - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 4457, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 4455, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 4453, - "name": "x", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4338, - "src": "2571:1:20", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "&", - "rightExpression": { - "hexValue": "307866", - "id": 4454, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2575:3:20", - "typeDescriptions": { - "typeIdentifier": "t_rational_15_by_1", - "typeString": "int_const 15" - }, - "value": "0xf" - }, - "src": "2571:7:20", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 4456, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2581:1:20", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2571:11:20", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 4467, - "nodeType": "Block", - "src": "2621:32:20", - "statements": [ - { - "expression": { - "id": 4465, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 4463, - "name": "x", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4338, - "src": "2635:1:20", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": ">>=", - "rightHandSide": { - "hexValue": "34", - "id": 4464, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2641:1:20", - "typeDescriptions": { - "typeIdentifier": "t_rational_4_by_1", - "typeString": "int_const 4" - }, - "value": "4" - }, - "src": "2635:7:20", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 4466, - "nodeType": "ExpressionStatement", - "src": "2635:7:20" - } - ] - }, - "id": 4468, - "nodeType": "IfStatement", - "src": "2567:86:20", - "trueBody": { - "id": 4462, - "nodeType": "Block", - "src": "2584:31:20", - "statements": [ - { - "expression": { - "id": 4460, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 4458, - "name": "r", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4341, - "src": "2598:1:20", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "Assignment", - "operator": "-=", - "rightHandSide": { - "hexValue": "34", - "id": 4459, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2603:1:20", - "typeDescriptions": { - "typeIdentifier": "t_rational_4_by_1", - "typeString": "int_const 4" - }, - "value": "4" - }, - "src": "2598:6:20", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 4461, - "nodeType": "ExpressionStatement", - "src": "2598:6:20" - } - ] - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 4473, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 4471, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 4469, - "name": "x", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4338, - "src": "2666:1:20", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "&", - "rightExpression": { - "hexValue": "307833", - "id": 4470, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2670:3:20", - "typeDescriptions": { - "typeIdentifier": "t_rational_3_by_1", - "typeString": "int_const 3" - }, - "value": "0x3" - }, - "src": "2666:7:20", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 4472, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2676:1:20", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2666:11:20", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 4483, - "nodeType": "Block", - "src": "2716:32:20", - "statements": [ - { - "expression": { - "id": 4481, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 4479, - "name": "x", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4338, - "src": "2730:1:20", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": ">>=", - "rightHandSide": { - "hexValue": "32", - "id": 4480, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2736:1:20", - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "src": "2730:7:20", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 4482, - "nodeType": "ExpressionStatement", - "src": "2730:7:20" - } - ] - }, - "id": 4484, - "nodeType": "IfStatement", - "src": "2662:86:20", - "trueBody": { - "id": 4478, - "nodeType": "Block", - "src": "2679:31:20", - "statements": [ - { - "expression": { - "id": 4476, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 4474, - "name": "r", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4341, - "src": "2693:1:20", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "Assignment", - "operator": "-=", - "rightHandSide": { - "hexValue": "32", - "id": 4475, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2698:1:20", - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "src": "2693:6:20", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 4477, - "nodeType": "ExpressionStatement", - "src": "2693:6:20" - } - ] - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 4489, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 4487, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 4485, - "name": "x", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4338, - "src": "2761:1:20", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "&", - "rightExpression": { - "hexValue": "307831", - "id": 4486, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2765:3:20", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "0x1" - }, - "src": "2761:7:20", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 4488, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2771:1:20", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2761:11:20", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 4494, - "nodeType": "IfStatement", - "src": "2757:23:20", - "trueBody": { - "expression": { - "id": 4492, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 4490, - "name": "r", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4341, - "src": "2774:1:20", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "Assignment", - "operator": "-=", - "rightHandSide": { - "hexValue": "31", - "id": 4491, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2779:1:20", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "2774:6:20", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 4493, - "nodeType": "ExpressionStatement", - "src": "2774:6:20" - } - } - ] - }, - "documentation": { - "id": 4336, - "nodeType": "StructuredDocumentation", - "src": "1408:480:20", - "text": "@notice Returns the index of the least significant bit of the number,\n where the least significant bit is at index 0 and the most significant bit is at index 255\n @dev The function satisfies the property:\n (x & 2**leastSignificantBit(x)) != 0 and (x & (2**(leastSignificantBit(x)) - 1)) == 0)\n @param x the value for which to compute the least significant bit, must be greater than 0\n @return r the index of the least significant bit" - }, - "id": 4496, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "leastSignificantBit", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 4339, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 4338, - "mutability": "mutable", - "name": "x", - "nodeType": "VariableDeclaration", - "scope": 4496, - "src": "1922:9:20", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 4337, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1922:7:20", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "1921:11:20" - }, - "returnParameters": { - "id": 4342, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 4341, - "mutability": "mutable", - "name": "r", - "nodeType": "VariableDeclaration", - "scope": 4496, - "src": "1956:7:20", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 4340, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "1956:5:20", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "visibility": "internal" - } - ], - "src": "1955:9:20" - }, - "scope": 4497, - "src": "1893:894:20", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - } - ], - "scope": 4498, - "src": "187:2602:20" - } - ], - "src": "45:2745:20" - }, - "id": 20 - }, - "@uniswap/v3-core/contracts/libraries/FixedPoint128.sol": { - "ast": { - "absolutePath": "@uniswap/v3-core/contracts/libraries/FixedPoint128.sol", - "exportedSymbols": { - "FixedPoint128": [ - 4504 - ] - }, - "id": 4505, - "license": "GPL-2.0-or-later", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 4499, - "literals": [ - "solidity", - ">=", - "0.4", - ".0" - ], - "nodeType": "PragmaDirective", - "src": "45:24:21" - }, - { - "abstract": false, - "baseContracts": [], - "contractDependencies": [], - "contractKind": "library", - "documentation": { - "id": 4500, - "nodeType": "StructuredDocumentation", - "src": "71:140:21", - "text": "@title FixedPoint128\n @notice A library for handling binary fixed point numbers, see https://en.wikipedia.org/wiki/Q_(number_format)" - }, - "fullyImplemented": true, - "id": 4504, - "linearizedBaseContracts": [ - 4504 - ], - "name": "FixedPoint128", - "nodeType": "ContractDefinition", - "nodes": [ - { - "constant": true, - "id": 4503, - "mutability": "constant", - "name": "Q128", - "nodeType": "VariableDeclaration", - "scope": 4504, - "src": "239:68:21", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 4501, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "239:7:21", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": { - "hexValue": "3078313030303030303030303030303030303030303030303030303030303030303030", - "id": 4502, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "272:35:21", - "typeDescriptions": { - "typeIdentifier": "t_rational_340282366920938463463374607431768211456_by_1", - "typeString": "int_const 3402...(31 digits omitted)...1456" - }, - "value": "0x100000000000000000000000000000000" - }, - "visibility": "internal" - } - ], - "scope": 4505, - "src": "211:99:21" - } - ], - "src": "45:266:21" - }, - "id": 21 - }, - "@uniswap/v3-core/contracts/libraries/FixedPoint96.sol": { - "ast": { - "absolutePath": "@uniswap/v3-core/contracts/libraries/FixedPoint96.sol", - "exportedSymbols": { - "FixedPoint96": [ - 4514 - ] - }, - "id": 4515, - "license": "GPL-2.0-or-later", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 4506, - "literals": [ - "solidity", - ">=", - "0.4", - ".0" - ], - "nodeType": "PragmaDirective", - "src": "45:24:22" - }, - { - "abstract": false, - "baseContracts": [], - "contractDependencies": [], - "contractKind": "library", - "documentation": { - "id": 4507, - "nodeType": "StructuredDocumentation", - "src": "71:174:22", - "text": "@title FixedPoint96\n @notice A library for handling binary fixed point numbers, see https://en.wikipedia.org/wiki/Q_(number_format)\n @dev Used in SqrtPriceMath.sol" - }, - "fullyImplemented": true, - "id": 4514, - "linearizedBaseContracts": [ - 4514 - ], - "name": "FixedPoint96", - "nodeType": "ContractDefinition", - "nodes": [ - { - "constant": true, - "id": 4510, - "mutability": "constant", - "name": "RESOLUTION", - "nodeType": "VariableDeclaration", - "scope": 4514, - "src": "272:39:22", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 4508, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "272:5:22", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": { - "hexValue": "3936", - "id": 4509, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "309:2:22", - "typeDescriptions": { - "typeIdentifier": "t_rational_96_by_1", - "typeString": "int_const 96" - }, - "value": "96" - }, - "visibility": "internal" - }, - { - "constant": true, - "id": 4513, - "mutability": "constant", - "name": "Q96", - "nodeType": "VariableDeclaration", - "scope": 4514, - "src": "317:59:22", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 4511, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "317:7:22", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": { - "hexValue": "307831303030303030303030303030303030303030303030303030", - "id": 4512, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "349:27:22", - "typeDescriptions": { - "typeIdentifier": "t_rational_79228162514264337593543950336_by_1", - "typeString": "int_const 79228162514264337593543950336" - }, - "value": "0x1000000000000000000000000" - }, - "visibility": "internal" - } - ], - "scope": 4515, - "src": "245:134:22" - } - ], - "src": "45:335:22" - }, - "id": 22 - }, - "@uniswap/v3-core/contracts/libraries/FullMath.sol": { - "ast": { - "absolutePath": "@uniswap/v3-core/contracts/libraries/FullMath.sol", - "exportedSymbols": { - "FullMath": [ - 4687 - ] - }, - "id": 4688, - "license": "MIT", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 4516, - "literals": [ - "solidity", - ">=", - "0.4", - ".0" - ], - "nodeType": "PragmaDirective", - "src": "32:24:23" - }, - { - "abstract": false, - "baseContracts": [], - "contractDependencies": [], - "contractKind": "library", - "documentation": { - "id": 4517, - "nodeType": "StructuredDocumentation", - "src": "58:297:23", - "text": "@title Contains 512-bit math functions\n @notice Facilitates multiplication and division that can have overflow of an intermediate value without any loss of precision\n @dev Handles \"phantom overflow\" i.e., allows multiplication and division where an intermediate value overflows 256 bits" - }, - "fullyImplemented": true, - "id": 4687, - "linearizedBaseContracts": [ - 4687 - ], - "name": "FullMath", - "nodeType": "ContractDefinition", - "nodes": [ - { - "body": { - "id": 4642, - "nodeType": "Block", - "src": "870:3648:23", - "statements": [ - { - "assignments": [ - 4530 - ], - "declarations": [ - { - "constant": false, - "id": 4530, - "mutability": "mutable", - "name": "prod0", - "nodeType": "VariableDeclaration", - "scope": 4642, - "src": "1183:13:23", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 4529, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1183:7:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 4531, - "nodeType": "VariableDeclarationStatement", - "src": "1183:13:23" - }, - { - "assignments": [ - 4533 - ], - "declarations": [ - { - "constant": false, - "id": 4533, - "mutability": "mutable", - "name": "prod1", - "nodeType": "VariableDeclaration", - "scope": 4642, - "src": "1251:13:23", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 4532, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1251:7:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 4534, - "nodeType": "VariableDeclarationStatement", - "src": "1251:13:23" - }, - { - "AST": { - "nodeType": "YulBlock", - "src": "1327:141:23", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "1341:30:23", - "value": { - "arguments": [ - { - "name": "a", - "nodeType": "YulIdentifier", - "src": "1358:1:23" - }, - { - "name": "b", - "nodeType": "YulIdentifier", - "src": "1361:1:23" - }, - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "1368:1:23", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "not", - "nodeType": "YulIdentifier", - "src": "1364:3:23" - }, - "nodeType": "YulFunctionCall", - "src": "1364:6:23" - } - ], - "functionName": { - "name": "mulmod", - "nodeType": "YulIdentifier", - "src": "1351:6:23" - }, - "nodeType": "YulFunctionCall", - "src": "1351:20:23" - }, - "variables": [ - { - "name": "mm", - "nodeType": "YulTypedName", - "src": "1345:2:23", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "1384:18:23", - "value": { - "arguments": [ - { - "name": "a", - "nodeType": "YulIdentifier", - "src": "1397:1:23" - }, - { - "name": "b", - "nodeType": "YulIdentifier", - "src": "1400:1:23" - } - ], - "functionName": { - "name": "mul", - "nodeType": "YulIdentifier", - "src": "1393:3:23" - }, - "nodeType": "YulFunctionCall", - "src": "1393:9:23" - }, - "variableNames": [ - { - "name": "prod0", - "nodeType": "YulIdentifier", - "src": "1384:5:23" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "1415:43:23", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "mm", - "nodeType": "YulIdentifier", - "src": "1432:2:23" - }, - { - "name": "prod0", - "nodeType": "YulIdentifier", - "src": "1436:5:23" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "1428:3:23" - }, - "nodeType": "YulFunctionCall", - "src": "1428:14:23" - }, - { - "arguments": [ - { - "name": "mm", - "nodeType": "YulIdentifier", - "src": "1447:2:23" - }, - { - "name": "prod0", - "nodeType": "YulIdentifier", - "src": "1451:5:23" - } - ], - "functionName": { - "name": "lt", - "nodeType": "YulIdentifier", - "src": "1444:2:23" - }, - "nodeType": "YulFunctionCall", - "src": "1444:13:23" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "1424:3:23" - }, - "nodeType": "YulFunctionCall", - "src": "1424:34:23" - }, - "variableNames": [ - { - "name": "prod1", - "nodeType": "YulIdentifier", - "src": "1415:5:23" - } - ] - } - ] - }, - "evmVersion": "berlin", - "externalReferences": [ - { - "declaration": 4520, - "isOffset": false, - "isSlot": false, - "src": "1358:1:23", - "valueSize": 1 - }, - { - "declaration": 4520, - "isOffset": false, - "isSlot": false, - "src": "1397:1:23", - "valueSize": 1 - }, - { - "declaration": 4522, - "isOffset": false, - "isSlot": false, - "src": "1361:1:23", - "valueSize": 1 - }, - { - "declaration": 4522, - "isOffset": false, - "isSlot": false, - "src": "1400:1:23", - "valueSize": 1 - }, - { - "declaration": 4530, - "isOffset": false, - "isSlot": false, - "src": "1384:5:23", - "valueSize": 1 - }, - { - "declaration": 4530, - "isOffset": false, - "isSlot": false, - "src": "1436:5:23", - "valueSize": 1 - }, - { - "declaration": 4530, - "isOffset": false, - "isSlot": false, - "src": "1451:5:23", - "valueSize": 1 - }, - { - "declaration": 4533, - "isOffset": false, - "isSlot": false, - "src": "1415:5:23", - "valueSize": 1 - } - ], - "id": 4535, - "nodeType": "InlineAssembly", - "src": "1318:150:23" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 4538, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 4536, - "name": "prod1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4533, - "src": "1540:5:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 4537, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1549:1:23", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1540:10:23", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 4549, - "nodeType": "IfStatement", - "src": "1536:179:23", - "trueBody": { - "id": 4548, - "nodeType": "Block", - "src": "1552:163:23", - "statements": [ - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 4542, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 4540, - "name": "denominator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4524, - "src": "1574:11:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 4541, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1588:1:23", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1574:15:23", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 4539, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "1566:7:23", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 4543, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1566:24:23", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 4544, - "nodeType": "ExpressionStatement", - "src": "1566:24:23" - }, - { - "AST": { - "nodeType": "YulBlock", - "src": "1613:65:23", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "1631:33:23", - "value": { - "arguments": [ - { - "name": "prod0", - "nodeType": "YulIdentifier", - "src": "1645:5:23" - }, - { - "name": "denominator", - "nodeType": "YulIdentifier", - "src": "1652:11:23" - } - ], - "functionName": { - "name": "div", - "nodeType": "YulIdentifier", - "src": "1641:3:23" - }, - "nodeType": "YulFunctionCall", - "src": "1641:23:23" - }, - "variableNames": [ - { - "name": "result", - "nodeType": "YulIdentifier", - "src": "1631:6:23" - } - ] - } - ] - }, - "evmVersion": "berlin", - "externalReferences": [ - { - "declaration": 4524, - "isOffset": false, - "isSlot": false, - "src": "1652:11:23", - "valueSize": 1 - }, - { - "declaration": 4530, - "isOffset": false, - "isSlot": false, - "src": "1645:5:23", - "valueSize": 1 - }, - { - "declaration": 4527, - "isOffset": false, - "isSlot": false, - "src": "1631:6:23", - "valueSize": 1 - } - ], - "id": 4545, - "nodeType": "InlineAssembly", - "src": "1604:74:23" - }, - { - "expression": { - "id": 4546, - "name": "result", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4527, - "src": "1698:6:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 4528, - "id": 4547, - "nodeType": "Return", - "src": "1691:13:23" - } - ] - } - }, - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 4553, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 4551, - "name": "denominator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4524, - "src": "1828:11:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "id": 4552, - "name": "prod1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4533, - "src": "1842:5:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1828:19:23", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 4550, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "1820:7:23", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 4554, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1820:28:23", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 4555, - "nodeType": "ExpressionStatement", - "src": "1820:28:23" - }, - { - "assignments": [ - 4557 - ], - "declarations": [ - { - "constant": false, - "id": 4557, - "mutability": "mutable", - "name": "remainder", - "nodeType": "VariableDeclaration", - "scope": 4642, - "src": "2125:17:23", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 4556, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2125:7:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 4558, - "nodeType": "VariableDeclarationStatement", - "src": "2125:17:23" - }, - { - "AST": { - "nodeType": "YulBlock", - "src": "2161:62:23", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "2175:38:23", - "value": { - "arguments": [ - { - "name": "a", - "nodeType": "YulIdentifier", - "src": "2195:1:23" - }, - { - "name": "b", - "nodeType": "YulIdentifier", - "src": "2198:1:23" - }, - { - "name": "denominator", - "nodeType": "YulIdentifier", - "src": "2201:11:23" - } - ], - "functionName": { - "name": "mulmod", - "nodeType": "YulIdentifier", - "src": "2188:6:23" - }, - "nodeType": "YulFunctionCall", - "src": "2188:25:23" - }, - "variableNames": [ - { - "name": "remainder", - "nodeType": "YulIdentifier", - "src": "2175:9:23" - } - ] - } - ] - }, - "evmVersion": "berlin", - "externalReferences": [ - { - "declaration": 4520, - "isOffset": false, - "isSlot": false, - "src": "2195:1:23", - "valueSize": 1 - }, - { - "declaration": 4522, - "isOffset": false, - "isSlot": false, - "src": "2198:1:23", - "valueSize": 1 - }, - { - "declaration": 4524, - "isOffset": false, - "isSlot": false, - "src": "2201:11:23", - "valueSize": 1 - }, - { - "declaration": 4557, - "isOffset": false, - "isSlot": false, - "src": "2175:9:23", - "valueSize": 1 - } - ], - "id": 4559, - "nodeType": "InlineAssembly", - "src": "2152:71:23" - }, - { - "AST": { - "nodeType": "YulBlock", - "src": "2296:108:23", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "2310:41:23", - "value": { - "arguments": [ - { - "name": "prod1", - "nodeType": "YulIdentifier", - "src": "2323:5:23" - }, - { - "arguments": [ - { - "name": "remainder", - "nodeType": "YulIdentifier", - "src": "2333:9:23" - }, - { - "name": "prod0", - "nodeType": "YulIdentifier", - "src": "2344:5:23" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "2330:2:23" - }, - "nodeType": "YulFunctionCall", - "src": "2330:20:23" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "2319:3:23" - }, - "nodeType": "YulFunctionCall", - "src": "2319:32:23" - }, - "variableNames": [ - { - "name": "prod1", - "nodeType": "YulIdentifier", - "src": "2310:5:23" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "2364:30:23", - "value": { - "arguments": [ - { - "name": "prod0", - "nodeType": "YulIdentifier", - "src": "2377:5:23" - }, - { - "name": "remainder", - "nodeType": "YulIdentifier", - "src": "2384:9:23" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "2373:3:23" - }, - "nodeType": "YulFunctionCall", - "src": "2373:21:23" - }, - "variableNames": [ - { - "name": "prod0", - "nodeType": "YulIdentifier", - "src": "2364:5:23" - } - ] - } - ] - }, - "evmVersion": "berlin", - "externalReferences": [ - { - "declaration": 4530, - "isOffset": false, - "isSlot": false, - "src": "2344:5:23", - "valueSize": 1 - }, - { - "declaration": 4530, - "isOffset": false, - "isSlot": false, - "src": "2364:5:23", - "valueSize": 1 - }, - { - "declaration": 4530, - "isOffset": false, - "isSlot": false, - "src": "2377:5:23", - "valueSize": 1 - }, - { - "declaration": 4533, - "isOffset": false, - "isSlot": false, - "src": "2310:5:23", - "valueSize": 1 - }, - { - "declaration": 4533, - "isOffset": false, - "isSlot": false, - "src": "2323:5:23", - "valueSize": 1 - }, - { - "declaration": 4557, - "isOffset": false, - "isSlot": false, - "src": "2333:9:23", - "valueSize": 1 - }, - { - "declaration": 4557, - "isOffset": false, - "isSlot": false, - "src": "2384:9:23", - "valueSize": 1 - } - ], - "id": 4560, - "nodeType": "InlineAssembly", - "src": "2287:117:23" - }, - { - "assignments": [ - 4562 - ], - "declarations": [ - { - "constant": false, - "id": 4562, - "mutability": "mutable", - "name": "twos", - "nodeType": "VariableDeclaration", - "scope": 4642, - "src": "2553:12:23", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 4561, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2553:7:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 4567, - "initialValue": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 4566, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 4564, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "-", - "prefix": true, - "src": "2568:12:23", - "subExpression": { - "id": 4563, - "name": "denominator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4524, - "src": "2569:11:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "&", - "rightExpression": { - "id": 4565, - "name": "denominator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4524, - "src": "2583:11:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2568:26:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2553:41:23" - }, - { - "AST": { - "nodeType": "YulBlock", - "src": "2659:61:23", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "2673:37:23", - "value": { - "arguments": [ - { - "name": "denominator", - "nodeType": "YulIdentifier", - "src": "2692:11:23" - }, - { - "name": "twos", - "nodeType": "YulIdentifier", - "src": "2705:4:23" - } - ], - "functionName": { - "name": "div", - "nodeType": "YulIdentifier", - "src": "2688:3:23" - }, - "nodeType": "YulFunctionCall", - "src": "2688:22:23" - }, - "variableNames": [ - { - "name": "denominator", - "nodeType": "YulIdentifier", - "src": "2673:11:23" - } - ] - } - ] - }, - "evmVersion": "berlin", - "externalReferences": [ - { - "declaration": 4524, - "isOffset": false, - "isSlot": false, - "src": "2673:11:23", - "valueSize": 1 - }, - { - "declaration": 4524, - "isOffset": false, - "isSlot": false, - "src": "2692:11:23", - "valueSize": 1 - }, - { - "declaration": 4562, - "isOffset": false, - "isSlot": false, - "src": "2705:4:23", - "valueSize": 1 - } - ], - "id": 4568, - "nodeType": "InlineAssembly", - "src": "2650:70:23" - }, - { - "AST": { - "nodeType": "YulBlock", - "src": "2793:49:23", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "2807:25:23", - "value": { - "arguments": [ - { - "name": "prod0", - "nodeType": "YulIdentifier", - "src": "2820:5:23" - }, - { - "name": "twos", - "nodeType": "YulIdentifier", - "src": "2827:4:23" - } - ], - "functionName": { - "name": "div", - "nodeType": "YulIdentifier", - "src": "2816:3:23" - }, - "nodeType": "YulFunctionCall", - "src": "2816:16:23" - }, - "variableNames": [ - { - "name": "prod0", - "nodeType": "YulIdentifier", - "src": "2807:5:23" - } - ] - } - ] - }, - "evmVersion": "berlin", - "externalReferences": [ - { - "declaration": 4530, - "isOffset": false, - "isSlot": false, - "src": "2807:5:23", - "valueSize": 1 - }, - { - "declaration": 4530, - "isOffset": false, - "isSlot": false, - "src": "2820:5:23", - "valueSize": 1 - }, - { - "declaration": 4562, - "isOffset": false, - "isSlot": false, - "src": "2827:4:23", - "valueSize": 1 - } - ], - "id": 4569, - "nodeType": "InlineAssembly", - "src": "2784:58:23" - }, - { - "AST": { - "nodeType": "YulBlock", - "src": "3030:63:23", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "3044:39:23", - "value": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3064:1:23", - "type": "", - "value": "0" - }, - { - "name": "twos", - "nodeType": "YulIdentifier", - "src": "3067:4:23" - } - ], - "functionName": { - "name": "sub", - "nodeType": "YulIdentifier", - "src": "3060:3:23" - }, - "nodeType": "YulFunctionCall", - "src": "3060:12:23" - }, - { - "name": "twos", - "nodeType": "YulIdentifier", - "src": "3074:4:23" - } - ], - "functionName": { - "name": "div", - "nodeType": "YulIdentifier", - "src": "3056:3:23" - }, - "nodeType": "YulFunctionCall", - "src": "3056:23:23" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "3081:1:23", - "type": "", - "value": "1" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "3052:3:23" - }, - "nodeType": "YulFunctionCall", - "src": "3052:31:23" - }, - "variableNames": [ - { - "name": "twos", - "nodeType": "YulIdentifier", - "src": "3044:4:23" - } - ] - } - ] - }, - "evmVersion": "berlin", - "externalReferences": [ - { - "declaration": 4562, - "isOffset": false, - "isSlot": false, - "src": "3044:4:23", - "valueSize": 1 - }, - { - "declaration": 4562, - "isOffset": false, - "isSlot": false, - "src": "3067:4:23", - "valueSize": 1 - }, - { - "declaration": 4562, - "isOffset": false, - "isSlot": false, - "src": "3074:4:23", - "valueSize": 1 - } - ], - "id": 4570, - "nodeType": "InlineAssembly", - "src": "3021:72:23" - }, - { - "expression": { - "id": 4575, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 4571, - "name": "prod0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4530, - "src": "3102:5:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "|=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 4574, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 4572, - "name": "prod1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4533, - "src": "3111:5:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "id": 4573, - "name": "twos", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4562, - "src": "3119:4:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3111:12:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3102:21:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 4576, - "nodeType": "ExpressionStatement", - "src": "3102:21:23" - }, - { - "assignments": [ - 4578 - ], - "declarations": [ - { - "constant": false, - "id": 4578, - "mutability": "mutable", - "name": "inv", - "nodeType": "VariableDeclaration", - "scope": 4642, - "src": "3457:11:23", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 4577, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3457:7:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 4585, - "initialValue": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 4584, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 4581, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "hexValue": "33", - "id": 4579, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3472:1:23", - "typeDescriptions": { - "typeIdentifier": "t_rational_3_by_1", - "typeString": "int_const 3" - }, - "value": "3" - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "id": 4580, - "name": "denominator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4524, - "src": "3476:11:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3472:15:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 4582, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "3471:17:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "^", - "rightExpression": { - "hexValue": "32", - "id": 4583, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3491:1:23", - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "src": "3471:21:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3457:35:23" - }, - { - "expression": { - "id": 4592, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 4586, - "name": "inv", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4578, - "src": "3707:3:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "*=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 4591, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "hexValue": "32", - "id": 4587, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3714:1:23", - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 4590, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 4588, - "name": "denominator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4524, - "src": "3718:11:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "id": 4589, - "name": "inv", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4578, - "src": "3732:3:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3718:17:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3714:21:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3707:28:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 4593, - "nodeType": "ExpressionStatement", - "src": "3707:28:23" - }, - { - "expression": { - "id": 4600, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 4594, - "name": "inv", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4578, - "src": "3765:3:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "*=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 4599, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "hexValue": "32", - "id": 4595, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3772:1:23", - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 4598, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 4596, - "name": "denominator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4524, - "src": "3776:11:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "id": 4597, - "name": "inv", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4578, - "src": "3790:3:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3776:17:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3772:21:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3765:28:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 4601, - "nodeType": "ExpressionStatement", - "src": "3765:28:23" - }, - { - "expression": { - "id": 4608, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 4602, - "name": "inv", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4578, - "src": "3824:3:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "*=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 4607, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "hexValue": "32", - "id": 4603, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3831:1:23", - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 4606, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 4604, - "name": "denominator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4524, - "src": "3835:11:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "id": 4605, - "name": "inv", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4578, - "src": "3849:3:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3835:17:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3831:21:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3824:28:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 4609, - "nodeType": "ExpressionStatement", - "src": "3824:28:23" - }, - { - "expression": { - "id": 4616, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 4610, - "name": "inv", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4578, - "src": "3883:3:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "*=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 4615, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "hexValue": "32", - "id": 4611, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3890:1:23", - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 4614, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 4612, - "name": "denominator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4524, - "src": "3894:11:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "id": 4613, - "name": "inv", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4578, - "src": "3908:3:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3894:17:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3890:21:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3883:28:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 4617, - "nodeType": "ExpressionStatement", - "src": "3883:28:23" - }, - { - "expression": { - "id": 4624, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 4618, - "name": "inv", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4578, - "src": "3942:3:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "*=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 4623, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "hexValue": "32", - "id": 4619, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3949:1:23", - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 4622, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 4620, - "name": "denominator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4524, - "src": "3953:11:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "id": 4621, - "name": "inv", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4578, - "src": "3967:3:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3953:17:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3949:21:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3942:28:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 4625, - "nodeType": "ExpressionStatement", - "src": "3942:28:23" - }, - { - "expression": { - "id": 4632, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 4626, - "name": "inv", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4578, - "src": "4002:3:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "*=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 4631, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "hexValue": "32", - "id": 4627, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4009:1:23", - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 4630, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 4628, - "name": "denominator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4524, - "src": "4013:11:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "id": 4629, - "name": "inv", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4578, - "src": "4027:3:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4013:17:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4009:21:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4002:28:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 4633, - "nodeType": "ExpressionStatement", - "src": "4002:28:23" - }, - { - "expression": { - "id": 4638, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 4634, - "name": "result", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4527, - "src": "4468:6:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 4637, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 4635, - "name": "prod0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4530, - "src": "4477:5:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "id": 4636, - "name": "inv", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4578, - "src": "4485:3:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4477:11:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4468:20:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 4639, - "nodeType": "ExpressionStatement", - "src": "4468:20:23" - }, - { - "expression": { - "id": 4640, - "name": "result", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4527, - "src": "4505:6:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 4528, - "id": 4641, - "nodeType": "Return", - "src": "4498:13:23" - } - ] - }, - "documentation": { - "id": 4518, - "nodeType": "StructuredDocumentation", - "src": "378:359:23", - "text": "@notice Calculates floor(a×b÷denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\n @param a The multiplicand\n @param b The multiplier\n @param denominator The divisor\n @return result The 256-bit result\n @dev Credit to Remco Bloemen under MIT license https://xn--2-umb.com/21/muldiv" - }, - "id": 4643, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "mulDiv", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 4525, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 4520, - "mutability": "mutable", - "name": "a", - "nodeType": "VariableDeclaration", - "scope": 4643, - "src": "767:9:23", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 4519, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "767:7:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 4522, - "mutability": "mutable", - "name": "b", - "nodeType": "VariableDeclaration", - "scope": 4643, - "src": "786:9:23", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 4521, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "786:7:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 4524, - "mutability": "mutable", - "name": "denominator", - "nodeType": "VariableDeclaration", - "scope": 4643, - "src": "805:19:23", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 4523, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "805:7:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "757:73:23" - }, - "returnParameters": { - "id": 4528, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 4527, - "mutability": "mutable", - "name": "result", - "nodeType": "VariableDeclaration", - "scope": 4643, - "src": "854:14:23", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 4526, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "854:7:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "853:16:23" - }, - "scope": 4687, - "src": "742:3776:23", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 4685, - "nodeType": "Block", - "src": "4938:177:23", - "statements": [ - { - "expression": { - "id": 4661, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 4655, - "name": "result", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4653, - "src": "4948:6:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 4657, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4646, - "src": "4964:1:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 4658, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4648, - "src": "4967:1:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 4659, - "name": "denominator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4650, - "src": "4970:11:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 4656, - "name": "mulDiv", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4643, - "src": "4957:6:23", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 4660, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4957:25:23", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4948:34:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 4662, - "nodeType": "ExpressionStatement", - "src": "4948:34:23" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 4669, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "arguments": [ - { - "id": 4664, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4646, - "src": "5003:1:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 4665, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4648, - "src": "5006:1:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 4666, - "name": "denominator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4650, - "src": "5009:11:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 4663, - "name": "mulmod", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -16, - "src": "4996:6:23", - "typeDescriptions": { - "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 4667, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4996:25:23", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 4668, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5024:1:23", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "4996:29:23", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 4684, - "nodeType": "IfStatement", - "src": "4992:117:23", - "trueBody": { - "id": 4683, - "nodeType": "Block", - "src": "5027:82:23", - "statements": [ - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 4677, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 4671, - "name": "result", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4653, - "src": "5049:6:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "expression": { - "arguments": [ - { - "id": 4674, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "5063:7:23", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 4673, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5063:7:23", - "typeDescriptions": {} - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - } - ], - "id": 4672, - "name": "type", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -27, - "src": "5058:4:23", - "typeDescriptions": { - "typeIdentifier": "t_function_metatype_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 4675, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5058:13:23", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_magic_meta_type_t_uint256", - "typeString": "type(uint256)" - } - }, - "id": 4676, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "max", - "nodeType": "MemberAccess", - "src": "5058:17:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "5049:26:23", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 4670, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "5041:7:23", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 4678, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5041:35:23", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 4679, - "nodeType": "ExpressionStatement", - "src": "5041:35:23" - }, - { - "expression": { - "id": 4681, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "5090:8:23", - "subExpression": { - "id": 4680, - "name": "result", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4653, - "src": "5090:6:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 4682, - "nodeType": "ExpressionStatement", - "src": "5090:8:23" - } - ] - } - } - ] - }, - "documentation": { - "id": 4644, - "nodeType": "StructuredDocumentation", - "src": "4524:271:23", - "text": "@notice Calculates ceil(a×b÷denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\n @param a The multiplicand\n @param b The multiplier\n @param denominator The divisor\n @return result The 256-bit result" - }, - "id": 4686, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "mulDivRoundingUp", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 4651, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 4646, - "mutability": "mutable", - "name": "a", - "nodeType": "VariableDeclaration", - "scope": 4686, - "src": "4835:9:23", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 4645, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4835:7:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 4648, - "mutability": "mutable", - "name": "b", - "nodeType": "VariableDeclaration", - "scope": 4686, - "src": "4854:9:23", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 4647, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4854:7:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 4650, - "mutability": "mutable", - "name": "denominator", - "nodeType": "VariableDeclaration", - "scope": 4686, - "src": "4873:19:23", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 4649, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4873:7:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "4825:73:23" - }, - "returnParameters": { - "id": 4654, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 4653, - "mutability": "mutable", - "name": "result", - "nodeType": "VariableDeclaration", - "scope": 4686, - "src": "4922:14:23", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 4652, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4922:7:23", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "4921:16:23" - }, - "scope": 4687, - "src": "4800:315:23", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - } - ], - "scope": 4688, - "src": "355:4762:23" - } - ], - "src": "32:5086:23" - }, - "id": 23 - }, - "@uniswap/v3-core/contracts/libraries/LiquidityMath.sol": { - "ast": { - "absolutePath": "@uniswap/v3-core/contracts/libraries/LiquidityMath.sol", - "exportedSymbols": { - "LiquidityMath": [ - 4739 - ] - }, - "id": 4740, - "license": "GPL-2.0-or-later", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 4689, - "literals": [ - "solidity", - ">=", - "0.5", - ".0" - ], - "nodeType": "PragmaDirective", - "src": "45:24:24" - }, - { - "abstract": false, - "baseContracts": [], - "contractDependencies": [], - "contractKind": "library", - "documentation": { - "id": 4690, - "nodeType": "StructuredDocumentation", - "src": "71:38:24", - "text": "@title Math library for liquidity" - }, - "fullyImplemented": true, - "id": 4739, - "linearizedBaseContracts": [ - 4739 - ], - "name": "LiquidityMath", - "nodeType": "ContractDefinition", - "nodes": [ - { - "body": { - "id": 4737, - "nodeType": "Block", - "src": "456:163:24", - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_int128", - "typeString": "int128" - }, - "id": 4702, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 4700, - "name": "y", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4695, - "src": "470:1:24", - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "hexValue": "30", - "id": 4701, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "474:1:24", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "470:5:24", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 4735, - "nodeType": "Block", - "src": "548:65:24", - "statements": [ - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "id": 4731, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "id": 4728, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 4721, - "name": "z", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4698, - "src": "571:1:24", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "id": 4727, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 4722, - "name": "x", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4693, - "src": "575:1:24", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "arguments": [ - { - "id": 4725, - "name": "y", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4695, - "src": "587:1:24", - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - ], - "id": 4724, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "579:7:24", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint128_$", - "typeString": "type(uint128)" - }, - "typeName": { - "id": 4723, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "579:7:24", - "typeDescriptions": {} - } - }, - "id": 4726, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "579:10:24", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "src": "575:14:24", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "src": "571:18:24", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - } - ], - "id": 4729, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "570:20:24", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "id": 4730, - "name": "x", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4693, - "src": "594:1:24", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "src": "570:25:24", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "4c41", - "id": 4732, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "597:4:24", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_ce8fc98a1432efc8ba166615239eb1702fbbbd0ddab9a5952502a98483035383", - "typeString": "literal_string \"LA\"" - }, - "value": "LA" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_ce8fc98a1432efc8ba166615239eb1702fbbbd0ddab9a5952502a98483035383", - "typeString": "literal_string \"LA\"" - } - ], - "id": 4720, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "562:7:24", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 4733, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "562:40:24", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 4734, - "nodeType": "ExpressionStatement", - "src": "562:40:24" - } - ] - }, - "id": 4736, - "nodeType": "IfStatement", - "src": "466:147:24", - "trueBody": { - "id": 4719, - "nodeType": "Block", - "src": "477:65:24", - "statements": [ - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "id": 4715, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "id": 4712, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 4704, - "name": "z", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4698, - "src": "500:1:24", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "id": 4711, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 4705, - "name": "x", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4693, - "src": "504:1:24", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "arguments": [ - { - "id": 4709, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "-", - "prefix": true, - "src": "516:2:24", - "subExpression": { - "id": 4708, - "name": "y", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4695, - "src": "517:1:24", - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - ], - "id": 4707, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "508:7:24", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint128_$", - "typeString": "type(uint128)" - }, - "typeName": { - "id": 4706, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "508:7:24", - "typeDescriptions": {} - } - }, - "id": 4710, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "508:11:24", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "src": "504:15:24", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "src": "500:19:24", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - } - ], - "id": 4713, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "499:21:24", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "id": 4714, - "name": "x", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4693, - "src": "523:1:24", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "src": "499:25:24", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "4c53", - "id": 4716, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "526:4:24", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_2be2231ccd52e7fedf30c30a3dfa3d6c9d9d3400159e305398a7b6d437f56985", - "typeString": "literal_string \"LS\"" - }, - "value": "LS" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_2be2231ccd52e7fedf30c30a3dfa3d6c9d9d3400159e305398a7b6d437f56985", - "typeString": "literal_string \"LS\"" - } - ], - "id": 4703, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "491:7:24", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 4717, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "491:40:24", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 4718, - "nodeType": "ExpressionStatement", - "src": "491:40:24" - } - ] - } - } - ] - }, - "documentation": { - "id": 4691, - "nodeType": "StructuredDocumentation", - "src": "137:241:24", - "text": "@notice Add a signed liquidity delta to liquidity and revert if it overflows or underflows\n @param x The liquidity before change\n @param y The delta by which liquidity should be changed\n @return z The liquidity delta" - }, - "id": 4738, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "addDelta", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 4696, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 4693, - "mutability": "mutable", - "name": "x", - "nodeType": "VariableDeclaration", - "scope": 4738, - "src": "401:9:24", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "typeName": { - "id": 4692, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "401:7:24", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 4695, - "mutability": "mutable", - "name": "y", - "nodeType": "VariableDeclaration", - "scope": 4738, - "src": "412:8:24", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - }, - "typeName": { - "id": 4694, - "name": "int128", - "nodeType": "ElementaryTypeName", - "src": "412:6:24", - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - }, - "visibility": "internal" - } - ], - "src": "400:21:24" - }, - "returnParameters": { - "id": 4699, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 4698, - "mutability": "mutable", - "name": "z", - "nodeType": "VariableDeclaration", - "scope": 4738, - "src": "445:9:24", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "typeName": { - "id": 4697, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "445:7:24", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "visibility": "internal" - } - ], - "src": "444:11:24" - }, - "scope": 4739, - "src": "383:236:24", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - } - ], - "scope": 4740, - "src": "109:512:24" - } - ], - "src": "45:577:24" - }, - "id": 24 - }, - "@uniswap/v3-core/contracts/libraries/LowGasSafeMath.sol": { - "ast": { - "absolutePath": "@uniswap/v3-core/contracts/libraries/LowGasSafeMath.sol", - "exportedSymbols": { - "LowGasSafeMath": [ - 4869 - ] - }, - "id": 4870, - "license": "GPL-2.0-or-later", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 4741, - "literals": [ - "solidity", - ">=", - "0.7", - ".0" - ], - "nodeType": "PragmaDirective", - "src": "45:24:25" - }, - { - "abstract": false, - "baseContracts": [], - "contractDependencies": [], - "contractKind": "library", - "documentation": { - "id": 4742, - "nodeType": "StructuredDocumentation", - "src": "71:178:25", - "text": "@title Optimized overflow and underflow safe math operations\n @notice Contains methods for doing math operations that revert on overflow or underflow for minimal gas cost" - }, - "fullyImplemented": true, - "id": 4869, - "linearizedBaseContracts": [ - 4869 - ], - "name": "LowGasSafeMath", - "nodeType": "ContractDefinition", - "nodes": [ - { - "body": { - "id": 4763, - "nodeType": "Block", - "src": "504:42:25", - "statements": [ - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 4760, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "id": 4757, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 4753, - "name": "z", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4750, - "src": "523:1:25", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 4756, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 4754, - "name": "x", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4745, - "src": "527:1:25", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "id": 4755, - "name": "y", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4747, - "src": "531:1:25", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "527:5:25", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "523:9:25", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 4758, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "522:11:25", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "id": 4759, - "name": "x", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4745, - "src": "537:1:25", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "522:16:25", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 4752, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "514:7:25", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 4761, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "514:25:25", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 4762, - "nodeType": "ExpressionStatement", - "src": "514:25:25" - } - ] - }, - "documentation": { - "id": 4743, - "nodeType": "StructuredDocumentation", - "src": "278:152:25", - "text": "@notice Returns x + y, reverts if sum overflows uint256\n @param x The augend\n @param y The addend\n @return z The sum of x and y" - }, - "id": 4764, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "add", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 4748, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 4745, - "mutability": "mutable", - "name": "x", - "nodeType": "VariableDeclaration", - "scope": 4764, - "src": "448:9:25", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 4744, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "448:7:25", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 4747, - "mutability": "mutable", - "name": "y", - "nodeType": "VariableDeclaration", - "scope": 4764, - "src": "459:9:25", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 4746, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "459:7:25", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "447:22:25" - }, - "returnParameters": { - "id": 4751, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 4750, - "mutability": "mutable", - "name": "z", - "nodeType": "VariableDeclaration", - "scope": 4764, - "src": "493:9:25", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 4749, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "493:7:25", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "492:11:25" - }, - "scope": 4869, - "src": "435:111:25", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 4785, - "nodeType": "Block", - "src": "779:42:25", - "statements": [ - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 4782, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "id": 4779, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 4775, - "name": "z", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4772, - "src": "798:1:25", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 4778, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 4776, - "name": "x", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4767, - "src": "802:1:25", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "id": 4777, - "name": "y", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4769, - "src": "806:1:25", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "802:5:25", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "798:9:25", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 4780, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "797:11:25", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "id": 4781, - "name": "x", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4767, - "src": "812:1:25", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "797:16:25", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 4774, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "789:7:25", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 4783, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "789:25:25", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 4784, - "nodeType": "ExpressionStatement", - "src": "789:25:25" - } - ] - }, - "documentation": { - "id": 4765, - "nodeType": "StructuredDocumentation", - "src": "552:153:25", - "text": "@notice Returns x - y, reverts if underflows\n @param x The minuend\n @param y The subtrahend\n @return z The difference of x and y" - }, - "id": 4786, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "sub", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 4770, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 4767, - "mutability": "mutable", - "name": "x", - "nodeType": "VariableDeclaration", - "scope": 4786, - "src": "723:9:25", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 4766, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "723:7:25", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 4769, - "mutability": "mutable", - "name": "y", - "nodeType": "VariableDeclaration", - "scope": 4786, - "src": "734:9:25", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 4768, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "734:7:25", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "722:22:25" - }, - "returnParameters": { - "id": 4773, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 4772, - "mutability": "mutable", - "name": "z", - "nodeType": "VariableDeclaration", - "scope": 4786, - "src": "768:9:25", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 4771, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "768:7:25", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "767:11:25" - }, - "scope": 4869, - "src": "710:111:25", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 4813, - "nodeType": "Block", - "src": "1055:56:25", - "statements": [ - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 4810, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 4799, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 4797, - "name": "x", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4789, - "src": "1073:1:25", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 4798, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1078:1:25", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1073:6:25", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 4809, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 4807, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "id": 4804, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 4800, - "name": "z", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4794, - "src": "1084:1:25", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 4803, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 4801, - "name": "x", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4789, - "src": "1088:1:25", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "id": 4802, - "name": "y", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4791, - "src": "1092:1:25", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1088:5:25", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1084:9:25", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 4805, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "1083:11:25", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "id": 4806, - "name": "x", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4789, - "src": "1097:1:25", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1083:15:25", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "id": 4808, - "name": "y", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4791, - "src": "1102:1:25", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1083:20:25", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "1073:30:25", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 4796, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "1065:7:25", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 4811, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1065:39:25", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 4812, - "nodeType": "ExpressionStatement", - "src": "1065:39:25" - } - ] - }, - "documentation": { - "id": 4787, - "nodeType": "StructuredDocumentation", - "src": "827:154:25", - "text": "@notice Returns x * y, reverts if overflows\n @param x The multiplicand\n @param y The multiplier\n @return z The product of x and y" - }, - "id": 4814, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "mul", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 4792, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 4789, - "mutability": "mutable", - "name": "x", - "nodeType": "VariableDeclaration", - "scope": 4814, - "src": "999:9:25", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 4788, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "999:7:25", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 4791, - "mutability": "mutable", - "name": "y", - "nodeType": "VariableDeclaration", - "scope": 4814, - "src": "1010:9:25", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 4790, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1010:7:25", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "998:22:25" - }, - "returnParameters": { - "id": 4795, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 4794, - "mutability": "mutable", - "name": "z", - "nodeType": "VariableDeclaration", - "scope": 4814, - "src": "1044:9:25", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 4793, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1044:7:25", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "1043:11:25" - }, - "scope": 4869, - "src": "986:125:25", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 4840, - "nodeType": "Block", - "src": "1342:54:25", - "statements": [ - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 4837, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "id": 4832, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "id": 4829, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 4825, - "name": "z", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4822, - "src": "1361:1:25", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "id": 4828, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 4826, - "name": "x", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4817, - "src": "1365:1:25", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "id": 4827, - "name": "y", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4819, - "src": "1369:1:25", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "src": "1365:5:25", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "src": "1361:9:25", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - } - ], - "id": 4830, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "1360:11:25", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "id": 4831, - "name": "x", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4817, - "src": "1375:1:25", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "src": "1360:16:25", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "id": 4835, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 4833, - "name": "y", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4819, - "src": "1381:1:25", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "hexValue": "30", - "id": 4834, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1386:1:25", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1381:6:25", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "id": 4836, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "1380:8:25", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "1360:28:25", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 4824, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "1352:7:25", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 4838, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1352:37:25", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 4839, - "nodeType": "ExpressionStatement", - "src": "1352:37:25" - } - ] - }, - "documentation": { - "id": 4815, - "nodeType": "StructuredDocumentation", - "src": "1117:154:25", - "text": "@notice Returns x + y, reverts if overflows or underflows\n @param x The augend\n @param y The addend\n @return z The sum of x and y" - }, - "id": 4841, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "add", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 4820, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 4817, - "mutability": "mutable", - "name": "x", - "nodeType": "VariableDeclaration", - "scope": 4841, - "src": "1289:8:25", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "typeName": { - "id": 4816, - "name": "int256", - "nodeType": "ElementaryTypeName", - "src": "1289:6:25", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 4819, - "mutability": "mutable", - "name": "y", - "nodeType": "VariableDeclaration", - "scope": 4841, - "src": "1299:8:25", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "typeName": { - "id": 4818, - "name": "int256", - "nodeType": "ElementaryTypeName", - "src": "1299:6:25", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "visibility": "internal" - } - ], - "src": "1288:20:25" - }, - "returnParameters": { - "id": 4823, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 4822, - "mutability": "mutable", - "name": "z", - "nodeType": "VariableDeclaration", - "scope": 4841, - "src": "1332:8:25", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "typeName": { - "id": 4821, - "name": "int256", - "nodeType": "ElementaryTypeName", - "src": "1332:6:25", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "visibility": "internal" - } - ], - "src": "1331:10:25" - }, - "scope": 4869, - "src": "1276:120:25", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 4867, - "nodeType": "Block", - "src": "1639:54:25", - "statements": [ - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 4864, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "id": 4859, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "id": 4856, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 4852, - "name": "z", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4849, - "src": "1658:1:25", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "id": 4855, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 4853, - "name": "x", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4844, - "src": "1662:1:25", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "id": 4854, - "name": "y", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4846, - "src": "1666:1:25", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "src": "1662:5:25", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "src": "1658:9:25", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - } - ], - "id": 4857, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "1657:11:25", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "id": 4858, - "name": "x", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4844, - "src": "1672:1:25", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "src": "1657:16:25", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "id": 4862, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 4860, - "name": "y", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4846, - "src": "1678:1:25", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "hexValue": "30", - "id": 4861, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1683:1:25", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1678:6:25", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "id": 4863, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "1677:8:25", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "1657:28:25", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 4851, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "1649:7:25", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 4865, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1649:37:25", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 4866, - "nodeType": "ExpressionStatement", - "src": "1649:37:25" - } - ] - }, - "documentation": { - "id": 4842, - "nodeType": "StructuredDocumentation", - "src": "1402:166:25", - "text": "@notice Returns x - y, reverts if overflows or underflows\n @param x The minuend\n @param y The subtrahend\n @return z The difference of x and y" - }, - "id": 4868, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "sub", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 4847, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 4844, - "mutability": "mutable", - "name": "x", - "nodeType": "VariableDeclaration", - "scope": 4868, - "src": "1586:8:25", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "typeName": { - "id": 4843, - "name": "int256", - "nodeType": "ElementaryTypeName", - "src": "1586:6:25", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 4846, - "mutability": "mutable", - "name": "y", - "nodeType": "VariableDeclaration", - "scope": 4868, - "src": "1596:8:25", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "typeName": { - "id": 4845, - "name": "int256", - "nodeType": "ElementaryTypeName", - "src": "1596:6:25", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "visibility": "internal" - } - ], - "src": "1585:20:25" - }, - "returnParameters": { - "id": 4850, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 4849, - "mutability": "mutable", - "name": "z", - "nodeType": "VariableDeclaration", - "scope": 4868, - "src": "1629:8:25", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "typeName": { - "id": 4848, - "name": "int256", - "nodeType": "ElementaryTypeName", - "src": "1629:6:25", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "visibility": "internal" - } - ], - "src": "1628:10:25" - }, - "scope": 4869, - "src": "1573:120:25", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - } - ], - "scope": 4870, - "src": "249:1446:25" - } - ], - "src": "45:1651:25" - }, - "id": 25 - }, - "@uniswap/v3-core/contracts/libraries/Oracle.sol": { - "ast": { - "absolutePath": "@uniswap/v3-core/contracts/libraries/Oracle.sol", - "exportedSymbols": { - "Oracle": [ - 5604 - ] - }, - "id": 5605, - "license": "BUSL-1.1", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 4871, - "literals": [ - "solidity", - ">=", - "0.5", - ".0" - ], - "nodeType": "PragmaDirective", - "src": "37:24:26" - }, - { - "abstract": false, - "baseContracts": [], - "contractDependencies": [], - "contractKind": "library", - "documentation": { - "id": 4872, - "nodeType": "StructuredDocumentation", - "src": "63:613:26", - "text": "@title Oracle\n @notice Provides price and liquidity data useful for a wide variety of system designs\n @dev Instances of stored oracle data, \"observations\", are collected in the oracle array\n Every pool is initialized with an oracle array length of 1. Anyone can pay the SSTOREs to increase the\n maximum length of the oracle array. New slots will be added when the array is fully populated.\n Observations are overwritten when the full length of the oracle array is populated.\n The most recent observation is available, independent of the length of the oracle array, by passing 0 to observe()" - }, - "fullyImplemented": true, - "id": 5604, - "linearizedBaseContracts": [ - 5604 - ], - "name": "Oracle", - "nodeType": "ContractDefinition", - "nodes": [ - { - "canonicalName": "Oracle.Observation", - "id": 4881, - "members": [ - { - "constant": false, - "id": 4874, - "mutability": "mutable", - "name": "blockTimestamp", - "nodeType": "VariableDeclaration", - "scope": 4881, - "src": "776:21:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 4873, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "776:6:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 4876, - "mutability": "mutable", - "name": "tickCumulative", - "nodeType": "VariableDeclaration", - "scope": 4881, - "src": "902:20:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - }, - "typeName": { - "id": 4875, - "name": "int56", - "nodeType": "ElementaryTypeName", - "src": "902:5:26", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 4878, - "mutability": "mutable", - "name": "secondsPerLiquidityCumulativeX128", - "nodeType": "VariableDeclaration", - "scope": 4881, - "src": "1048:41:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "typeName": { - "id": 4877, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "1048:7:26", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 4880, - "mutability": "mutable", - "name": "initialized", - "nodeType": "VariableDeclaration", - "scope": 4881, - "src": "1156:16:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 4879, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "1156:4:26", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "name": "Observation", - "nodeType": "StructDefinition", - "scope": 5604, - "src": "697:482:26", - "visibility": "public" - }, - { - "body": { - "id": 4935, - "nodeType": "Block", - "src": "1982:455:26", - "statements": [ - { - "assignments": [ - 4896 - ], - "declarations": [ - { - "constant": false, - "id": 4896, - "mutability": "mutable", - "name": "delta", - "nodeType": "VariableDeclaration", - "scope": 4935, - "src": "1992:12:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 4895, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "1992:6:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "visibility": "internal" - } - ], - "id": 4901, - "initialValue": { - "commonType": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "id": 4900, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 4897, - "name": "blockTimestamp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4886, - "src": "2007:14:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "expression": { - "id": 4898, - "name": "last", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4884, - "src": "2024:4:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_memory_ptr", - "typeString": "struct Oracle.Observation memory" - } - }, - "id": 4899, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "blockTimestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": 4874, - "src": "2024:19:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "src": "2007:36:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1992:51:26" - }, - { - "expression": { - "arguments": [ - { - "id": 4903, - "name": "blockTimestamp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4886, - "src": "2118:14:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - { - "commonType": { - "typeIdentifier": "t_int56", - "typeString": "int56" - }, - "id": 4912, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 4904, - "name": "last", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4884, - "src": "2166:4:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_memory_ptr", - "typeString": "struct Oracle.Observation memory" - } - }, - "id": 4905, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "tickCumulative", - "nodeType": "MemberAccess", - "referencedDeclaration": 4876, - "src": "2166:19:26", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_int56", - "typeString": "int56" - }, - "id": 4911, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "arguments": [ - { - "id": 4908, - "name": "tick", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4888, - "src": "2194:4:26", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - ], - "id": 4907, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2188:5:26", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_int56_$", - "typeString": "type(int56)" - }, - "typeName": { - "id": 4906, - "name": "int56", - "nodeType": "ElementaryTypeName", - "src": "2188:5:26", - "typeDescriptions": {} - } - }, - "id": 4909, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2188:11:26", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "id": 4910, - "name": "delta", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4896, - "src": "2202:5:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "src": "2188:19:26", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - } - }, - "src": "2166:41:26", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - } - }, - { - "commonType": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "id": 4931, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 4913, - "name": "last", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4884, - "src": "2260:4:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_memory_ptr", - "typeString": "struct Oracle.Observation memory" - } - }, - "id": 4914, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "secondsPerLiquidityCumulativeX128", - "nodeType": "MemberAccess", - "referencedDeclaration": 4878, - "src": "2260:38:26", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "id": 4929, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "id": 4920, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "arguments": [ - { - "id": 4917, - "name": "delta", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4896, - "src": "2331:5:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - ], - "id": 4916, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2323:7:26", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint160_$", - "typeString": "type(uint160)" - }, - "typeName": { - "id": 4915, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "2323:7:26", - "typeDescriptions": {} - } - }, - "id": 4918, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2323:14:26", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "nodeType": "BinaryOperation", - "operator": "<<", - "rightExpression": { - "hexValue": "313238", - "id": 4919, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2341:3:26", - "typeDescriptions": { - "typeIdentifier": "t_rational_128_by_1", - "typeString": "int_const 128" - }, - "value": "128" - }, - "src": "2323:21:26", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - } - ], - "id": 4921, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "2322:23:26", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "components": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "id": 4924, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 4922, - "name": "liquidity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4890, - "src": "2349:9:26", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 4923, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2361:1:26", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2349:13:26", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseExpression": { - "hexValue": "31", - "id": 4926, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2377:1:26", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "id": 4927, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "Conditional", - "src": "2349:29:26", - "trueExpression": { - "id": 4925, - "name": "liquidity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4890, - "src": "2365:9:26", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - } - ], - "id": 4928, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "2348:31:26", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "src": "2322:57:26", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - } - ], - "id": 4930, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "2321:59:26", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "src": "2260:120:26", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - { - "hexValue": "74727565", - "id": 4932, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2411:4:26", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - { - "typeIdentifier": "t_int56", - "typeString": "int56" - }, - { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 4902, - "name": "Observation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4881, - "src": "2072:11:26", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_Observation_$4881_storage_ptr_$", - "typeString": "type(struct Oracle.Observation storage pointer)" - } - }, - "id": 4933, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "structConstructorCall", - "lValueRequested": false, - "names": [ - "blockTimestamp", - "tickCumulative", - "secondsPerLiquidityCumulativeX128", - "initialized" - ], - "nodeType": "FunctionCall", - "src": "2072:358:26", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_memory_ptr", - "typeString": "struct Oracle.Observation memory" - } - }, - "functionReturnParameters": 4894, - "id": 4934, - "nodeType": "Return", - "src": "2053:377:26" - } - ] - }, - "documentation": { - "id": 4882, - "nodeType": "StructuredDocumentation", - "src": "1185:614:26", - "text": "@notice Transforms a previous observation into a new observation, given the passage of time and the current tick and liquidity values\n @dev blockTimestamp _must_ be chronologically equal to or greater than last.blockTimestamp, safe for 0 or 1 overflows\n @param last The specified observation to be transformed\n @param blockTimestamp The timestamp of the new observation\n @param tick The active tick at the time of the new observation\n @param liquidity The total in-range liquidity at the time of the new observation\n @return Observation The newly populated observation" - }, - "id": 4936, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "transform", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 4891, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 4884, - "mutability": "mutable", - "name": "last", - "nodeType": "VariableDeclaration", - "scope": 4936, - "src": "1832:23:26", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_memory_ptr", - "typeString": "struct Oracle.Observation" - }, - "typeName": { - "id": 4883, - "name": "Observation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 4881, - "src": "1832:11:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_storage_ptr", - "typeString": "struct Oracle.Observation" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 4886, - "mutability": "mutable", - "name": "blockTimestamp", - "nodeType": "VariableDeclaration", - "scope": 4936, - "src": "1865:21:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 4885, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "1865:6:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 4888, - "mutability": "mutable", - "name": "tick", - "nodeType": "VariableDeclaration", - "scope": 4936, - "src": "1896:10:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 4887, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "1896:5:26", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 4890, - "mutability": "mutable", - "name": "liquidity", - "nodeType": "VariableDeclaration", - "scope": 4936, - "src": "1916:17:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "typeName": { - "id": 4889, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "1916:7:26", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "visibility": "internal" - } - ], - "src": "1822:117:26" - }, - "returnParameters": { - "id": 4894, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 4893, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 4936, - "src": "1962:18:26", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_memory_ptr", - "typeString": "struct Oracle.Observation" - }, - "typeName": { - "id": 4892, - "name": "Observation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 4881, - "src": "1962:11:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_storage_ptr", - "typeString": "struct Oracle.Observation" - } - }, - "visibility": "internal" - } - ], - "src": "1961:20:26" - }, - "scope": 5604, - "src": "1804:633:26", - "stateMutability": "pure", - "virtual": false, - "visibility": "private" - }, - { - "body": { - "id": 4965, - "nodeType": "Block", - "src": "3036:219:26", - "statements": [ - { - "expression": { - "id": 4959, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "id": 4950, - "name": "self", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4941, - "src": "3046:4:26", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Observation_$4881_storage_$65535_storage_ptr", - "typeString": "struct Oracle.Observation storage ref[65535] storage pointer" - } - }, - "id": 4952, - "indexExpression": { - "hexValue": "30", - "id": 4951, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3051:1:26", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "3046:7:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_storage", - "typeString": "struct Oracle.Observation storage ref" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 4954, - "name": "time", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4943, - "src": "3098:4:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - { - "hexValue": "30", - "id": 4955, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3132:1:26", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - { - "hexValue": "30", - "id": 4956, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3182:1:26", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - { - "hexValue": "74727565", - "id": 4957, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3210:4:26", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 4953, - "name": "Observation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4881, - "src": "3056:11:26", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_Observation_$4881_storage_ptr_$", - "typeString": "type(struct Oracle.Observation storage pointer)" - } - }, - "id": 4958, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "structConstructorCall", - "lValueRequested": false, - "names": [ - "blockTimestamp", - "tickCumulative", - "secondsPerLiquidityCumulativeX128", - "initialized" - ], - "nodeType": "FunctionCall", - "src": "3056:169:26", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_memory_ptr", - "typeString": "struct Oracle.Observation memory" - } - }, - "src": "3046:179:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_storage", - "typeString": "struct Oracle.Observation storage ref" - } - }, - "id": 4960, - "nodeType": "ExpressionStatement", - "src": "3046:179:26" - }, - { - "expression": { - "components": [ - { - "hexValue": "31", - "id": 4961, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3243:1:26", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - { - "hexValue": "31", - "id": 4962, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3246:1:26", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - } - ], - "id": 4963, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "3242:6:26", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_rational_1_by_1_$_t_rational_1_by_1_$", - "typeString": "tuple(int_const 1,int_const 1)" - } - }, - "functionReturnParameters": 4949, - "id": 4964, - "nodeType": "Return", - "src": "3235:13:26" - } - ] - }, - "documentation": { - "id": 4937, - "nodeType": "StructuredDocumentation", - "src": "2443:440:26", - "text": "@notice Initialize the oracle array by writing the first slot. Called once for the lifecycle of the observations array\n @param self The stored oracle array\n @param time The time of the oracle initialization, via block.timestamp truncated to uint32\n @return cardinality The number of populated elements in the oracle array\n @return cardinalityNext The new length of the oracle array, independent of population" - }, - "id": 4966, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "initialize", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 4944, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 4941, - "mutability": "mutable", - "name": "self", - "nodeType": "VariableDeclaration", - "scope": 4966, - "src": "2908:31:26", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Observation_$4881_storage_$65535_storage_ptr", - "typeString": "struct Oracle.Observation[65535]" - }, - "typeName": { - "baseType": { - "id": 4938, - "name": "Observation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 4881, - "src": "2908:11:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_storage_ptr", - "typeString": "struct Oracle.Observation" - } - }, - "id": 4940, - "length": { - "hexValue": "3635353335", - "id": 4939, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2920:5:26", - "typeDescriptions": { - "typeIdentifier": "t_rational_65535_by_1", - "typeString": "int_const 65535" - }, - "value": "65535" - }, - "nodeType": "ArrayTypeName", - "src": "2908:18:26", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Observation_$4881_storage_$65535_storage_ptr", - "typeString": "struct Oracle.Observation[65535]" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 4943, - "mutability": "mutable", - "name": "time", - "nodeType": "VariableDeclaration", - "scope": 4966, - "src": "2941:11:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 4942, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "2941:6:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "visibility": "internal" - } - ], - "src": "2907:46:26" - }, - "returnParameters": { - "id": 4949, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 4946, - "mutability": "mutable", - "name": "cardinality", - "nodeType": "VariableDeclaration", - "scope": 4966, - "src": "2988:18:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - "typeName": { - "id": 4945, - "name": "uint16", - "nodeType": "ElementaryTypeName", - "src": "2988:6:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 4948, - "mutability": "mutable", - "name": "cardinalityNext", - "nodeType": "VariableDeclaration", - "scope": 4966, - "src": "3008:22:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - "typeName": { - "id": 4947, - "name": "uint16", - "nodeType": "ElementaryTypeName", - "src": "3008:6:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "visibility": "internal" - } - ], - "src": "2987:44:26" - }, - "scope": 5604, - "src": "2888:367:26", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 5046, - "nodeType": "Block", - "src": "4720:614:26", - "statements": [ - { - "assignments": [ - 4991 - ], - "declarations": [ - { - "constant": false, - "id": 4991, - "mutability": "mutable", - "name": "last", - "nodeType": "VariableDeclaration", - "scope": 5046, - "src": "4730:23:26", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_memory_ptr", - "typeString": "struct Oracle.Observation" - }, - "typeName": { - "id": 4990, - "name": "Observation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 4881, - "src": "4730:11:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_storage_ptr", - "typeString": "struct Oracle.Observation" - } - }, - "visibility": "internal" - } - ], - "id": 4995, - "initialValue": { - "baseExpression": { - "id": 4992, - "name": "self", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4971, - "src": "4756:4:26", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Observation_$4881_storage_$65535_storage_ptr", - "typeString": "struct Oracle.Observation storage ref[65535] storage pointer" - } - }, - "id": 4994, - "indexExpression": { - "id": 4993, - "name": "index", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4973, - "src": "4761:5:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4756:11:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_storage", - "typeString": "struct Oracle.Observation storage ref" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "4730:37:26" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "id": 4999, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 4996, - "name": "last", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4991, - "src": "4857:4:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_memory_ptr", - "typeString": "struct Oracle.Observation memory" - } - }, - "id": 4997, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "blockTimestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": 4874, - "src": "4857:19:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "id": 4998, - "name": "blockTimestamp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4975, - "src": "4880:14:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "src": "4857:37:26", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 5004, - "nodeType": "IfStatement", - "src": "4853:70:26", - "trueBody": { - "expression": { - "components": [ - { - "id": 5000, - "name": "index", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4973, - "src": "4904:5:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - { - "id": 5001, - "name": "cardinality", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4981, - "src": "4911:11:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - } - ], - "id": 5002, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "4903:20:26", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint16_$_t_uint16_$", - "typeString": "tuple(uint16,uint16)" - } - }, - "functionReturnParameters": 4989, - "id": 5003, - "nodeType": "Return", - "src": "4896:27:26" - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 5014, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - "id": 5007, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 5005, - "name": "cardinalityNext", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4983, - "src": "5006:15:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "id": 5006, - "name": "cardinality", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4981, - "src": "5024:11:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "src": "5006:29:26", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - "id": 5013, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 5008, - "name": "index", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4973, - "src": "5039:5:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - "id": 5011, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 5009, - "name": "cardinality", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4981, - "src": "5049:11:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "hexValue": "31", - "id": 5010, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5063:1:26", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "5049:15:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - } - ], - "id": 5012, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "5048:17:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "src": "5039:26:26", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "5006:59:26", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 5024, - "nodeType": "Block", - "src": "5134:57:26", - "statements": [ - { - "expression": { - "id": 5022, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 5020, - "name": "cardinalityUpdated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4988, - "src": "5148:18:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 5021, - "name": "cardinality", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4981, - "src": "5169:11:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "src": "5148:32:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "id": 5023, - "nodeType": "ExpressionStatement", - "src": "5148:32:26" - } - ] - }, - "id": 5025, - "nodeType": "IfStatement", - "src": "5002:189:26", - "trueBody": { - "id": 5019, - "nodeType": "Block", - "src": "5067:61:26", - "statements": [ - { - "expression": { - "id": 5017, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 5015, - "name": "cardinalityUpdated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4988, - "src": "5081:18:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 5016, - "name": "cardinalityNext", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4983, - "src": "5102:15:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "src": "5081:36:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "id": 5018, - "nodeType": "ExpressionStatement", - "src": "5081:36:26" - } - ] - } - }, - { - "expression": { - "id": 5033, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 5026, - "name": "indexUpdated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4986, - "src": "5201:12:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - "id": 5032, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - "id": 5029, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 5027, - "name": "index", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4973, - "src": "5217:5:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "hexValue": "31", - "id": 5028, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5225:1:26", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "5217:9:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - } - ], - "id": 5030, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "5216:11:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "BinaryOperation", - "operator": "%", - "rightExpression": { - "id": 5031, - "name": "cardinalityUpdated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4988, - "src": "5230:18:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "src": "5216:32:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "src": "5201:47:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "id": 5034, - "nodeType": "ExpressionStatement", - "src": "5201:47:26" - }, - { - "expression": { - "id": 5044, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "id": 5035, - "name": "self", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4971, - "src": "5258:4:26", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Observation_$4881_storage_$65535_storage_ptr", - "typeString": "struct Oracle.Observation storage ref[65535] storage pointer" - } - }, - "id": 5037, - "indexExpression": { - "id": 5036, - "name": "indexUpdated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4986, - "src": "5263:12:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "5258:18:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_storage", - "typeString": "struct Oracle.Observation storage ref" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 5039, - "name": "last", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4991, - "src": "5289:4:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_memory_ptr", - "typeString": "struct Oracle.Observation memory" - } - }, - { - "id": 5040, - "name": "blockTimestamp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4975, - "src": "5295:14:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - { - "id": 5041, - "name": "tick", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4977, - "src": "5311:4:26", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - { - "id": 5042, - "name": "liquidity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4979, - "src": "5317:9:26", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_struct$_Observation_$4881_memory_ptr", - "typeString": "struct Oracle.Observation memory" - }, - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - ], - "id": 5038, - "name": "transform", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4936, - "src": "5279:9:26", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_struct$_Observation_$4881_memory_ptr_$_t_uint32_$_t_int24_$_t_uint128_$returns$_t_struct$_Observation_$4881_memory_ptr_$", - "typeString": "function (struct Oracle.Observation memory,uint32,int24,uint128) pure returns (struct Oracle.Observation memory)" - } - }, - "id": 5043, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5279:48:26", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_memory_ptr", - "typeString": "struct Oracle.Observation memory" - } - }, - "src": "5258:69:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_storage", - "typeString": "struct Oracle.Observation storage ref" - } - }, - "id": 5045, - "nodeType": "ExpressionStatement", - "src": "5258:69:26" - } - ] - }, - "documentation": { - "id": 4967, - "nodeType": "StructuredDocumentation", - "src": "3261:1166:26", - "text": "@notice Writes an oracle observation to the array\n @dev Writable at most once per block. Index represents the most recently written element. cardinality and index must be tracked externally.\n If the index is at the end of the allowable array length (according to cardinality), and the next cardinality\n is greater than the current one, cardinality may be increased. This restriction is created to preserve ordering.\n @param self The stored oracle array\n @param index The index of the observation that was most recently written to the observations array\n @param blockTimestamp The timestamp of the new observation\n @param tick The active tick at the time of the new observation\n @param liquidity The total in-range liquidity at the time of the new observation\n @param cardinality The number of populated elements in the oracle array\n @param cardinalityNext The new length of the oracle array, independent of population\n @return indexUpdated The new index of the most recently written element in the oracle array\n @return cardinalityUpdated The new cardinality of the oracle array" - }, - "id": 5047, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "write", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 4984, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 4971, - "mutability": "mutable", - "name": "self", - "nodeType": "VariableDeclaration", - "scope": 5047, - "src": "4456:31:26", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Observation_$4881_storage_$65535_storage_ptr", - "typeString": "struct Oracle.Observation[65535]" - }, - "typeName": { - "baseType": { - "id": 4968, - "name": "Observation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 4881, - "src": "4456:11:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_storage_ptr", - "typeString": "struct Oracle.Observation" - } - }, - "id": 4970, - "length": { - "hexValue": "3635353335", - "id": 4969, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4468:5:26", - "typeDescriptions": { - "typeIdentifier": "t_rational_65535_by_1", - "typeString": "int_const 65535" - }, - "value": "65535" - }, - "nodeType": "ArrayTypeName", - "src": "4456:18:26", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Observation_$4881_storage_$65535_storage_ptr", - "typeString": "struct Oracle.Observation[65535]" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 4973, - "mutability": "mutable", - "name": "index", - "nodeType": "VariableDeclaration", - "scope": 5047, - "src": "4497:12:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - "typeName": { - "id": 4972, - "name": "uint16", - "nodeType": "ElementaryTypeName", - "src": "4497:6:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 4975, - "mutability": "mutable", - "name": "blockTimestamp", - "nodeType": "VariableDeclaration", - "scope": 5047, - "src": "4519:21:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 4974, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "4519:6:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 4977, - "mutability": "mutable", - "name": "tick", - "nodeType": "VariableDeclaration", - "scope": 5047, - "src": "4550:10:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 4976, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "4550:5:26", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 4979, - "mutability": "mutable", - "name": "liquidity", - "nodeType": "VariableDeclaration", - "scope": 5047, - "src": "4570:17:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "typeName": { - "id": 4978, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "4570:7:26", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 4981, - "mutability": "mutable", - "name": "cardinality", - "nodeType": "VariableDeclaration", - "scope": 5047, - "src": "4597:18:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - "typeName": { - "id": 4980, - "name": "uint16", - "nodeType": "ElementaryTypeName", - "src": "4597:6:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 4983, - "mutability": "mutable", - "name": "cardinalityNext", - "nodeType": "VariableDeclaration", - "scope": 5047, - "src": "4625:22:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - "typeName": { - "id": 4982, - "name": "uint16", - "nodeType": "ElementaryTypeName", - "src": "4625:6:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "visibility": "internal" - } - ], - "src": "4446:207:26" - }, - "returnParameters": { - "id": 4989, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 4986, - "mutability": "mutable", - "name": "indexUpdated", - "nodeType": "VariableDeclaration", - "scope": 5047, - "src": "4672:19:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - "typeName": { - "id": 4985, - "name": "uint16", - "nodeType": "ElementaryTypeName", - "src": "4672:6:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 4988, - "mutability": "mutable", - "name": "cardinalityUpdated", - "nodeType": "VariableDeclaration", - "scope": 5047, - "src": "4693:25:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - "typeName": { - "id": 4987, - "name": "uint16", - "nodeType": "ElementaryTypeName", - "src": "4693:6:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "visibility": "internal" - } - ], - "src": "4671:48:26" - }, - "scope": 5604, - "src": "4432:902:26", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 5094, - "nodeType": "Block", - "src": "5845:417:26", - "statements": [ - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - "id": 5064, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 5062, - "name": "current", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5054, - "src": "5863:7:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 5063, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5873:1:26", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "5863:11:26", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "49", - "id": 5065, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5876:3:26", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_8d61ecf6e15472e15b1a0f63cd77f62aa57e6edcd3871d7a841f1056fb42b216", - "typeString": "literal_string \"I\"" - }, - "value": "I" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_8d61ecf6e15472e15b1a0f63cd77f62aa57e6edcd3871d7a841f1056fb42b216", - "typeString": "literal_string \"I\"" - } - ], - "id": 5061, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "5855:7:26", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 5066, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5855:25:26", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 5067, - "nodeType": "ExpressionStatement", - "src": "5855:25:26" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - "id": 5070, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 5068, - "name": "next", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5056, - "src": "5978:4:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "id": 5069, - "name": "current", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5054, - "src": "5986:7:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "src": "5978:15:26", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 5073, - "nodeType": "IfStatement", - "src": "5974:35:26", - "trueBody": { - "expression": { - "id": 5071, - "name": "current", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5054, - "src": "6002:7:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "functionReturnParameters": 5060, - "id": 5072, - "nodeType": "Return", - "src": "5995:14:26" - } - }, - { - "body": { - "expression": { - "id": 5089, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "baseExpression": { - "id": 5084, - "name": "self", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5052, - "src": "6208:4:26", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Observation_$4881_storage_$65535_storage_ptr", - "typeString": "struct Oracle.Observation storage ref[65535] storage pointer" - } - }, - "id": 5086, - "indexExpression": { - "id": 5085, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5075, - "src": "6213:1:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "6208:7:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_storage", - "typeString": "struct Oracle.Observation storage ref" - } - }, - "id": 5087, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "blockTimestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": 4874, - "src": "6208:22:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "31", - "id": 5088, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6233:1:26", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "6208:26:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "id": 5090, - "nodeType": "ExpressionStatement", - "src": "6208:26:26" - }, - "condition": { - "commonType": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - "id": 5080, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 5078, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5075, - "src": "6193:1:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "id": 5079, - "name": "next", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5056, - "src": "6197:4:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "src": "6193:8:26", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 5091, - "initializationExpression": { - "assignments": [ - 5075 - ], - "declarations": [ - { - "constant": false, - "id": 5075, - "mutability": "mutable", - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 5091, - "src": "6173:8:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - "typeName": { - "id": 5074, - "name": "uint16", - "nodeType": "ElementaryTypeName", - "src": "6173:6:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "visibility": "internal" - } - ], - "id": 5077, - "initialValue": { - "id": 5076, - "name": "current", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5054, - "src": "6184:7:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "6173:18:26" - }, - "loopExpression": { - "expression": { - "id": 5082, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "6203:3:26", - "subExpression": { - "id": 5081, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5075, - "src": "6203:1:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "id": 5083, - "nodeType": "ExpressionStatement", - "src": "6203:3:26" - }, - "nodeType": "ForStatement", - "src": "6168:66:26" - }, - { - "expression": { - "id": 5092, - "name": "next", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5056, - "src": "6251:4:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "functionReturnParameters": 5060, - "id": 5093, - "nodeType": "Return", - "src": "6244:11:26" - } - ] - }, - "documentation": { - "id": 5048, - "nodeType": "StructuredDocumentation", - "src": "5340:368:26", - "text": "@notice Prepares the oracle array to store up to `next` observations\n @param self The stored oracle array\n @param current The current next cardinality of the oracle array\n @param next The proposed next cardinality which will be populated in the oracle array\n @return next The next cardinality which will be populated in the oracle array" - }, - "id": 5095, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "grow", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 5057, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 5052, - "mutability": "mutable", - "name": "self", - "nodeType": "VariableDeclaration", - "scope": 5095, - "src": "5736:31:26", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Observation_$4881_storage_$65535_storage_ptr", - "typeString": "struct Oracle.Observation[65535]" - }, - "typeName": { - "baseType": { - "id": 5049, - "name": "Observation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 4881, - "src": "5736:11:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_storage_ptr", - "typeString": "struct Oracle.Observation" - } - }, - "id": 5051, - "length": { - "hexValue": "3635353335", - "id": 5050, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5748:5:26", - "typeDescriptions": { - "typeIdentifier": "t_rational_65535_by_1", - "typeString": "int_const 65535" - }, - "value": "65535" - }, - "nodeType": "ArrayTypeName", - "src": "5736:18:26", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Observation_$4881_storage_$65535_storage_ptr", - "typeString": "struct Oracle.Observation[65535]" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 5054, - "mutability": "mutable", - "name": "current", - "nodeType": "VariableDeclaration", - "scope": 5095, - "src": "5777:14:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - "typeName": { - "id": 5053, - "name": "uint16", - "nodeType": "ElementaryTypeName", - "src": "5777:6:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 5056, - "mutability": "mutable", - "name": "next", - "nodeType": "VariableDeclaration", - "scope": 5095, - "src": "5801:11:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - "typeName": { - "id": 5055, - "name": "uint16", - "nodeType": "ElementaryTypeName", - "src": "5801:6:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "visibility": "internal" - } - ], - "src": "5726:92:26" - }, - "returnParameters": { - "id": 5060, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 5059, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 5095, - "src": "5837:6:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - "typeName": { - "id": 5058, - "name": "uint16", - "nodeType": "ElementaryTypeName", - "src": "5837:6:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "visibility": "internal" - } - ], - "src": "5836:8:26" - }, - "scope": 5604, - "src": "5713:549:26", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 5149, - "nodeType": "Block", - "src": "6800:267:26", - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 5113, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "id": 5109, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 5107, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5100, - "src": "6874:1:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "id": 5108, - "name": "time", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5098, - "src": "6879:4:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "src": "6874:9:26", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "id": 5112, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 5110, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5102, - "src": "6887:1:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "id": 5111, - "name": "time", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5098, - "src": "6892:4:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "src": "6887:9:26", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "6874:22:26", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 5118, - "nodeType": "IfStatement", - "src": "6870:41:26", - "trueBody": { - "expression": { - "commonType": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "id": 5116, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 5114, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5100, - "src": "6905:1:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "id": 5115, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5102, - "src": "6910:1:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "src": "6905:6:26", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "functionReturnParameters": 5106, - "id": 5117, - "nodeType": "Return", - "src": "6898:13:26" - } - }, - { - "assignments": [ - 5120 - ], - "declarations": [ - { - "constant": false, - "id": 5120, - "mutability": "mutable", - "name": "aAdjusted", - "nodeType": "VariableDeclaration", - "scope": 5149, - "src": "6922:17:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 5119, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6922:7:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 5131, - "initialValue": { - "condition": { - "commonType": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "id": 5123, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 5121, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5100, - "src": "6942:1:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "id": 5122, - "name": "time", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5098, - "src": "6946:4:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "src": "6942:8:26", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseExpression": { - "commonType": { - "typeIdentifier": "t_uint40", - "typeString": "uint40" - }, - "id": 5129, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 5125, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5100, - "src": "6957:1:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_rational_4294967296_by_1", - "typeString": "int_const 4294967296" - }, - "id": 5128, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "leftExpression": { - "hexValue": "32", - "id": 5126, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6961:1:26", - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "nodeType": "BinaryOperation", - "operator": "**", - "rightExpression": { - "hexValue": "3332", - "id": 5127, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6964:2:26", - "typeDescriptions": { - "typeIdentifier": "t_rational_32_by_1", - "typeString": "int_const 32" - }, - "value": "32" - }, - "src": "6961:5:26", - "typeDescriptions": { - "typeIdentifier": "t_rational_4294967296_by_1", - "typeString": "int_const 4294967296" - } - }, - "src": "6957:9:26", - "typeDescriptions": { - "typeIdentifier": "t_uint40", - "typeString": "uint40" - } - }, - "id": 5130, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "Conditional", - "src": "6942:24:26", - "trueExpression": { - "id": 5124, - "name": "a", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5100, - "src": "6953:1:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint40", - "typeString": "uint40" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "6922:44:26" - }, - { - "assignments": [ - 5133 - ], - "declarations": [ - { - "constant": false, - "id": 5133, - "mutability": "mutable", - "name": "bAdjusted", - "nodeType": "VariableDeclaration", - "scope": 5149, - "src": "6976:17:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 5132, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6976:7:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 5144, - "initialValue": { - "condition": { - "commonType": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "id": 5136, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 5134, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5102, - "src": "6996:1:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "id": 5135, - "name": "time", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5098, - "src": "7000:4:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "src": "6996:8:26", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseExpression": { - "commonType": { - "typeIdentifier": "t_uint40", - "typeString": "uint40" - }, - "id": 5142, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 5138, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5102, - "src": "7011:1:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_rational_4294967296_by_1", - "typeString": "int_const 4294967296" - }, - "id": 5141, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "leftExpression": { - "hexValue": "32", - "id": 5139, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7015:1:26", - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "nodeType": "BinaryOperation", - "operator": "**", - "rightExpression": { - "hexValue": "3332", - "id": 5140, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7018:2:26", - "typeDescriptions": { - "typeIdentifier": "t_rational_32_by_1", - "typeString": "int_const 32" - }, - "value": "32" - }, - "src": "7015:5:26", - "typeDescriptions": { - "typeIdentifier": "t_rational_4294967296_by_1", - "typeString": "int_const 4294967296" - } - }, - "src": "7011:9:26", - "typeDescriptions": { - "typeIdentifier": "t_uint40", - "typeString": "uint40" - } - }, - "id": 5143, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "Conditional", - "src": "6996:24:26", - "trueExpression": { - "id": 5137, - "name": "b", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5102, - "src": "7007:1:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint40", - "typeString": "uint40" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "6976:44:26" - }, - { - "expression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 5147, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 5145, - "name": "aAdjusted", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5120, - "src": "7038:9:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "id": 5146, - "name": "bAdjusted", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5133, - "src": "7051:9:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "7038:22:26", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "functionReturnParameters": 5106, - "id": 5148, - "nodeType": "Return", - "src": "7031:29:26" - } - ] - }, - "documentation": { - "id": 5096, - "nodeType": "StructuredDocumentation", - "src": "6268:423:26", - "text": "@notice comparator for 32-bit timestamps\n @dev safe for 0 or 1 overflows, a and b _must_ be chronologically before or equal to time\n @param time A timestamp truncated to 32 bits\n @param a A comparison timestamp from which to determine the relative position of `time`\n @param b From which to determine the relative position of `time`\n @return bool Whether `a` is chronologically <= `b`" - }, - "id": 5150, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "lte", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 5103, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 5098, - "mutability": "mutable", - "name": "time", - "nodeType": "VariableDeclaration", - "scope": 5150, - "src": "6718:11:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 5097, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "6718:6:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 5100, - "mutability": "mutable", - "name": "a", - "nodeType": "VariableDeclaration", - "scope": 5150, - "src": "6739:8:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 5099, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "6739:6:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 5102, - "mutability": "mutable", - "name": "b", - "nodeType": "VariableDeclaration", - "scope": 5150, - "src": "6757:8:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 5101, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "6757:6:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "visibility": "internal" - } - ], - "src": "6708:63:26" - }, - "returnParameters": { - "id": 5106, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 5105, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 5150, - "src": "6794:4:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 5104, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "6794:4:26", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "src": "6793:6:26" - }, - "scope": 5604, - "src": "6696:371:26", - "stateMutability": "pure", - "virtual": false, - "visibility": "private" - }, - { - "body": { - "id": 5267, - "nodeType": "Block", - "src": "8268:818:26", - "statements": [ - { - "assignments": [ - 5171 - ], - "declarations": [ - { - "constant": false, - "id": 5171, - "mutability": "mutable", - "name": "l", - "nodeType": "VariableDeclaration", - "scope": 5267, - "src": "8278:9:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 5170, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8278:7:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 5178, - "initialValue": { - "commonType": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - "id": 5177, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - "id": 5174, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 5172, - "name": "index", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5161, - "src": "8291:5:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "hexValue": "31", - "id": 5173, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8299:1:26", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "8291:9:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - } - ], - "id": 5175, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "8290:11:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "BinaryOperation", - "operator": "%", - "rightExpression": { - "id": 5176, - "name": "cardinality", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5163, - "src": "8304:11:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "src": "8290:25:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "8278:37:26" - }, - { - "assignments": [ - 5180 - ], - "declarations": [ - { - "constant": false, - "id": 5180, - "mutability": "mutable", - "name": "r", - "nodeType": "VariableDeclaration", - "scope": 5267, - "src": "8347:9:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 5179, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8347:7:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 5186, - "initialValue": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 5185, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 5183, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 5181, - "name": "l", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5171, - "src": "8359:1:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "id": 5182, - "name": "cardinality", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5163, - "src": "8363:11:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "src": "8359:15:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "hexValue": "31", - "id": 5184, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8377:1:26", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "8359:19:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "8347:31:26" - }, - { - "assignments": [ - 5188 - ], - "declarations": [ - { - "constant": false, - "id": 5188, - "mutability": "mutable", - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 5267, - "src": "8410:9:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 5187, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8410:7:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 5189, - "nodeType": "VariableDeclarationStatement", - "src": "8410:9:26" - }, - { - "body": { - "id": 5265, - "nodeType": "Block", - "src": "8442:638:26", - "statements": [ - { - "expression": { - "id": 5198, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 5191, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5188, - "src": "8456:1:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 5197, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 5194, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 5192, - "name": "l", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5171, - "src": "8461:1:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "id": 5193, - "name": "r", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5180, - "src": "8465:1:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "8461:5:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 5195, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "8460:7:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "hexValue": "32", - "id": 5196, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8470:1:26", - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "src": "8460:11:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "8456:15:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 5199, - "nodeType": "ExpressionStatement", - "src": "8456:15:26" - }, - { - "expression": { - "id": 5206, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 5200, - "name": "beforeOrAt", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5166, - "src": "8486:10:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_memory_ptr", - "typeString": "struct Oracle.Observation memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "baseExpression": { - "id": 5201, - "name": "self", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5155, - "src": "8499:4:26", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Observation_$4881_storage_$65535_storage_ptr", - "typeString": "struct Oracle.Observation storage ref[65535] storage pointer" - } - }, - "id": 5205, - "indexExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 5204, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 5202, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5188, - "src": "8504:1:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "%", - "rightExpression": { - "id": 5203, - "name": "cardinality", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5163, - "src": "8508:11:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "src": "8504:15:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8499:21:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_storage", - "typeString": "struct Oracle.Observation storage ref" - } - }, - "src": "8486:34:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_memory_ptr", - "typeString": "struct Oracle.Observation memory" - } - }, - "id": 5207, - "nodeType": "ExpressionStatement", - "src": "8486:34:26" - }, - { - "condition": { - "id": 5210, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "8631:23:26", - "subExpression": { - "expression": { - "id": 5208, - "name": "beforeOrAt", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5166, - "src": "8632:10:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_memory_ptr", - "typeString": "struct Oracle.Observation memory" - } - }, - "id": 5209, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "initialized", - "nodeType": "MemberAccess", - "referencedDeclaration": 4880, - "src": "8632:22:26", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 5219, - "nodeType": "IfStatement", - "src": "8627:97:26", - "trueBody": { - "id": 5218, - "nodeType": "Block", - "src": "8656:68:26", - "statements": [ - { - "expression": { - "id": 5215, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 5211, - "name": "l", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5171, - "src": "8674:1:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 5214, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 5212, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5188, - "src": "8678:1:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "hexValue": "31", - "id": 5213, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8682:1:26", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "8678:5:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "8674:9:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 5216, - "nodeType": "ExpressionStatement", - "src": "8674:9:26" - }, - { - "id": 5217, - "nodeType": "Continue", - "src": "8701:8:26" - } - ] - } - }, - { - "expression": { - "id": 5229, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 5220, - "name": "atOrAfter", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5168, - "src": "8738:9:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_memory_ptr", - "typeString": "struct Oracle.Observation memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "baseExpression": { - "id": 5221, - "name": "self", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5155, - "src": "8750:4:26", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Observation_$4881_storage_$65535_storage_ptr", - "typeString": "struct Oracle.Observation storage ref[65535] storage pointer" - } - }, - "id": 5228, - "indexExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 5227, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 5224, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 5222, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5188, - "src": "8756:1:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "hexValue": "31", - "id": 5223, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8760:1:26", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "8756:5:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 5225, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "8755:7:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "%", - "rightExpression": { - "id": 5226, - "name": "cardinality", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5163, - "src": "8765:11:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "src": "8755:21:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8750:27:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_storage", - "typeString": "struct Oracle.Observation storage ref" - } - }, - "src": "8738:39:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_memory_ptr", - "typeString": "struct Oracle.Observation memory" - } - }, - "id": 5230, - "nodeType": "ExpressionStatement", - "src": "8738:39:26" - }, - { - "assignments": [ - 5232 - ], - "declarations": [ - { - "constant": false, - "id": 5232, - "mutability": "mutable", - "name": "targetAtOrAfter", - "nodeType": "VariableDeclaration", - "scope": 5265, - "src": "8792:20:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 5231, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "8792:4:26", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "id": 5239, - "initialValue": { - "arguments": [ - { - "id": 5234, - "name": "time", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5157, - "src": "8819:4:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - { - "expression": { - "id": 5235, - "name": "beforeOrAt", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5166, - "src": "8825:10:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_memory_ptr", - "typeString": "struct Oracle.Observation memory" - } - }, - "id": 5236, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "blockTimestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": 4874, - "src": "8825:25:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - { - "id": 5237, - "name": "target", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5159, - "src": "8852:6:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - ], - "id": 5233, - "name": "lte", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5150, - "src": "8815:3:26", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint32_$_t_uint32_$_t_uint32_$returns$_t_bool_$", - "typeString": "function (uint32,uint32,uint32) pure returns (bool)" - } - }, - "id": 5238, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8815:44:26", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "8792:67:26" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 5247, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 5240, - "name": "targetAtOrAfter", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5232, - "src": "8926:15:26", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "arguments": [ - { - "id": 5242, - "name": "time", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5157, - "src": "8949:4:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - { - "id": 5243, - "name": "target", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5159, - "src": "8955:6:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - { - "expression": { - "id": 5244, - "name": "atOrAfter", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5168, - "src": "8963:9:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_memory_ptr", - "typeString": "struct Oracle.Observation memory" - } - }, - "id": 5245, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "blockTimestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": 4874, - "src": "8963:24:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - ], - "id": 5241, - "name": "lte", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5150, - "src": "8945:3:26", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint32_$_t_uint32_$_t_uint32_$returns$_t_bool_$", - "typeString": "function (uint32,uint32,uint32) pure returns (bool)" - } - }, - "id": 5246, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8945:43:26", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "8926:62:26", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 5249, - "nodeType": "IfStatement", - "src": "8922:73:26", - "trueBody": { - "id": 5248, - "nodeType": "Break", - "src": "8990:5:26" - } - }, - { - "condition": { - "id": 5251, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "9014:16:26", - "subExpression": { - "id": 5250, - "name": "targetAtOrAfter", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5232, - "src": "9015:15:26", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "expression": { - "id": 5262, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 5258, - "name": "l", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5171, - "src": "9060:1:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 5261, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 5259, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5188, - "src": "9064:1:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "hexValue": "31", - "id": 5260, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9068:1:26", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "9064:5:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "9060:9:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 5263, - "nodeType": "ExpressionStatement", - "src": "9060:9:26" - }, - "id": 5264, - "nodeType": "IfStatement", - "src": "9010:59:26", - "trueBody": { - "expression": { - "id": 5256, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 5252, - "name": "r", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5180, - "src": "9032:1:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 5255, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 5253, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5188, - "src": "9036:1:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "hexValue": "31", - "id": 5254, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9040:1:26", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "9036:5:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "9032:9:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 5257, - "nodeType": "ExpressionStatement", - "src": "9032:9:26" - } - } - ] - }, - "condition": { - "hexValue": "74727565", - "id": 5190, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8436:4:26", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "id": 5266, - "nodeType": "WhileStatement", - "src": "8429:651:26" - } - ] - }, - "documentation": { - "id": 5151, - "nodeType": "StructuredDocumentation", - "src": "7073:944:26", - "text": "@notice Fetches the observations beforeOrAt and atOrAfter a target, i.e. where [beforeOrAt, atOrAfter] is satisfied.\n The result may be the same observation, or adjacent observations.\n @dev The answer must be contained in the array, used when the target is located within the stored observation\n boundaries: older than the most recent observation and younger, or the same age as, the oldest observation\n @param self The stored oracle array\n @param time The current block.timestamp\n @param target The timestamp at which the reserved observation should be for\n @param index The index of the observation that was most recently written to the observations array\n @param cardinality The number of populated elements in the oracle array\n @return beforeOrAt The observation recorded before, or at, the target\n @return atOrAfter The observation recorded at, or after, the target" - }, - "id": 5268, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "binarySearch", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 5164, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 5155, - "mutability": "mutable", - "name": "self", - "nodeType": "VariableDeclaration", - "scope": 5268, - "src": "8053:31:26", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Observation_$4881_storage_$65535_storage_ptr", - "typeString": "struct Oracle.Observation[65535]" - }, - "typeName": { - "baseType": { - "id": 5152, - "name": "Observation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 4881, - "src": "8053:11:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_storage_ptr", - "typeString": "struct Oracle.Observation" - } - }, - "id": 5154, - "length": { - "hexValue": "3635353335", - "id": 5153, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8065:5:26", - "typeDescriptions": { - "typeIdentifier": "t_rational_65535_by_1", - "typeString": "int_const 65535" - }, - "value": "65535" - }, - "nodeType": "ArrayTypeName", - "src": "8053:18:26", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Observation_$4881_storage_$65535_storage_ptr", - "typeString": "struct Oracle.Observation[65535]" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 5157, - "mutability": "mutable", - "name": "time", - "nodeType": "VariableDeclaration", - "scope": 5268, - "src": "8094:11:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 5156, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "8094:6:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 5159, - "mutability": "mutable", - "name": "target", - "nodeType": "VariableDeclaration", - "scope": 5268, - "src": "8115:13:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 5158, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "8115:6:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 5161, - "mutability": "mutable", - "name": "index", - "nodeType": "VariableDeclaration", - "scope": 5268, - "src": "8138:12:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - "typeName": { - "id": 5160, - "name": "uint16", - "nodeType": "ElementaryTypeName", - "src": "8138:6:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 5163, - "mutability": "mutable", - "name": "cardinality", - "nodeType": "VariableDeclaration", - "scope": 5268, - "src": "8160:18:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - "typeName": { - "id": 5162, - "name": "uint16", - "nodeType": "ElementaryTypeName", - "src": "8160:6:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "visibility": "internal" - } - ], - "src": "8043:141:26" - }, - "returnParameters": { - "id": 5169, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 5166, - "mutability": "mutable", - "name": "beforeOrAt", - "nodeType": "VariableDeclaration", - "scope": 5268, - "src": "8207:29:26", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_memory_ptr", - "typeString": "struct Oracle.Observation" - }, - "typeName": { - "id": 5165, - "name": "Observation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 4881, - "src": "8207:11:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_storage_ptr", - "typeString": "struct Oracle.Observation" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 5168, - "mutability": "mutable", - "name": "atOrAfter", - "nodeType": "VariableDeclaration", - "scope": 5268, - "src": "8238:28:26", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_memory_ptr", - "typeString": "struct Oracle.Observation" - }, - "typeName": { - "id": 5167, - "name": "Observation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 4881, - "src": "8238:11:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_storage_ptr", - "typeString": "struct Oracle.Observation" - } - }, - "visibility": "internal" - } - ], - "src": "8206:61:26" - }, - "scope": 5604, - "src": "8022:1064:26", - "stateMutability": "view", - "virtual": false, - "visibility": "private" - }, - { - "body": { - "id": 5365, - "nodeType": "Block", - "src": "10417:1118:26", - "statements": [ - { - "expression": { - "id": 5296, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 5292, - "name": "beforeOrAt", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5288, - "src": "10490:10:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_memory_ptr", - "typeString": "struct Oracle.Observation memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "baseExpression": { - "id": 5293, - "name": "self", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5273, - "src": "10503:4:26", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Observation_$4881_storage_$65535_storage_ptr", - "typeString": "struct Oracle.Observation storage ref[65535] storage pointer" - } - }, - "id": 5295, - "indexExpression": { - "id": 5294, - "name": "index", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5281, - "src": "10508:5:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "10503:11:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_storage", - "typeString": "struct Oracle.Observation storage ref" - } - }, - "src": "10490:24:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_memory_ptr", - "typeString": "struct Oracle.Observation memory" - } - }, - "id": 5297, - "nodeType": "ExpressionStatement", - "src": "10490:24:26" - }, - { - "condition": { - "arguments": [ - { - "id": 5299, - "name": "time", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5275, - "src": "10633:4:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - { - "expression": { - "id": 5300, - "name": "beforeOrAt", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5288, - "src": "10639:10:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_memory_ptr", - "typeString": "struct Oracle.Observation memory" - } - }, - "id": 5301, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "blockTimestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": 4874, - "src": "10639:25:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - { - "id": 5302, - "name": "target", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5277, - "src": "10666:6:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - ], - "id": 5298, - "name": "lte", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5150, - "src": "10629:3:26", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint32_$_t_uint32_$_t_uint32_$returns$_t_bool_$", - "typeString": "function (uint32,uint32,uint32) pure returns (bool)" - } - }, - "id": 5303, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10629:44:26", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 5325, - "nodeType": "IfStatement", - "src": "10625:443:26", - "trueBody": { - "id": 5324, - "nodeType": "Block", - "src": "10675:393:26", - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "id": 5307, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 5304, - "name": "beforeOrAt", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5288, - "src": "10693:10:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_memory_ptr", - "typeString": "struct Oracle.Observation memory" - } - }, - "id": 5305, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "blockTimestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": 4874, - "src": "10693:25:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "id": 5306, - "name": "target", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5277, - "src": "10722:6:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "src": "10693:35:26", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 5322, - "nodeType": "Block", - "src": "10907:151:26", - "statements": [ - { - "expression": { - "components": [ - { - "id": 5313, - "name": "beforeOrAt", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5288, - "src": "10984:10:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_memory_ptr", - "typeString": "struct Oracle.Observation memory" - } - }, - { - "arguments": [ - { - "id": 5315, - "name": "beforeOrAt", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5288, - "src": "11006:10:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_memory_ptr", - "typeString": "struct Oracle.Observation memory" - } - }, - { - "id": 5316, - "name": "target", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5277, - "src": "11018:6:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - { - "id": 5317, - "name": "tick", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5279, - "src": "11026:4:26", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - { - "id": 5318, - "name": "liquidity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5283, - "src": "11032:9:26", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_struct$_Observation_$4881_memory_ptr", - "typeString": "struct Oracle.Observation memory" - }, - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - ], - "id": 5314, - "name": "transform", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4936, - "src": "10996:9:26", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_struct$_Observation_$4881_memory_ptr_$_t_uint32_$_t_int24_$_t_uint128_$returns$_t_struct$_Observation_$4881_memory_ptr_$", - "typeString": "function (struct Oracle.Observation memory,uint32,int24,uint128) pure returns (struct Oracle.Observation memory)" - } - }, - "id": 5319, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10996:46:26", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_memory_ptr", - "typeString": "struct Oracle.Observation memory" - } - } - ], - "id": 5320, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "10983:60:26", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_struct$_Observation_$4881_memory_ptr_$_t_struct$_Observation_$4881_memory_ptr_$", - "typeString": "tuple(struct Oracle.Observation memory,struct Oracle.Observation memory)" - } - }, - "functionReturnParameters": 5291, - "id": 5321, - "nodeType": "Return", - "src": "10976:67:26" - } - ] - }, - "id": 5323, - "nodeType": "IfStatement", - "src": "10689:369:26", - "trueBody": { - "id": 5312, - "nodeType": "Block", - "src": "10730:171:26", - "statements": [ - { - "expression": { - "components": [ - { - "id": 5308, - "name": "beforeOrAt", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5288, - "src": "10864:10:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_memory_ptr", - "typeString": "struct Oracle.Observation memory" - } - }, - { - "id": 5309, - "name": "atOrAfter", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5290, - "src": "10876:9:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_memory_ptr", - "typeString": "struct Oracle.Observation memory" - } - } - ], - "id": 5310, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "10863:23:26", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_struct$_Observation_$4881_memory_ptr_$_t_struct$_Observation_$4881_memory_ptr_$", - "typeString": "tuple(struct Oracle.Observation memory,struct Oracle.Observation memory)" - } - }, - "functionReturnParameters": 5291, - "id": 5311, - "nodeType": "Return", - "src": "10856:30:26" - } - ] - } - } - ] - } - }, - { - "expression": { - "id": 5335, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 5326, - "name": "beforeOrAt", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5288, - "src": "11131:10:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_memory_ptr", - "typeString": "struct Oracle.Observation memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "baseExpression": { - "id": 5327, - "name": "self", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5273, - "src": "11144:4:26", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Observation_$4881_storage_$65535_storage_ptr", - "typeString": "struct Oracle.Observation storage ref[65535] storage pointer" - } - }, - "id": 5334, - "indexExpression": { - "commonType": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - "id": 5333, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - "id": 5330, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 5328, - "name": "index", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5281, - "src": "11150:5:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "hexValue": "31", - "id": 5329, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "11158:1:26", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "11150:9:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - } - ], - "id": 5331, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "11149:11:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "BinaryOperation", - "operator": "%", - "rightExpression": { - "id": 5332, - "name": "cardinality", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5285, - "src": "11163:11:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "src": "11149:25:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "11144:31:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_storage", - "typeString": "struct Oracle.Observation storage ref" - } - }, - "src": "11131:44:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_memory_ptr", - "typeString": "struct Oracle.Observation memory" - } - }, - "id": 5336, - "nodeType": "ExpressionStatement", - "src": "11131:44:26" - }, - { - "condition": { - "id": 5339, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "11189:23:26", - "subExpression": { - "expression": { - "id": 5337, - "name": "beforeOrAt", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5288, - "src": "11190:10:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_memory_ptr", - "typeString": "struct Oracle.Observation memory" - } - }, - "id": 5338, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "initialized", - "nodeType": "MemberAccess", - "referencedDeclaration": 4880, - "src": "11190:22:26", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 5346, - "nodeType": "IfStatement", - "src": "11185:49:26", - "trueBody": { - "expression": { - "id": 5344, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 5340, - "name": "beforeOrAt", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5288, - "src": "11214:10:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_memory_ptr", - "typeString": "struct Oracle.Observation memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "baseExpression": { - "id": 5341, - "name": "self", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5273, - "src": "11227:4:26", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Observation_$4881_storage_$65535_storage_ptr", - "typeString": "struct Oracle.Observation storage ref[65535] storage pointer" - } - }, - "id": 5343, - "indexExpression": { - "hexValue": "30", - "id": 5342, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "11232:1:26", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "11227:7:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_storage", - "typeString": "struct Oracle.Observation storage ref" - } - }, - "src": "11214:20:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_memory_ptr", - "typeString": "struct Oracle.Observation memory" - } - }, - "id": 5345, - "nodeType": "ExpressionStatement", - "src": "11214:20:26" - } - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "id": 5349, - "name": "time", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5275, - "src": "11345:4:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - { - "expression": { - "id": 5350, - "name": "beforeOrAt", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5288, - "src": "11351:10:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_memory_ptr", - "typeString": "struct Oracle.Observation memory" - } - }, - "id": 5351, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "blockTimestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": 4874, - "src": "11351:25:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - { - "id": 5352, - "name": "target", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5277, - "src": "11378:6:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - ], - "id": 5348, - "name": "lte", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5150, - "src": "11341:3:26", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint32_$_t_uint32_$_t_uint32_$returns$_t_bool_$", - "typeString": "function (uint32,uint32,uint32) pure returns (bool)" - } - }, - "id": 5353, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11341:44:26", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "4f4c44", - "id": 5354, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "11387:5:26", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_d30c0d219016dd7e5cf2b2c30c4d7c091820fc329f335b57cab26b9ff3384a9e", - "typeString": "literal_string \"OLD\"" - }, - "value": "OLD" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_d30c0d219016dd7e5cf2b2c30c4d7c091820fc329f335b57cab26b9ff3384a9e", - "typeString": "literal_string \"OLD\"" - } - ], - "id": 5347, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "11333:7:26", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 5355, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11333:60:26", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 5356, - "nodeType": "ExpressionStatement", - "src": "11333:60:26" - }, - { - "expression": { - "arguments": [ - { - "id": 5358, - "name": "self", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5273, - "src": "11489:4:26", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Observation_$4881_storage_$65535_storage_ptr", - "typeString": "struct Oracle.Observation storage ref[65535] storage pointer" - } - }, - { - "id": 5359, - "name": "time", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5275, - "src": "11495:4:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - { - "id": 5360, - "name": "target", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5277, - "src": "11501:6:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - { - "id": 5361, - "name": "index", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5281, - "src": "11509:5:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - { - "id": 5362, - "name": "cardinality", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5285, - "src": "11516:11:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_struct$_Observation_$4881_storage_$65535_storage_ptr", - "typeString": "struct Oracle.Observation storage ref[65535] storage pointer" - }, - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - ], - "id": 5357, - "name": "binarySearch", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5268, - "src": "11476:12:26", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_array$_t_struct$_Observation_$4881_storage_$65535_storage_ptr_$_t_uint32_$_t_uint32_$_t_uint16_$_t_uint16_$returns$_t_struct$_Observation_$4881_memory_ptr_$_t_struct$_Observation_$4881_memory_ptr_$", - "typeString": "function (struct Oracle.Observation storage ref[65535] storage pointer,uint32,uint32,uint16,uint16) view returns (struct Oracle.Observation memory,struct Oracle.Observation memory)" - } - }, - "id": 5363, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11476:52:26", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_struct$_Observation_$4881_memory_ptr_$_t_struct$_Observation_$4881_memory_ptr_$", - "typeString": "tuple(struct Oracle.Observation memory,struct Oracle.Observation memory)" - } - }, - "functionReturnParameters": 5291, - "id": 5364, - "nodeType": "Return", - "src": "11469:59:26" - } - ] - }, - "documentation": { - "id": 5269, - "nodeType": "StructuredDocumentation", - "src": "9092:1013:26", - "text": "@notice Fetches the observations beforeOrAt and atOrAfter a given target, i.e. where [beforeOrAt, atOrAfter] is satisfied\n @dev Assumes there is at least 1 initialized observation.\n Used by observeSingle() to compute the counterfactual accumulator values as of a given block timestamp.\n @param self The stored oracle array\n @param time The current block.timestamp\n @param target The timestamp at which the reserved observation should be for\n @param tick The active tick at the time of the returned or simulated observation\n @param index The index of the observation that was most recently written to the observations array\n @param liquidity The total pool liquidity at the time of the call\n @param cardinality The number of populated elements in the oracle array\n @return beforeOrAt The observation which occurred at, or before, the given timestamp\n @return atOrAfter The observation which occurred at, or after, the given timestamp" - }, - "id": 5366, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getSurroundingObservations", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 5286, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 5273, - "mutability": "mutable", - "name": "self", - "nodeType": "VariableDeclaration", - "scope": 5366, - "src": "10155:31:26", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Observation_$4881_storage_$65535_storage_ptr", - "typeString": "struct Oracle.Observation[65535]" - }, - "typeName": { - "baseType": { - "id": 5270, - "name": "Observation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 4881, - "src": "10155:11:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_storage_ptr", - "typeString": "struct Oracle.Observation" - } - }, - "id": 5272, - "length": { - "hexValue": "3635353335", - "id": 5271, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "10167:5:26", - "typeDescriptions": { - "typeIdentifier": "t_rational_65535_by_1", - "typeString": "int_const 65535" - }, - "value": "65535" - }, - "nodeType": "ArrayTypeName", - "src": "10155:18:26", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Observation_$4881_storage_$65535_storage_ptr", - "typeString": "struct Oracle.Observation[65535]" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 5275, - "mutability": "mutable", - "name": "time", - "nodeType": "VariableDeclaration", - "scope": 5366, - "src": "10196:11:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 5274, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "10196:6:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 5277, - "mutability": "mutable", - "name": "target", - "nodeType": "VariableDeclaration", - "scope": 5366, - "src": "10217:13:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 5276, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "10217:6:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 5279, - "mutability": "mutable", - "name": "tick", - "nodeType": "VariableDeclaration", - "scope": 5366, - "src": "10240:10:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 5278, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "10240:5:26", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 5281, - "mutability": "mutable", - "name": "index", - "nodeType": "VariableDeclaration", - "scope": 5366, - "src": "10260:12:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - "typeName": { - "id": 5280, - "name": "uint16", - "nodeType": "ElementaryTypeName", - "src": "10260:6:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 5283, - "mutability": "mutable", - "name": "liquidity", - "nodeType": "VariableDeclaration", - "scope": 5366, - "src": "10282:17:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "typeName": { - "id": 5282, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "10282:7:26", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 5285, - "mutability": "mutable", - "name": "cardinality", - "nodeType": "VariableDeclaration", - "scope": 5366, - "src": "10309:18:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - "typeName": { - "id": 5284, - "name": "uint16", - "nodeType": "ElementaryTypeName", - "src": "10309:6:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "visibility": "internal" - } - ], - "src": "10145:188:26" - }, - "returnParameters": { - "id": 5291, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 5288, - "mutability": "mutable", - "name": "beforeOrAt", - "nodeType": "VariableDeclaration", - "scope": 5366, - "src": "10356:29:26", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_memory_ptr", - "typeString": "struct Oracle.Observation" - }, - "typeName": { - "id": 5287, - "name": "Observation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 4881, - "src": "10356:11:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_storage_ptr", - "typeString": "struct Oracle.Observation" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 5290, - "mutability": "mutable", - "name": "atOrAfter", - "nodeType": "VariableDeclaration", - "scope": 5366, - "src": "10387:28:26", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_memory_ptr", - "typeString": "struct Oracle.Observation" - }, - "typeName": { - "id": 5289, - "name": "Observation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 4881, - "src": "10387:11:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_storage_ptr", - "typeString": "struct Oracle.Observation" - } - }, - "visibility": "internal" - } - ], - "src": "10355:61:26" - }, - "scope": 5604, - "src": "10110:1425:26", - "stateMutability": "view", - "virtual": false, - "visibility": "private" - }, - { - "body": { - "id": 5516, - "nodeType": "Block", - "src": "12949:1640:26", - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "id": 5392, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 5390, - "name": "secondsAgo", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5375, - "src": "12963:10:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 5391, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12977:1:26", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "12963:15:26", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 5420, - "nodeType": "IfStatement", - "src": "12959:257:26", - "trueBody": { - "id": 5419, - "nodeType": "Block", - "src": "12980:236:26", - "statements": [ - { - "assignments": [ - 5394 - ], - "declarations": [ - { - "constant": false, - "id": 5394, - "mutability": "mutable", - "name": "last", - "nodeType": "VariableDeclaration", - "scope": 5419, - "src": "12994:23:26", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_memory_ptr", - "typeString": "struct Oracle.Observation" - }, - "typeName": { - "id": 5393, - "name": "Observation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 4881, - "src": "12994:11:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_storage_ptr", - "typeString": "struct Oracle.Observation" - } - }, - "visibility": "internal" - } - ], - "id": 5398, - "initialValue": { - "baseExpression": { - "id": 5395, - "name": "self", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5371, - "src": "13020:4:26", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Observation_$4881_storage_$65535_storage_ptr", - "typeString": "struct Oracle.Observation storage ref[65535] storage pointer" - } - }, - "id": 5397, - "indexExpression": { - "id": 5396, - "name": "index", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5379, - "src": "13025:5:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "13020:11:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_storage", - "typeString": "struct Oracle.Observation storage ref" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "12994:37:26" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "id": 5402, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 5399, - "name": "last", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5394, - "src": "13049:4:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_memory_ptr", - "typeString": "struct Oracle.Observation memory" - } - }, - "id": 5400, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "blockTimestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": 4874, - "src": "13049:19:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "id": 5401, - "name": "time", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5373, - "src": "13072:4:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "src": "13049:27:26", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 5412, - "nodeType": "IfStatement", - "src": "13045:78:26", - "trueBody": { - "expression": { - "id": 5410, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 5403, - "name": "last", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5394, - "src": "13078:4:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_memory_ptr", - "typeString": "struct Oracle.Observation memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 5405, - "name": "last", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5394, - "src": "13095:4:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_memory_ptr", - "typeString": "struct Oracle.Observation memory" - } - }, - { - "id": 5406, - "name": "time", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5373, - "src": "13101:4:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - { - "id": 5407, - "name": "tick", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5377, - "src": "13107:4:26", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - { - "id": 5408, - "name": "liquidity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5381, - "src": "13113:9:26", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_struct$_Observation_$4881_memory_ptr", - "typeString": "struct Oracle.Observation memory" - }, - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - ], - "id": 5404, - "name": "transform", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4936, - "src": "13085:9:26", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_struct$_Observation_$4881_memory_ptr_$_t_uint32_$_t_int24_$_t_uint128_$returns$_t_struct$_Observation_$4881_memory_ptr_$", - "typeString": "function (struct Oracle.Observation memory,uint32,int24,uint128) pure returns (struct Oracle.Observation memory)" - } - }, - "id": 5409, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "13085:38:26", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_memory_ptr", - "typeString": "struct Oracle.Observation memory" - } - }, - "src": "13078:45:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_memory_ptr", - "typeString": "struct Oracle.Observation memory" - } - }, - "id": 5411, - "nodeType": "ExpressionStatement", - "src": "13078:45:26" - } - }, - { - "expression": { - "components": [ - { - "expression": { - "id": 5413, - "name": "last", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5394, - "src": "13145:4:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_memory_ptr", - "typeString": "struct Oracle.Observation memory" - } - }, - "id": 5414, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "tickCumulative", - "nodeType": "MemberAccess", - "referencedDeclaration": 4876, - "src": "13145:19:26", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - } - }, - { - "expression": { - "id": 5415, - "name": "last", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5394, - "src": "13166:4:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_memory_ptr", - "typeString": "struct Oracle.Observation memory" - } - }, - "id": 5416, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "secondsPerLiquidityCumulativeX128", - "nodeType": "MemberAccess", - "referencedDeclaration": 4878, - "src": "13166:38:26", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - } - ], - "id": 5417, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "13144:61:26", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_int56_$_t_uint160_$", - "typeString": "tuple(int56,uint160)" - } - }, - "functionReturnParameters": 5389, - "id": 5418, - "nodeType": "Return", - "src": "13137:68:26" - } - ] - } - }, - { - "assignments": [ - 5422 - ], - "declarations": [ - { - "constant": false, - "id": 5422, - "mutability": "mutable", - "name": "target", - "nodeType": "VariableDeclaration", - "scope": 5516, - "src": "13226:13:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 5421, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "13226:6:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "visibility": "internal" - } - ], - "id": 5426, - "initialValue": { - "commonType": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "id": 5425, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 5423, - "name": "time", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5373, - "src": "13242:4:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "id": 5424, - "name": "secondsAgo", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5375, - "src": "13249:10:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "src": "13242:17:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "13226:33:26" - }, - { - "assignments": [ - 5428, - 5430 - ], - "declarations": [ - { - "constant": false, - "id": 5428, - "mutability": "mutable", - "name": "beforeOrAt", - "nodeType": "VariableDeclaration", - "scope": 5516, - "src": "13271:29:26", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_memory_ptr", - "typeString": "struct Oracle.Observation" - }, - "typeName": { - "id": 5427, - "name": "Observation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 4881, - "src": "13271:11:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_storage_ptr", - "typeString": "struct Oracle.Observation" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 5430, - "mutability": "mutable", - "name": "atOrAfter", - "nodeType": "VariableDeclaration", - "scope": 5516, - "src": "13302:28:26", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_memory_ptr", - "typeString": "struct Oracle.Observation" - }, - "typeName": { - "id": 5429, - "name": "Observation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 4881, - "src": "13302:11:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_storage_ptr", - "typeString": "struct Oracle.Observation" - } - }, - "visibility": "internal" - } - ], - "id": 5440, - "initialValue": { - "arguments": [ - { - "id": 5432, - "name": "self", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5371, - "src": "13373:4:26", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Observation_$4881_storage_$65535_storage_ptr", - "typeString": "struct Oracle.Observation storage ref[65535] storage pointer" - } - }, - { - "id": 5433, - "name": "time", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5373, - "src": "13379:4:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - { - "id": 5434, - "name": "target", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5422, - "src": "13385:6:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - { - "id": 5435, - "name": "tick", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5377, - "src": "13393:4:26", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - { - "id": 5436, - "name": "index", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5379, - "src": "13399:5:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - { - "id": 5437, - "name": "liquidity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5381, - "src": "13406:9:26", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - { - "id": 5438, - "name": "cardinality", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5383, - "src": "13417:11:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_struct$_Observation_$4881_storage_$65535_storage_ptr", - "typeString": "struct Oracle.Observation storage ref[65535] storage pointer" - }, - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - ], - "id": 5431, - "name": "getSurroundingObservations", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5366, - "src": "13346:26:26", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_array$_t_struct$_Observation_$4881_storage_$65535_storage_ptr_$_t_uint32_$_t_uint32_$_t_int24_$_t_uint16_$_t_uint128_$_t_uint16_$returns$_t_struct$_Observation_$4881_memory_ptr_$_t_struct$_Observation_$4881_memory_ptr_$", - "typeString": "function (struct Oracle.Observation storage ref[65535] storage pointer,uint32,uint32,int24,uint16,uint128,uint16) view returns (struct Oracle.Observation memory,struct Oracle.Observation memory)" - } - }, - "id": 5439, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "13346:83:26", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_struct$_Observation_$4881_memory_ptr_$_t_struct$_Observation_$4881_memory_ptr_$", - "typeString": "tuple(struct Oracle.Observation memory,struct Oracle.Observation memory)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "13270:159:26" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "id": 5444, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 5441, - "name": "target", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5422, - "src": "13444:6:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "expression": { - "id": 5442, - "name": "beforeOrAt", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5428, - "src": "13454:10:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_memory_ptr", - "typeString": "struct Oracle.Observation memory" - } - }, - "id": 5443, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "blockTimestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": 4874, - "src": "13454:25:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "src": "13444:35:26", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "condition": { - "commonType": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "id": 5455, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 5452, - "name": "target", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5422, - "src": "13638:6:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "expression": { - "id": 5453, - "name": "atOrAfter", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5430, - "src": "13648:9:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_memory_ptr", - "typeString": "struct Oracle.Observation memory" - } - }, - "id": 5454, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "blockTimestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": 4874, - "src": "13648:24:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "src": "13638:34:26", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 5513, - "nodeType": "Block", - "src": "13826:757:26", - "statements": [ - { - "assignments": [ - 5464 - ], - "declarations": [ - { - "constant": false, - "id": 5464, - "mutability": "mutable", - "name": "observationTimeDelta", - "nodeType": "VariableDeclaration", - "scope": 5513, - "src": "13875:27:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 5463, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "13875:6:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "visibility": "internal" - } - ], - "id": 5470, - "initialValue": { - "commonType": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "id": 5469, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 5465, - "name": "atOrAfter", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5430, - "src": "13905:9:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_memory_ptr", - "typeString": "struct Oracle.Observation memory" - } - }, - "id": 5466, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "blockTimestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": 4874, - "src": "13905:24:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "expression": { - "id": 5467, - "name": "beforeOrAt", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5428, - "src": "13932:10:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_memory_ptr", - "typeString": "struct Oracle.Observation memory" - } - }, - "id": 5468, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "blockTimestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": 4874, - "src": "13932:25:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "src": "13905:52:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "13875:82:26" - }, - { - "assignments": [ - 5472 - ], - "declarations": [ - { - "constant": false, - "id": 5472, - "mutability": "mutable", - "name": "targetDelta", - "nodeType": "VariableDeclaration", - "scope": 5513, - "src": "13971:18:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 5471, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "13971:6:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "visibility": "internal" - } - ], - "id": 5477, - "initialValue": { - "commonType": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "id": 5476, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 5473, - "name": "target", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5422, - "src": "13992:6:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "expression": { - "id": 5474, - "name": "beforeOrAt", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5428, - "src": "14001:10:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_memory_ptr", - "typeString": "struct Oracle.Observation memory" - } - }, - "id": 5475, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "blockTimestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": 4874, - "src": "14001:25:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "src": "13992:34:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "13971:55:26" - }, - { - "expression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_int56", - "typeString": "int56" - }, - "id": 5491, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 5478, - "name": "beforeOrAt", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5428, - "src": "14065:10:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_memory_ptr", - "typeString": "struct Oracle.Observation memory" - } - }, - "id": 5479, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "tickCumulative", - "nodeType": "MemberAccess", - "referencedDeclaration": 4876, - "src": "14065:25:26", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_int56", - "typeString": "int56" - }, - "id": 5490, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_int56", - "typeString": "int56" - }, - "id": 5487, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_int56", - "typeString": "int56" - }, - "id": 5484, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 5480, - "name": "atOrAfter", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5430, - "src": "14115:9:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_memory_ptr", - "typeString": "struct Oracle.Observation memory" - } - }, - "id": 5481, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "tickCumulative", - "nodeType": "MemberAccess", - "referencedDeclaration": 4876, - "src": "14115:24:26", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "expression": { - "id": 5482, - "name": "beforeOrAt", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5428, - "src": "14142:10:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_memory_ptr", - "typeString": "struct Oracle.Observation memory" - } - }, - "id": 5483, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "tickCumulative", - "nodeType": "MemberAccess", - "referencedDeclaration": 4876, - "src": "14142:25:26", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - } - }, - "src": "14115:52:26", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - } - } - ], - "id": 5485, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "14114:54:26", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "id": 5486, - "name": "observationTimeDelta", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5464, - "src": "14171:20:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "src": "14114:77:26", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - } - } - ], - "id": 5488, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "14113:79:26", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "id": 5489, - "name": "targetDelta", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5472, - "src": "14215:11:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "src": "14113:113:26", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - } - }, - "src": "14065:161:26", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - } - }, - { - "commonType": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "id": 5510, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 5492, - "name": "beforeOrAt", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5428, - "src": "14244:10:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_memory_ptr", - "typeString": "struct Oracle.Observation memory" - } - }, - "id": 5493, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "secondsPerLiquidityCumulativeX128", - "nodeType": "MemberAccess", - "referencedDeclaration": 4878, - "src": "14244:44:26", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 5508, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 5505, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "id": 5502, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 5498, - "name": "atOrAfter", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5430, - "src": "14382:9:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_memory_ptr", - "typeString": "struct Oracle.Observation memory" - } - }, - "id": 5499, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "secondsPerLiquidityCumulativeX128", - "nodeType": "MemberAccess", - "referencedDeclaration": 4878, - "src": "14382:43:26", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "expression": { - "id": 5500, - "name": "beforeOrAt", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5428, - "src": "14428:10:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_memory_ptr", - "typeString": "struct Oracle.Observation memory" - } - }, - "id": 5501, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "secondsPerLiquidityCumulativeX128", - "nodeType": "MemberAccess", - "referencedDeclaration": 4878, - "src": "14428:44:26", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "src": "14382:90:26", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - ], - "id": 5497, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "14345:7:26", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 5496, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "14345:7:26", - "typeDescriptions": {} - } - }, - "id": 5503, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "14345:153:26", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "id": 5504, - "name": "targetDelta", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5472, - "src": "14501:11:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "src": "14345:167:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 5506, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "14344:169:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "id": 5507, - "name": "observationTimeDelta", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5464, - "src": "14516:20:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "src": "14344:192:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 5495, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "14311:7:26", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint160_$", - "typeString": "type(uint160)" - }, - "typeName": { - "id": 5494, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "14311:7:26", - "typeDescriptions": {} - } - }, - "id": 5509, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "14311:247:26", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "src": "14244:314:26", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - } - ], - "id": 5511, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "14047:525:26", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_int56_$_t_uint160_$", - "typeString": "tuple(int56,uint160)" - } - }, - "functionReturnParameters": 5389, - "id": 5512, - "nodeType": "Return", - "src": "14040:532:26" - } - ] - }, - "id": 5514, - "nodeType": "IfStatement", - "src": "13634:949:26", - "trueBody": { - "id": 5462, - "nodeType": "Block", - "src": "13674:146:26", - "statements": [ - { - "expression": { - "components": [ - { - "expression": { - "id": 5456, - "name": "atOrAfter", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5430, - "src": "13739:9:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_memory_ptr", - "typeString": "struct Oracle.Observation memory" - } - }, - "id": 5457, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "tickCumulative", - "nodeType": "MemberAccess", - "referencedDeclaration": 4876, - "src": "13739:24:26", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - } - }, - { - "expression": { - "id": 5458, - "name": "atOrAfter", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5430, - "src": "13765:9:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_memory_ptr", - "typeString": "struct Oracle.Observation memory" - } - }, - "id": 5459, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "secondsPerLiquidityCumulativeX128", - "nodeType": "MemberAccess", - "referencedDeclaration": 4878, - "src": "13765:43:26", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - } - ], - "id": 5460, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "13738:71:26", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_int56_$_t_uint160_$", - "typeString": "tuple(int56,uint160)" - } - }, - "functionReturnParameters": 5389, - "id": 5461, - "nodeType": "Return", - "src": "13731:78:26" - } - ] - } - }, - "id": 5515, - "nodeType": "IfStatement", - "src": "13440:1143:26", - "trueBody": { - "id": 5451, - "nodeType": "Block", - "src": "13481:147:26", - "statements": [ - { - "expression": { - "components": [ - { - "expression": { - "id": 5445, - "name": "beforeOrAt", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5428, - "src": "13545:10:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_memory_ptr", - "typeString": "struct Oracle.Observation memory" - } - }, - "id": 5446, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "tickCumulative", - "nodeType": "MemberAccess", - "referencedDeclaration": 4876, - "src": "13545:25:26", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - } - }, - { - "expression": { - "id": 5447, - "name": "beforeOrAt", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5428, - "src": "13572:10:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_memory_ptr", - "typeString": "struct Oracle.Observation memory" - } - }, - "id": 5448, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "secondsPerLiquidityCumulativeX128", - "nodeType": "MemberAccess", - "referencedDeclaration": 4878, - "src": "13572:44:26", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - } - ], - "id": 5449, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "13544:73:26", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_int56_$_t_uint160_$", - "typeString": "tuple(int56,uint160)" - } - }, - "functionReturnParameters": 5389, - "id": 5450, - "nodeType": "Return", - "src": "13537:80:26" - } - ] - } - } - ] - }, - "documentation": { - "id": 5367, - "nodeType": "StructuredDocumentation", - "src": "11541:1100:26", - "text": "@dev Reverts if an observation at or before the desired observation timestamp does not exist.\n 0 may be passed as `secondsAgo' to return the current cumulative values.\n If called with a timestamp falling between two observations, returns the counterfactual accumulator values\n at exactly the timestamp between the two observations.\n @param self The stored oracle array\n @param time The current block timestamp\n @param secondsAgo The amount of time to look back, in seconds, at which point to return an observation\n @param tick The current tick\n @param index The index of the observation that was most recently written to the observations array\n @param liquidity The current in-range pool liquidity\n @param cardinality The number of populated elements in the oracle array\n @return tickCumulative The tick * time elapsed since the pool was first initialized, as of `secondsAgo`\n @return secondsPerLiquidityCumulativeX128 The time elapsed / max(1, liquidity) since the pool was first initialized, as of `secondsAgo`" - }, - "id": 5517, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "observeSingle", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 5384, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 5371, - "mutability": "mutable", - "name": "self", - "nodeType": "VariableDeclaration", - "scope": 5517, - "src": "12678:31:26", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Observation_$4881_storage_$65535_storage_ptr", - "typeString": "struct Oracle.Observation[65535]" - }, - "typeName": { - "baseType": { - "id": 5368, - "name": "Observation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 4881, - "src": "12678:11:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_storage_ptr", - "typeString": "struct Oracle.Observation" - } - }, - "id": 5370, - "length": { - "hexValue": "3635353335", - "id": 5369, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12690:5:26", - "typeDescriptions": { - "typeIdentifier": "t_rational_65535_by_1", - "typeString": "int_const 65535" - }, - "value": "65535" - }, - "nodeType": "ArrayTypeName", - "src": "12678:18:26", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Observation_$4881_storage_$65535_storage_ptr", - "typeString": "struct Oracle.Observation[65535]" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 5373, - "mutability": "mutable", - "name": "time", - "nodeType": "VariableDeclaration", - "scope": 5517, - "src": "12719:11:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 5372, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "12719:6:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 5375, - "mutability": "mutable", - "name": "secondsAgo", - "nodeType": "VariableDeclaration", - "scope": 5517, - "src": "12740:17:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 5374, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "12740:6:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 5377, - "mutability": "mutable", - "name": "tick", - "nodeType": "VariableDeclaration", - "scope": 5517, - "src": "12767:10:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 5376, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "12767:5:26", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 5379, - "mutability": "mutable", - "name": "index", - "nodeType": "VariableDeclaration", - "scope": 5517, - "src": "12787:12:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - "typeName": { - "id": 5378, - "name": "uint16", - "nodeType": "ElementaryTypeName", - "src": "12787:6:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 5381, - "mutability": "mutable", - "name": "liquidity", - "nodeType": "VariableDeclaration", - "scope": 5517, - "src": "12809:17:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "typeName": { - "id": 5380, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "12809:7:26", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 5383, - "mutability": "mutable", - "name": "cardinality", - "nodeType": "VariableDeclaration", - "scope": 5517, - "src": "12836:18:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - "typeName": { - "id": 5382, - "name": "uint16", - "nodeType": "ElementaryTypeName", - "src": "12836:6:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "visibility": "internal" - } - ], - "src": "12668:192:26" - }, - "returnParameters": { - "id": 5389, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 5386, - "mutability": "mutable", - "name": "tickCumulative", - "nodeType": "VariableDeclaration", - "scope": 5517, - "src": "12884:20:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - }, - "typeName": { - "id": 5385, - "name": "int56", - "nodeType": "ElementaryTypeName", - "src": "12884:5:26", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 5388, - "mutability": "mutable", - "name": "secondsPerLiquidityCumulativeX128", - "nodeType": "VariableDeclaration", - "scope": 5517, - "src": "12906:41:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "typeName": { - "id": 5387, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "12906:7:26", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "visibility": "internal" - } - ], - "src": "12883:65:26" - }, - "scope": 5604, - "src": "12646:1943:26", - "stateMutability": "view", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 5602, - "nodeType": "Block", - "src": "15870:535:26", - "statements": [ - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - "id": 5547, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 5545, - "name": "cardinality", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5535, - "src": "15888:11:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 5546, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "15902:1:26", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "15888:15:26", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "49", - "id": 5548, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "15905:3:26", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_8d61ecf6e15472e15b1a0f63cd77f62aa57e6edcd3871d7a841f1056fb42b216", - "typeString": "literal_string \"I\"" - }, - "value": "I" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_8d61ecf6e15472e15b1a0f63cd77f62aa57e6edcd3871d7a841f1056fb42b216", - "typeString": "literal_string \"I\"" - } - ], - "id": 5544, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "15880:7:26", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 5549, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "15880:29:26", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 5550, - "nodeType": "ExpressionStatement", - "src": "15880:29:26" - }, - { - "expression": { - "id": 5558, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 5551, - "name": "tickCumulatives", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5539, - "src": "15920:15:26", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_int56_$dyn_memory_ptr", - "typeString": "int56[] memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "expression": { - "id": 5555, - "name": "secondsAgos", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5527, - "src": "15950:11:26", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr", - "typeString": "uint32[] memory" - } - }, - "id": 5556, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "src": "15950:18:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 5554, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "NewExpression", - "src": "15938:11:26", - "typeDescriptions": { - "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_int56_$dyn_memory_ptr_$", - "typeString": "function (uint256) pure returns (int56[] memory)" - }, - "typeName": { - "baseType": { - "id": 5552, - "name": "int56", - "nodeType": "ElementaryTypeName", - "src": "15942:5:26", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - } - }, - "id": 5553, - "nodeType": "ArrayTypeName", - "src": "15942:7:26", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_int56_$dyn_storage_ptr", - "typeString": "int56[]" - } - } - }, - "id": 5557, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "15938:31:26", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_array$_t_int56_$dyn_memory_ptr", - "typeString": "int56[] memory" - } - }, - "src": "15920:49:26", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_int56_$dyn_memory_ptr", - "typeString": "int56[] memory" - } - }, - "id": 5559, - "nodeType": "ExpressionStatement", - "src": "15920:49:26" - }, - { - "expression": { - "id": 5567, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 5560, - "name": "secondsPerLiquidityCumulativeX128s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5542, - "src": "15979:34:26", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint160_$dyn_memory_ptr", - "typeString": "uint160[] memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "expression": { - "id": 5564, - "name": "secondsAgos", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5527, - "src": "16030:11:26", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr", - "typeString": "uint32[] memory" - } - }, - "id": 5565, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "src": "16030:18:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 5563, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "NewExpression", - "src": "16016:13:26", - "typeDescriptions": { - "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint160_$dyn_memory_ptr_$", - "typeString": "function (uint256) pure returns (uint160[] memory)" - }, - "typeName": { - "baseType": { - "id": 5561, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "16020:7:26", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "id": 5562, - "nodeType": "ArrayTypeName", - "src": "16020:9:26", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint160_$dyn_storage_ptr", - "typeString": "uint160[]" - } - } - }, - "id": 5566, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "16016:33:26", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint160_$dyn_memory_ptr", - "typeString": "uint160[] memory" - } - }, - "src": "15979:70:26", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint160_$dyn_memory_ptr", - "typeString": "uint160[] memory" - } - }, - "id": 5568, - "nodeType": "ExpressionStatement", - "src": "15979:70:26" - }, - { - "body": { - "id": 5600, - "nodeType": "Block", - "src": "16108:291:26", - "statements": [ - { - "expression": { - "id": 5598, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "components": [ - { - "baseExpression": { - "id": 5580, - "name": "tickCumulatives", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5539, - "src": "16123:15:26", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_int56_$dyn_memory_ptr", - "typeString": "int56[] memory" - } - }, - "id": 5582, - "indexExpression": { - "id": 5581, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5570, - "src": "16139:1:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "16123:18:26", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - } - }, - { - "baseExpression": { - "id": 5583, - "name": "secondsPerLiquidityCumulativeX128s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5542, - "src": "16143:34:26", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint160_$dyn_memory_ptr", - "typeString": "uint160[] memory" - } - }, - "id": 5585, - "indexExpression": { - "id": 5584, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5570, - "src": "16178:1:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "16143:37:26", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - } - ], - "id": 5586, - "isConstant": false, - "isInlineArray": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "TupleExpression", - "src": "16122:59:26", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_int56_$_t_uint160_$", - "typeString": "tuple(int56,uint160)" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 5588, - "name": "self", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5522, - "src": "16215:4:26", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Observation_$4881_storage_$65535_storage_ptr", - "typeString": "struct Oracle.Observation storage ref[65535] storage pointer" - } - }, - { - "id": 5589, - "name": "time", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5524, - "src": "16237:4:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - { - "baseExpression": { - "id": 5590, - "name": "secondsAgos", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5527, - "src": "16259:11:26", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr", - "typeString": "uint32[] memory" - } - }, - "id": 5592, - "indexExpression": { - "id": 5591, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5570, - "src": "16271:1:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "16259:14:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - { - "id": 5593, - "name": "tick", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5529, - "src": "16291:4:26", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - { - "id": 5594, - "name": "index", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5531, - "src": "16313:5:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - { - "id": 5595, - "name": "liquidity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5533, - "src": "16336:9:26", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - { - "id": 5596, - "name": "cardinality", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5535, - "src": "16363:11:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_struct$_Observation_$4881_storage_$65535_storage_ptr", - "typeString": "struct Oracle.Observation storage ref[65535] storage pointer" - }, - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - ], - "id": 5587, - "name": "observeSingle", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5517, - "src": "16184:13:26", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_array$_t_struct$_Observation_$4881_storage_$65535_storage_ptr_$_t_uint32_$_t_uint32_$_t_int24_$_t_uint16_$_t_uint128_$_t_uint16_$returns$_t_int56_$_t_uint160_$", - "typeString": "function (struct Oracle.Observation storage ref[65535] storage pointer,uint32,uint32,int24,uint16,uint128,uint16) view returns (int56,uint160)" - } - }, - "id": 5597, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "16184:204:26", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_int56_$_t_uint160_$", - "typeString": "tuple(int56,uint160)" - } - }, - "src": "16122:266:26", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 5599, - "nodeType": "ExpressionStatement", - "src": "16122:266:26" - } - ] - }, - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 5576, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 5573, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5570, - "src": "16079:1:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "expression": { - "id": 5574, - "name": "secondsAgos", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5527, - "src": "16083:11:26", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr", - "typeString": "uint32[] memory" - } - }, - "id": 5575, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "src": "16083:18:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "16079:22:26", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 5601, - "initializationExpression": { - "assignments": [ - 5570 - ], - "declarations": [ - { - "constant": false, - "id": 5570, - "mutability": "mutable", - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 5601, - "src": "16064:9:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 5569, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "16064:7:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 5572, - "initialValue": { - "hexValue": "30", - "id": 5571, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "16076:1:26", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "16064:13:26" - }, - "loopExpression": { - "expression": { - "id": 5578, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "16103:3:26", - "subExpression": { - "id": 5577, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5570, - "src": "16103:1:26", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 5579, - "nodeType": "ExpressionStatement", - "src": "16103:3:26" - }, - "nodeType": "ForStatement", - "src": "16059:340:26" - } - ] - }, - "documentation": { - "id": 5518, - "nodeType": "StructuredDocumentation", - "src": "14595:943:26", - "text": "@notice Returns the accumulator values as of each time seconds ago from the given time in the array of `secondsAgos`\n @dev Reverts if `secondsAgos` > oldest observation\n @param self The stored oracle array\n @param time The current block.timestamp\n @param secondsAgos Each amount of time to look back, in seconds, at which point to return an observation\n @param tick The current tick\n @param index The index of the observation that was most recently written to the observations array\n @param liquidity The current in-range pool liquidity\n @param cardinality The number of populated elements in the oracle array\n @return tickCumulatives The tick * time elapsed since the pool was first initialized, as of each `secondsAgo`\n @return secondsPerLiquidityCumulativeX128s The cumulative seconds / max(1, liquidity) since the pool was first initialized, as of each `secondsAgo`" - }, - "id": 5603, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "observe", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 5536, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 5522, - "mutability": "mutable", - "name": "self", - "nodeType": "VariableDeclaration", - "scope": 5603, - "src": "15569:31:26", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Observation_$4881_storage_$65535_storage_ptr", - "typeString": "struct Oracle.Observation[65535]" - }, - "typeName": { - "baseType": { - "id": 5519, - "name": "Observation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 4881, - "src": "15569:11:26", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$4881_storage_ptr", - "typeString": "struct Oracle.Observation" - } - }, - "id": 5521, - "length": { - "hexValue": "3635353335", - "id": 5520, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "15581:5:26", - "typeDescriptions": { - "typeIdentifier": "t_rational_65535_by_1", - "typeString": "int_const 65535" - }, - "value": "65535" - }, - "nodeType": "ArrayTypeName", - "src": "15569:18:26", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Observation_$4881_storage_$65535_storage_ptr", - "typeString": "struct Oracle.Observation[65535]" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 5524, - "mutability": "mutable", - "name": "time", - "nodeType": "VariableDeclaration", - "scope": 5603, - "src": "15610:11:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 5523, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "15610:6:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 5527, - "mutability": "mutable", - "name": "secondsAgos", - "nodeType": "VariableDeclaration", - "scope": 5603, - "src": "15631:27:26", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr", - "typeString": "uint32[]" - }, - "typeName": { - "baseType": { - "id": 5525, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "15631:6:26", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "id": 5526, - "nodeType": "ArrayTypeName", - "src": "15631:8:26", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint32_$dyn_storage_ptr", - "typeString": "uint32[]" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 5529, - "mutability": "mutable", - "name": "tick", - "nodeType": "VariableDeclaration", - "scope": 5603, - "src": "15668:10:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 5528, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "15668:5:26", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 5531, - "mutability": "mutable", - "name": "index", - "nodeType": "VariableDeclaration", - "scope": 5603, - "src": "15688:12:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - "typeName": { - "id": 5530, - "name": "uint16", - "nodeType": "ElementaryTypeName", - "src": "15688:6:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 5533, - "mutability": "mutable", - "name": "liquidity", - "nodeType": "VariableDeclaration", - "scope": 5603, - "src": "15710:17:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "typeName": { - "id": 5532, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "15710:7:26", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 5535, - "mutability": "mutable", - "name": "cardinality", - "nodeType": "VariableDeclaration", - "scope": 5603, - "src": "15737:18:26", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - }, - "typeName": { - "id": 5534, - "name": "uint16", - "nodeType": "ElementaryTypeName", - "src": "15737:6:26", - "typeDescriptions": { - "typeIdentifier": "t_uint16", - "typeString": "uint16" - } - }, - "visibility": "internal" - } - ], - "src": "15559:202:26" - }, - "returnParameters": { - "id": 5543, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 5539, - "mutability": "mutable", - "name": "tickCumulatives", - "nodeType": "VariableDeclaration", - "scope": 5603, - "src": "15785:30:26", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_int56_$dyn_memory_ptr", - "typeString": "int56[]" - }, - "typeName": { - "baseType": { - "id": 5537, - "name": "int56", - "nodeType": "ElementaryTypeName", - "src": "15785:5:26", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - } - }, - "id": 5538, - "nodeType": "ArrayTypeName", - "src": "15785:7:26", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_int56_$dyn_storage_ptr", - "typeString": "int56[]" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 5542, - "mutability": "mutable", - "name": "secondsPerLiquidityCumulativeX128s", - "nodeType": "VariableDeclaration", - "scope": 5603, - "src": "15817:51:26", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint160_$dyn_memory_ptr", - "typeString": "uint160[]" - }, - "typeName": { - "baseType": { - "id": 5540, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "15817:7:26", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "id": 5541, - "nodeType": "ArrayTypeName", - "src": "15817:9:26", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint160_$dyn_storage_ptr", - "typeString": "uint160[]" - } - }, - "visibility": "internal" - } - ], - "src": "15784:85:26" - }, - "scope": 5604, - "src": "15543:862:26", - "stateMutability": "view", - "virtual": false, - "visibility": "internal" - } - ], - "scope": 5605, - "src": "676:15731:26" - } - ], - "src": "37:16371:26" - }, - "id": 26 - }, - "@uniswap/v3-core/contracts/libraries/Position.sol": { - "ast": { - "absolutePath": "@uniswap/v3-core/contracts/libraries/Position.sol", - "exportedSymbols": { - "FixedPoint128": [ - 4504 - ], - "FullMath": [ - 4687 - ], - "LiquidityMath": [ - 4739 - ], - "Position": [ - 5777 - ] - }, - "id": 5778, - "license": "BUSL-1.1", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 5606, - "literals": [ - "solidity", - ">=", - "0.5", - ".0" - ], - "nodeType": "PragmaDirective", - "src": "37:24:27" - }, - { - "absolutePath": "@uniswap/v3-core/contracts/libraries/FullMath.sol", - "file": "./FullMath.sol", - "id": 5607, - "nodeType": "ImportDirective", - "scope": 5778, - "sourceUnit": 4688, - "src": "63:24:27", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "@uniswap/v3-core/contracts/libraries/FixedPoint128.sol", - "file": "./FixedPoint128.sol", - "id": 5608, - "nodeType": "ImportDirective", - "scope": 5778, - "sourceUnit": 4505, - "src": "88:29:27", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "@uniswap/v3-core/contracts/libraries/LiquidityMath.sol", - "file": "./LiquidityMath.sol", - "id": 5609, - "nodeType": "ImportDirective", - "scope": 5778, - "sourceUnit": 4740, - "src": "118:29:27", - "symbolAliases": [], - "unitAlias": "" - }, - { - "abstract": false, - "baseContracts": [], - "contractDependencies": [], - "contractKind": "library", - "documentation": { - "id": 5610, - "nodeType": "StructuredDocumentation", - "src": "149:201:27", - "text": "@title Position\n @notice Positions represent an owner address' liquidity between a lower and upper tick boundary\n @dev Positions store additional state for tracking fees owed to the position" - }, - "fullyImplemented": true, - "id": 5777, - "linearizedBaseContracts": [ - 5777 - ], - "name": "Position", - "nodeType": "ContractDefinition", - "nodes": [ - { - "canonicalName": "Position.Info", - "id": 5621, - "members": [ - { - "constant": false, - "id": 5612, - "mutability": "mutable", - "name": "liquidity", - "nodeType": "VariableDeclaration", - "scope": 5621, - "src": "497:17:27", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "typeName": { - "id": 5611, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "497:7:27", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 5614, - "mutability": "mutable", - "name": "feeGrowthInside0LastX128", - "nodeType": "VariableDeclaration", - "scope": 5621, - "src": "616:32:27", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 5613, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "616:7:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 5616, - "mutability": "mutable", - "name": "feeGrowthInside1LastX128", - "nodeType": "VariableDeclaration", - "scope": 5621, - "src": "658:32:27", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 5615, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "658:7:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 5618, - "mutability": "mutable", - "name": "tokensOwed0", - "nodeType": "VariableDeclaration", - "scope": 5621, - "src": "764:19:27", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "typeName": { - "id": 5617, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "764:7:27", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 5620, - "mutability": "mutable", - "name": "tokensOwed1", - "nodeType": "VariableDeclaration", - "scope": 5621, - "src": "793:19:27", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "typeName": { - "id": 5619, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "793:7:27", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "visibility": "internal" - } - ], - "name": "Info", - "nodeType": "StructDefinition", - "scope": 5777, - "src": "417:402:27", - "visibility": "public" - }, - { - "body": { - "id": 5650, - "nodeType": "Block", - "src": "1440:90:27", - "statements": [ - { - "expression": { - "id": 5648, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 5637, - "name": "position", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5635, - "src": "1450:8:27", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$5621_storage_ptr", - "typeString": "struct Position.Info storage pointer" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "baseExpression": { - "id": 5638, - "name": "self", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5626, - "src": "1461:4:27", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Info_$5621_storage_$", - "typeString": "mapping(bytes32 => struct Position.Info storage ref)" - } - }, - "id": 5647, - "indexExpression": { - "arguments": [ - { - "arguments": [ - { - "id": 5642, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5628, - "src": "1493:5:27", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 5643, - "name": "tickLower", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5630, - "src": "1500:9:27", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - { - "id": 5644, - "name": "tickUpper", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5632, - "src": "1511:9:27", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - ], - "expression": { - "id": 5640, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -1, - "src": "1476:3:27", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 5641, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "encodePacked", - "nodeType": "MemberAccess", - "src": "1476:16:27", - "typeDescriptions": { - "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", - "typeString": "function () pure returns (bytes memory)" - } - }, - "id": 5645, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1476:45:27", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 5639, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -8, - "src": "1466:9:27", - "typeDescriptions": { - "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) pure returns (bytes32)" - } - }, - "id": 5646, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1466:56:27", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1461:62:27", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$5621_storage", - "typeString": "struct Position.Info storage ref" - } - }, - "src": "1450:73:27", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$5621_storage_ptr", - "typeString": "struct Position.Info storage pointer" - } - }, - "id": 5649, - "nodeType": "ExpressionStatement", - "src": "1450:73:27" - } - ] - }, - "documentation": { - "id": 5622, - "nodeType": "StructuredDocumentation", - "src": "825:416:27", - "text": "@notice Returns the Info struct of a position, given an owner and position boundaries\n @param self The mapping containing all user positions\n @param owner The address of the position owner\n @param tickLower The lower tick boundary of the position\n @param tickUpper The upper tick boundary of the position\n @return position The position info struct of the given owners' position" - }, - "id": 5651, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "get", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 5633, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 5626, - "mutability": "mutable", - "name": "self", - "nodeType": "VariableDeclaration", - "scope": 5651, - "src": "1268:37:27", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Info_$5621_storage_$", - "typeString": "mapping(bytes32 => struct Position.Info)" - }, - "typeName": { - "id": 5625, - "keyType": { - "id": 5623, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1276:7:27", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Mapping", - "src": "1268:24:27", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Info_$5621_storage_$", - "typeString": "mapping(bytes32 => struct Position.Info)" - }, - "valueType": { - "id": 5624, - "name": "Info", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5621, - "src": "1287:4:27", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$5621_storage_ptr", - "typeString": "struct Position.Info" - } - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 5628, - "mutability": "mutable", - "name": "owner", - "nodeType": "VariableDeclaration", - "scope": 5651, - "src": "1315:13:27", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 5627, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1315:7:27", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 5630, - "mutability": "mutable", - "name": "tickLower", - "nodeType": "VariableDeclaration", - "scope": 5651, - "src": "1338:15:27", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 5629, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "1338:5:27", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 5632, - "mutability": "mutable", - "name": "tickUpper", - "nodeType": "VariableDeclaration", - "scope": 5651, - "src": "1363:15:27", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 5631, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "1363:5:27", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - } - ], - "src": "1258:126:27" - }, - "returnParameters": { - "id": 5636, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 5635, - "mutability": "mutable", - "name": "position", - "nodeType": "VariableDeclaration", - "scope": 5651, - "src": "1408:30:27", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$5621_storage_ptr", - "typeString": "struct Position.Info" - }, - "typeName": { - "id": 5634, - "name": "Position.Info", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5621, - "src": "1408:13:27", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$5621_storage_ptr", - "typeString": "struct Position.Info" - } - }, - "visibility": "internal" - } - ], - "src": "1407:32:27" - }, - "scope": 5777, - "src": "1246:284:27", - "stateMutability": "view", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 5775, - "nodeType": "Block", - "src": "2175:1397:27", - "statements": [ - { - "assignments": [ - 5664 - ], - "declarations": [ - { - "constant": false, - "id": 5664, - "mutability": "mutable", - "name": "_self", - "nodeType": "VariableDeclaration", - "scope": 5775, - "src": "2185:17:27", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$5621_memory_ptr", - "typeString": "struct Position.Info" - }, - "typeName": { - "id": 5663, - "name": "Info", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5621, - "src": "2185:4:27", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$5621_storage_ptr", - "typeString": "struct Position.Info" - } - }, - "visibility": "internal" - } - ], - "id": 5666, - "initialValue": { - "id": 5665, - "name": "self", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5654, - "src": "2205:4:27", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$5621_storage_ptr", - "typeString": "struct Position.Info storage pointer" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2185:24:27" - }, - { - "assignments": [ - 5668 - ], - "declarations": [ - { - "constant": false, - "id": 5668, - "mutability": "mutable", - "name": "liquidityNext", - "nodeType": "VariableDeclaration", - "scope": 5775, - "src": "2220:21:27", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "typeName": { - "id": 5667, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "2220:7:27", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "visibility": "internal" - } - ], - "id": 5669, - "nodeType": "VariableDeclarationStatement", - "src": "2220:21:27" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_int128", - "typeString": "int128" - }, - "id": 5672, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 5670, - "name": "liquidityDelta", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5656, - "src": "2255:14:27", - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 5671, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2273:1:27", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2255:19:27", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 5696, - "nodeType": "Block", - "src": "2430:96:27", - "statements": [ - { - "expression": { - "id": 5694, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 5687, - "name": "liquidityNext", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5668, - "src": "2444:13:27", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "expression": { - "id": 5690, - "name": "_self", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5664, - "src": "2483:5:27", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$5621_memory_ptr", - "typeString": "struct Position.Info memory" - } - }, - "id": 5691, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "liquidity", - "nodeType": "MemberAccess", - "referencedDeclaration": 5612, - "src": "2483:15:27", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - { - "id": 5692, - "name": "liquidityDelta", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5656, - "src": "2500:14:27", - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - ], - "expression": { - "id": 5688, - "name": "LiquidityMath", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4739, - "src": "2460:13:27", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_LiquidityMath_$4739_$", - "typeString": "type(library LiquidityMath)" - } - }, - "id": 5689, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "addDelta", - "nodeType": "MemberAccess", - "referencedDeclaration": 4738, - "src": "2460:22:27", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint128_$_t_int128_$returns$_t_uint128_$", - "typeString": "function (uint128,int128) pure returns (uint128)" - } - }, - "id": 5693, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2460:55:27", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "src": "2444:71:27", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "id": 5695, - "nodeType": "ExpressionStatement", - "src": "2444:71:27" - } - ] - }, - "id": 5697, - "nodeType": "IfStatement", - "src": "2251:275:27", - "trueBody": { - "id": 5686, - "nodeType": "Block", - "src": "2276:148:27", - "statements": [ - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "id": 5677, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 5674, - "name": "_self", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5664, - "src": "2298:5:27", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$5621_memory_ptr", - "typeString": "struct Position.Info memory" - } - }, - "id": 5675, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "liquidity", - "nodeType": "MemberAccess", - "referencedDeclaration": 5612, - "src": "2298:15:27", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 5676, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2316:1:27", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2298:19:27", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "4e50", - "id": 5678, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2319:4:27", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_ebb814de87c671cfe97a338672e9700a9288a1a6d16839e238618b2b7f2aa86d", - "typeString": "literal_string \"NP\"" - }, - "value": "NP" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_ebb814de87c671cfe97a338672e9700a9288a1a6d16839e238618b2b7f2aa86d", - "typeString": "literal_string \"NP\"" - } - ], - "id": 5673, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "2290:7:27", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 5679, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2290:34:27", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 5680, - "nodeType": "ExpressionStatement", - "src": "2290:34:27" - }, - { - "expression": { - "id": 5684, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 5681, - "name": "liquidityNext", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5668, - "src": "2382:13:27", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "expression": { - "id": 5682, - "name": "_self", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5664, - "src": "2398:5:27", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$5621_memory_ptr", - "typeString": "struct Position.Info memory" - } - }, - "id": 5683, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "liquidity", - "nodeType": "MemberAccess", - "referencedDeclaration": 5612, - "src": "2398:15:27", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "src": "2382:31:27", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "id": 5685, - "nodeType": "ExpressionStatement", - "src": "2382:31:27" - } - ] - } - }, - { - "assignments": [ - 5699 - ], - "declarations": [ - { - "constant": false, - "id": 5699, - "mutability": "mutable", - "name": "tokensOwed0", - "nodeType": "VariableDeclaration", - "scope": 5775, - "src": "2574:19:27", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "typeName": { - "id": 5698, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "2574:7:27", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "visibility": "internal" - } - ], - "id": 5714, - "initialValue": { - "arguments": [ - { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 5707, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 5704, - "name": "feeGrowthInside0X128", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5658, - "src": "2670:20:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "expression": { - "id": 5705, - "name": "_self", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5664, - "src": "2693:5:27", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$5621_memory_ptr", - "typeString": "struct Position.Info memory" - } - }, - "id": 5706, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "feeGrowthInside0LastX128", - "nodeType": "MemberAccess", - "referencedDeclaration": 5614, - "src": "2693:30:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2670:53:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "expression": { - "id": 5708, - "name": "_self", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5664, - "src": "2745:5:27", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$5621_memory_ptr", - "typeString": "struct Position.Info memory" - } - }, - "id": 5709, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "liquidity", - "nodeType": "MemberAccess", - "referencedDeclaration": 5612, - "src": "2745:15:27", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - { - "expression": { - "id": 5710, - "name": "FixedPoint128", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4504, - "src": "2782:13:27", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_FixedPoint128_$4504_$", - "typeString": "type(library FixedPoint128)" - } - }, - "id": 5711, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "Q128", - "nodeType": "MemberAccess", - "referencedDeclaration": 4503, - "src": "2782:18:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 5702, - "name": "FullMath", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4687, - "src": "2633:8:27", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_FullMath_$4687_$", - "typeString": "type(library FullMath)" - } - }, - "id": 5703, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "mulDiv", - "nodeType": "MemberAccess", - "referencedDeclaration": 4643, - "src": "2633:15:27", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 5712, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2633:185:27", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 5701, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2608:7:27", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint128_$", - "typeString": "type(uint128)" - }, - "typeName": { - "id": 5700, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "2608:7:27", - "typeDescriptions": {} - } - }, - "id": 5713, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2608:224:27", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2574:258:27" - }, - { - "assignments": [ - 5716 - ], - "declarations": [ - { - "constant": false, - "id": 5716, - "mutability": "mutable", - "name": "tokensOwed1", - "nodeType": "VariableDeclaration", - "scope": 5775, - "src": "2842:19:27", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "typeName": { - "id": 5715, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "2842:7:27", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "visibility": "internal" - } - ], - "id": 5731, - "initialValue": { - "arguments": [ - { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 5724, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 5721, - "name": "feeGrowthInside1X128", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5660, - "src": "2938:20:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "expression": { - "id": 5722, - "name": "_self", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5664, - "src": "2961:5:27", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$5621_memory_ptr", - "typeString": "struct Position.Info memory" - } - }, - "id": 5723, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "feeGrowthInside1LastX128", - "nodeType": "MemberAccess", - "referencedDeclaration": 5616, - "src": "2961:30:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2938:53:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "expression": { - "id": 5725, - "name": "_self", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5664, - "src": "3013:5:27", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$5621_memory_ptr", - "typeString": "struct Position.Info memory" - } - }, - "id": 5726, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "liquidity", - "nodeType": "MemberAccess", - "referencedDeclaration": 5612, - "src": "3013:15:27", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - { - "expression": { - "id": 5727, - "name": "FixedPoint128", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4504, - "src": "3050:13:27", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_FixedPoint128_$4504_$", - "typeString": "type(library FixedPoint128)" - } - }, - "id": 5728, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "Q128", - "nodeType": "MemberAccess", - "referencedDeclaration": 4503, - "src": "3050:18:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 5719, - "name": "FullMath", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4687, - "src": "2901:8:27", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_FullMath_$4687_$", - "typeString": "type(library FullMath)" - } - }, - "id": 5720, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "mulDiv", - "nodeType": "MemberAccess", - "referencedDeclaration": 4643, - "src": "2901:15:27", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 5729, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2901:185:27", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 5718, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2876:7:27", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint128_$", - "typeString": "type(uint128)" - }, - "typeName": { - "id": 5717, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "2876:7:27", - "typeDescriptions": {} - } - }, - "id": 5730, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2876:224:27", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2842:258:27" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_int128", - "typeString": "int128" - }, - "id": 5734, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 5732, - "name": "liquidityDelta", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5656, - "src": "3146:14:27", - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "hexValue": "30", - "id": 5733, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3164:1:27", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3146:19:27", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 5741, - "nodeType": "IfStatement", - "src": "3142:55:27", - "trueBody": { - "expression": { - "id": 5739, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 5735, - "name": "self", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5654, - "src": "3167:4:27", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$5621_storage_ptr", - "typeString": "struct Position.Info storage pointer" - } - }, - "id": 5737, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "liquidity", - "nodeType": "MemberAccess", - "referencedDeclaration": 5612, - "src": "3167:14:27", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 5738, - "name": "liquidityNext", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5668, - "src": "3184:13:27", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "src": "3167:30:27", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "id": 5740, - "nodeType": "ExpressionStatement", - "src": "3167:30:27" - } - }, - { - "expression": { - "id": 5746, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 5742, - "name": "self", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5654, - "src": "3207:4:27", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$5621_storage_ptr", - "typeString": "struct Position.Info storage pointer" - } - }, - "id": 5744, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "feeGrowthInside0LastX128", - "nodeType": "MemberAccess", - "referencedDeclaration": 5614, - "src": "3207:29:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 5745, - "name": "feeGrowthInside0X128", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5658, - "src": "3239:20:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3207:52:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 5747, - "nodeType": "ExpressionStatement", - "src": "3207:52:27" - }, - { - "expression": { - "id": 5752, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 5748, - "name": "self", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5654, - "src": "3269:4:27", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$5621_storage_ptr", - "typeString": "struct Position.Info storage pointer" - } - }, - "id": 5750, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "feeGrowthInside1LastX128", - "nodeType": "MemberAccess", - "referencedDeclaration": 5616, - "src": "3269:29:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 5751, - "name": "feeGrowthInside1X128", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5660, - "src": "3301:20:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3269:52:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 5753, - "nodeType": "ExpressionStatement", - "src": "3269:52:27" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 5760, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "id": 5756, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 5754, - "name": "tokensOwed0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5699, - "src": "3335:11:27", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 5755, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3349:1:27", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3335:15:27", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "id": 5759, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 5757, - "name": "tokensOwed1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5716, - "src": "3354:11:27", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 5758, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3368:1:27", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3354:15:27", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "3335:34:27", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 5774, - "nodeType": "IfStatement", - "src": "3331:235:27", - "trueBody": { - "id": 5773, - "nodeType": "Block", - "src": "3371:195:27", - "statements": [ - { - "expression": { - "id": 5765, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 5761, - "name": "self", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5654, - "src": "3479:4:27", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$5621_storage_ptr", - "typeString": "struct Position.Info storage pointer" - } - }, - "id": 5763, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "tokensOwed0", - "nodeType": "MemberAccess", - "referencedDeclaration": 5618, - "src": "3479:16:27", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "id": 5764, - "name": "tokensOwed0", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5699, - "src": "3499:11:27", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "src": "3479:31:27", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "id": 5766, - "nodeType": "ExpressionStatement", - "src": "3479:31:27" - }, - { - "expression": { - "id": 5771, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 5767, - "name": "self", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5654, - "src": "3524:4:27", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$5621_storage_ptr", - "typeString": "struct Position.Info storage pointer" - } - }, - "id": 5769, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "tokensOwed1", - "nodeType": "MemberAccess", - "referencedDeclaration": 5620, - "src": "3524:16:27", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "id": 5770, - "name": "tokensOwed1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5716, - "src": "3544:11:27", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "src": "3524:31:27", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "id": 5772, - "nodeType": "ExpressionStatement", - "src": "3524:31:27" - } - ] - } - } - ] - }, - "documentation": { - "id": 5652, - "nodeType": "StructuredDocumentation", - "src": "1536:469:27", - "text": "@notice Credits accumulated fees to a user's position\n @param self The individual position to update\n @param liquidityDelta The change in pool liquidity as a result of the position update\n @param feeGrowthInside0X128 The all-time fee growth in token0, per unit of liquidity, inside the position's tick boundaries\n @param feeGrowthInside1X128 The all-time fee growth in token1, per unit of liquidity, inside the position's tick boundaries" - }, - "id": 5776, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "update", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 5661, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 5654, - "mutability": "mutable", - "name": "self", - "nodeType": "VariableDeclaration", - "scope": 5776, - "src": "2035:17:27", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$5621_storage_ptr", - "typeString": "struct Position.Info" - }, - "typeName": { - "id": 5653, - "name": "Info", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5621, - "src": "2035:4:27", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$5621_storage_ptr", - "typeString": "struct Position.Info" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 5656, - "mutability": "mutable", - "name": "liquidityDelta", - "nodeType": "VariableDeclaration", - "scope": 5776, - "src": "2062:21:27", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - }, - "typeName": { - "id": 5655, - "name": "int128", - "nodeType": "ElementaryTypeName", - "src": "2062:6:27", - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 5658, - "mutability": "mutable", - "name": "feeGrowthInside0X128", - "nodeType": "VariableDeclaration", - "scope": 5776, - "src": "2093:28:27", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 5657, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2093:7:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 5660, - "mutability": "mutable", - "name": "feeGrowthInside1X128", - "nodeType": "VariableDeclaration", - "scope": 5776, - "src": "2131:28:27", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 5659, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2131:7:27", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "2025:140:27" - }, - "returnParameters": { - "id": 5662, - "nodeType": "ParameterList", - "parameters": [], - "src": "2175:0:27" - }, - "scope": 5777, - "src": "2010:1562:27", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - } - ], - "scope": 5778, - "src": "350:3224:27" - } - ], - "src": "37:3538:27" - }, - "id": 27 - }, - "@uniswap/v3-core/contracts/libraries/SafeCast.sol": { - "ast": { - "absolutePath": "@uniswap/v3-core/contracts/libraries/SafeCast.sol", - "exportedSymbols": { - "SafeCast": [ - 5847 - ] - }, - "id": 5848, - "license": "GPL-2.0-or-later", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 5779, - "literals": [ - "solidity", - ">=", - "0.5", - ".0" - ], - "nodeType": "PragmaDirective", - "src": "45:24:28" - }, - { - "abstract": false, - "baseContracts": [], - "contractDependencies": [], - "contractKind": "library", - "documentation": { - "id": 5780, - "nodeType": "StructuredDocumentation", - "src": "71:94:28", - "text": "@title Safe casting methods\n @notice Contains methods for safely casting between types" - }, - "fullyImplemented": true, - "id": 5847, - "linearizedBaseContracts": [ - 5847 - ], - "name": "SafeCast", - "nodeType": "ContractDefinition", - "nodes": [ - { - "body": { - "id": 5800, - "nodeType": "Block", - "src": "421:47:28", - "statements": [ - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 5797, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "id": 5794, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 5789, - "name": "z", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5786, - "src": "440:1:28", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 5792, - "name": "y", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5783, - "src": "452:1:28", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 5791, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "444:7:28", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint160_$", - "typeString": "type(uint160)" - }, - "typeName": { - "id": 5790, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "444:7:28", - "typeDescriptions": {} - } - }, - "id": 5793, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "444:10:28", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "src": "440:14:28", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - } - ], - "id": 5795, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "439:16:28", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "id": 5796, - "name": "y", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5783, - "src": "459:1:28", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "439:21:28", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 5788, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "431:7:28", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 5798, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "431:30:28", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 5799, - "nodeType": "ExpressionStatement", - "src": "431:30:28" - } - ] - }, - "documentation": { - "id": 5781, - "nodeType": "StructuredDocumentation", - "src": "188:164:28", - "text": "@notice Cast a uint256 to a uint160, revert on overflow\n @param y The uint256 to be downcasted\n @return z The downcasted integer, now type uint160" - }, - "id": 5801, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "toUint160", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 5784, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 5783, - "mutability": "mutable", - "name": "y", - "nodeType": "VariableDeclaration", - "scope": 5801, - "src": "376:9:28", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 5782, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "376:7:28", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "375:11:28" - }, - "returnParameters": { - "id": 5787, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 5786, - "mutability": "mutable", - "name": "z", - "nodeType": "VariableDeclaration", - "scope": 5801, - "src": "410:9:28", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "typeName": { - "id": 5785, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "410:7:28", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "visibility": "internal" - } - ], - "src": "409:11:28" - }, - "scope": 5847, - "src": "357:111:28", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 5821, - "nodeType": "Block", - "src": "713:46:28", - "statements": [ - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "id": 5818, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "id": 5815, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 5810, - "name": "z", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5807, - "src": "732:1:28", - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 5813, - "name": "y", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5804, - "src": "743:1:28", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - ], - "id": 5812, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "736:6:28", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_int128_$", - "typeString": "type(int128)" - }, - "typeName": { - "id": 5811, - "name": "int128", - "nodeType": "ElementaryTypeName", - "src": "736:6:28", - "typeDescriptions": {} - } - }, - "id": 5814, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "736:9:28", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - }, - "src": "732:13:28", - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - } - ], - "id": 5816, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "731:15:28", - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "id": 5817, - "name": "y", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5804, - "src": "750:1:28", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "src": "731:20:28", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 5809, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "723:7:28", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 5819, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "723:29:28", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 5820, - "nodeType": "ExpressionStatement", - "src": "723:29:28" - } - ] - }, - "documentation": { - "id": 5802, - "nodeType": "StructuredDocumentation", - "src": "474:173:28", - "text": "@notice Cast a int256 to a int128, revert on overflow or underflow\n @param y The int256 to be downcasted\n @return z The downcasted integer, now type int128" - }, - "id": 5822, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "toInt128", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 5805, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 5804, - "mutability": "mutable", - "name": "y", - "nodeType": "VariableDeclaration", - "scope": 5822, - "src": "670:8:28", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "typeName": { - "id": 5803, - "name": "int256", - "nodeType": "ElementaryTypeName", - "src": "670:6:28", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "visibility": "internal" - } - ], - "src": "669:10:28" - }, - "returnParameters": { - "id": 5808, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 5807, - "mutability": "mutable", - "name": "z", - "nodeType": "VariableDeclaration", - "scope": 5822, - "src": "703:8:28", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - }, - "typeName": { - "id": 5806, - "name": "int128", - "nodeType": "ElementaryTypeName", - "src": "703:6:28", - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - }, - "visibility": "internal" - } - ], - "src": "702:10:28" - }, - "scope": 5847, - "src": "652:107:28", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 5845, - "nodeType": "Block", - "src": "986:59:28", - "statements": [ - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 5835, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 5831, - "name": "y", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5825, - "src": "1004:1:28", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1", - "typeString": "int_const 5789...(69 digits omitted)...9968" - }, - "id": 5834, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "leftExpression": { - "hexValue": "32", - "id": 5832, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1008:1:28", - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "nodeType": "BinaryOperation", - "operator": "**", - "rightExpression": { - "hexValue": "323535", - "id": 5833, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1011:3:28", - "typeDescriptions": { - "typeIdentifier": "t_rational_255_by_1", - "typeString": "int_const 255" - }, - "value": "255" - }, - "src": "1008:6:28", - "typeDescriptions": { - "typeIdentifier": "t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1", - "typeString": "int_const 5789...(69 digits omitted)...9968" - } - }, - "src": "1004:10:28", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 5830, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "996:7:28", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 5836, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "996:19:28", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 5837, - "nodeType": "ExpressionStatement", - "src": "996:19:28" - }, - { - "expression": { - "id": 5843, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 5838, - "name": "z", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5828, - "src": "1025:1:28", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 5841, - "name": "y", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5825, - "src": "1036:1:28", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 5840, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1029:6:28", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_int256_$", - "typeString": "type(int256)" - }, - "typeName": { - "id": 5839, - "name": "int256", - "nodeType": "ElementaryTypeName", - "src": "1029:6:28", - "typeDescriptions": {} - } - }, - "id": 5842, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1029:9:28", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "src": "1025:13:28", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "id": 5844, - "nodeType": "ExpressionStatement", - "src": "1025:13:28" - } - ] - }, - "documentation": { - "id": 5823, - "nodeType": "StructuredDocumentation", - "src": "765:154:28", - "text": "@notice Cast a uint256 to a int256, revert on overflow\n @param y The uint256 to be casted\n @return z The casted integer, now type int256" - }, - "id": 5846, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "toInt256", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 5826, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 5825, - "mutability": "mutable", - "name": "y", - "nodeType": "VariableDeclaration", - "scope": 5846, - "src": "942:9:28", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 5824, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "942:7:28", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "941:11:28" - }, - "returnParameters": { - "id": 5829, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 5828, - "mutability": "mutable", - "name": "z", - "nodeType": "VariableDeclaration", - "scope": 5846, - "src": "976:8:28", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "typeName": { - "id": 5827, - "name": "int256", - "nodeType": "ElementaryTypeName", - "src": "976:6:28", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "visibility": "internal" - } - ], - "src": "975:10:28" - }, - "scope": 5847, - "src": "924:121:28", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - } - ], - "scope": 5848, - "src": "165:882:28" - } - ], - "src": "45:1003:28" - }, - "id": 28 - }, - "@uniswap/v3-core/contracts/libraries/SqrtPriceMath.sol": { - "ast": { - "absolutePath": "@uniswap/v3-core/contracts/libraries/SqrtPriceMath.sol", - "exportedSymbols": { - "FixedPoint96": [ - 4514 - ], - "FullMath": [ - 4687 - ], - "LowGasSafeMath": [ - 4869 - ], - "SafeCast": [ - 5847 - ], - "SqrtPriceMath": [ - 6363 - ], - "UnsafeMath": [ - 7934 - ] - }, - "id": 6364, - "license": "BUSL-1.1", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 5849, - "literals": [ - "solidity", - ">=", - "0.5", - ".0" - ], - "nodeType": "PragmaDirective", - "src": "37:24:29" - }, - { - "absolutePath": "@uniswap/v3-core/contracts/libraries/LowGasSafeMath.sol", - "file": "./LowGasSafeMath.sol", - "id": 5850, - "nodeType": "ImportDirective", - "scope": 6364, - "sourceUnit": 4870, - "src": "63:30:29", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "@uniswap/v3-core/contracts/libraries/SafeCast.sol", - "file": "./SafeCast.sol", - "id": 5851, - "nodeType": "ImportDirective", - "scope": 6364, - "sourceUnit": 5848, - "src": "94:24:29", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "@uniswap/v3-core/contracts/libraries/FullMath.sol", - "file": "./FullMath.sol", - "id": 5852, - "nodeType": "ImportDirective", - "scope": 6364, - "sourceUnit": 4688, - "src": "120:24:29", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "@uniswap/v3-core/contracts/libraries/UnsafeMath.sol", - "file": "./UnsafeMath.sol", - "id": 5853, - "nodeType": "ImportDirective", - "scope": 6364, - "sourceUnit": 7935, - "src": "145:26:29", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "@uniswap/v3-core/contracts/libraries/FixedPoint96.sol", - "file": "./FixedPoint96.sol", - "id": 5854, - "nodeType": "ImportDirective", - "scope": 6364, - "sourceUnit": 4515, - "src": "172:28:29", - "symbolAliases": [], - "unitAlias": "" - }, - { - "abstract": false, - "baseContracts": [], - "contractDependencies": [], - "contractKind": "library", - "documentation": { - "id": 5855, - "nodeType": "StructuredDocumentation", - "src": "202:167:29", - "text": "@title Functions based on Q64.96 sqrt price and liquidity\n @notice Contains the math that uses square root of price as a Q64.96 and liquidity to compute deltas" - }, - "fullyImplemented": true, - "id": 6363, - "linearizedBaseContracts": [ - 6363 - ], - "name": "SqrtPriceMath", - "nodeType": "ContractDefinition", - "nodes": [ - { - "id": 5858, - "libraryName": { - "id": 5856, - "name": "LowGasSafeMath", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 4869, - "src": "403:14:29", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LowGasSafeMath_$4869", - "typeString": "library LowGasSafeMath" - } - }, - "nodeType": "UsingForDirective", - "src": "397:33:29", - "typeName": { - "id": 5857, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "422:7:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - { - "id": 5861, - "libraryName": { - "id": 5859, - "name": "SafeCast", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5847, - "src": "441:8:29", - "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeCast_$5847", - "typeString": "library SafeCast" - } - }, - "nodeType": "UsingForDirective", - "src": "435:27:29", - "typeName": { - "id": 5860, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "454:7:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - { - "body": { - "id": 5980, - "nodeType": "Block", - "src": "1585:1186:29", - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 5877, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 5875, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5868, - "src": "1711:6:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 5876, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1721:1:29", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1711:11:29", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 5880, - "nodeType": "IfStatement", - "src": "1707:32:29", - "trueBody": { - "expression": { - "id": 5878, - "name": "sqrtPX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5864, - "src": "1731:8:29", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "functionReturnParameters": 5874, - "id": 5879, - "nodeType": "Return", - "src": "1724:15:29" - } - }, - { - "assignments": [ - 5882 - ], - "declarations": [ - { - "constant": false, - "id": 5882, - "mutability": "mutable", - "name": "numerator1", - "nodeType": "VariableDeclaration", - "scope": 5980, - "src": "1749:18:29", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 5881, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1749:7:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 5890, - "initialValue": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 5889, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "arguments": [ - { - "id": 5885, - "name": "liquidity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5866, - "src": "1778:9:29", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - ], - "id": 5884, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1770:7:29", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 5883, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1770:7:29", - "typeDescriptions": {} - } - }, - "id": 5886, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1770:18:29", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<<", - "rightExpression": { - "expression": { - "id": 5887, - "name": "FixedPoint96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4514, - "src": "1792:12:29", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_FixedPoint96_$4514_$", - "typeString": "type(library FixedPoint96)" - } - }, - "id": 5888, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "RESOLUTION", - "nodeType": "MemberAccess", - "referencedDeclaration": 4510, - "src": "1792:23:29", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "1770:45:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1749:66:29" - }, - { - "condition": { - "id": 5891, - "name": "add", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5870, - "src": "1830:3:29", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 5978, - "nodeType": "Block", - "src": "2321:444:29", - "statements": [ - { - "assignments": [ - 5944 - ], - "declarations": [ - { - "constant": false, - "id": 5944, - "mutability": "mutable", - "name": "product", - "nodeType": "VariableDeclaration", - "scope": 5978, - "src": "2335:15:29", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 5943, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2335:7:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 5945, - "nodeType": "VariableDeclarationStatement", - "src": "2335:15:29" - }, - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 5960, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 5956, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 5954, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "id": 5951, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 5947, - "name": "product", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5944, - "src": "2531:7:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 5950, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 5948, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5868, - "src": "2541:6:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "id": 5949, - "name": "sqrtPX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5864, - "src": "2550:8:29", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "src": "2541:17:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2531:27:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 5952, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "2530:29:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "id": 5953, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5868, - "src": "2562:6:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2530:38:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "id": 5955, - "name": "sqrtPX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5864, - "src": "2572:8:29", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "src": "2530:50:29", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 5959, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 5957, - "name": "numerator1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5882, - "src": "2584:10:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "id": 5958, - "name": "product", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5944, - "src": "2597:7:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2584:20:29", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "2530:74:29", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 5946, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "2522:7:29", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 5961, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2522:83:29", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 5962, - "nodeType": "ExpressionStatement", - "src": "2522:83:29" - }, - { - "assignments": [ - 5964 - ], - "declarations": [ - { - "constant": false, - "id": 5964, - "mutability": "mutable", - "name": "denominator", - "nodeType": "VariableDeclaration", - "scope": 5978, - "src": "2619:19:29", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 5963, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2619:7:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 5968, - "initialValue": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 5967, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 5965, - "name": "numerator1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5882, - "src": "2641:10:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "id": 5966, - "name": "product", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5944, - "src": "2654:7:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2641:20:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2619:42:29" - }, - { - "expression": { - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "arguments": [ - { - "id": 5971, - "name": "numerator1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5882, - "src": "2708:10:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 5972, - "name": "sqrtPX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5864, - "src": "2720:8:29", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - { - "id": 5973, - "name": "denominator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5964, - "src": "2730:11:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 5969, - "name": "FullMath", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4687, - "src": "2682:8:29", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_FullMath_$4687_$", - "typeString": "type(library FullMath)" - } - }, - "id": 5970, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "mulDivRoundingUp", - "nodeType": "MemberAccess", - "referencedDeclaration": 4686, - "src": "2682:25:29", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 5974, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2682:60:29", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 5975, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "toUint160", - "nodeType": "MemberAccess", - "referencedDeclaration": 5801, - "src": "2682:70:29", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint160_$bound_to$_t_uint256_$", - "typeString": "function (uint256) pure returns (uint160)" - } - }, - "id": 5976, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2682:72:29", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "functionReturnParameters": 5874, - "id": 5977, - "nodeType": "Return", - "src": "2675:79:29" - } - ] - }, - "id": 5979, - "nodeType": "IfStatement", - "src": "1826:939:29", - "trueBody": { - "id": 5942, - "nodeType": "Block", - "src": "1835:480:29", - "statements": [ - { - "assignments": [ - 5893 - ], - "declarations": [ - { - "constant": false, - "id": 5893, - "mutability": "mutable", - "name": "product", - "nodeType": "VariableDeclaration", - "scope": 5942, - "src": "1849:15:29", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 5892, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1849:7:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 5894, - "nodeType": "VariableDeclarationStatement", - "src": "1849:15:29" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 5904, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 5902, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "id": 5899, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 5895, - "name": "product", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5893, - "src": "1883:7:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 5898, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 5896, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5868, - "src": "1893:6:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "id": 5897, - "name": "sqrtPX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5864, - "src": "1902:8:29", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "src": "1893:17:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1883:27:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 5900, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "1882:29:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "id": 5901, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5868, - "src": "1914:6:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1882:38:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "id": 5903, - "name": "sqrtPX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5864, - "src": "1924:8:29", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "src": "1882:50:29", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 5926, - "nodeType": "IfStatement", - "src": "1878:323:29", - "trueBody": { - "id": 5925, - "nodeType": "Block", - "src": "1934:267:29", - "statements": [ - { - "assignments": [ - 5906 - ], - "declarations": [ - { - "constant": false, - "id": 5906, - "mutability": "mutable", - "name": "denominator", - "nodeType": "VariableDeclaration", - "scope": 5925, - "src": "1952:19:29", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 5905, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1952:7:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 5910, - "initialValue": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 5909, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 5907, - "name": "numerator1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5882, - "src": "1974:10:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "id": 5908, - "name": "product", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5893, - "src": "1987:7:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1974:20:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1952:42:29" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 5913, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 5911, - "name": "denominator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5906, - "src": "2016:11:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "id": 5912, - "name": "numerator1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5882, - "src": "2031:10:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2016:25:29", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 5924, - "nodeType": "IfStatement", - "src": "2012:174:29", - "trueBody": { - "expression": { - "arguments": [ - { - "arguments": [ - { - "id": 5918, - "name": "numerator1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5882, - "src": "2151:10:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 5919, - "name": "sqrtPX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5864, - "src": "2163:8:29", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - { - "id": 5920, - "name": "denominator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5906, - "src": "2173:11:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 5916, - "name": "FullMath", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4687, - "src": "2125:8:29", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_FullMath_$4687_$", - "typeString": "type(library FullMath)" - } - }, - "id": 5917, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "mulDivRoundingUp", - "nodeType": "MemberAccess", - "referencedDeclaration": 4686, - "src": "2125:25:29", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 5921, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2125:60:29", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 5915, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2117:7:29", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint160_$", - "typeString": "type(uint160)" - }, - "typeName": { - "id": 5914, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "2117:7:29", - "typeDescriptions": {} - } - }, - "id": 5922, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2117:69:29", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "functionReturnParameters": 5874, - "id": 5923, - "nodeType": "Return", - "src": "2110:76:29" - } - } - ] - } - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "id": 5931, - "name": "numerator1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5882, - "src": "2255:10:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "arguments": [ - { - "id": 5937, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5868, - "src": "2295:6:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 5934, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 5932, - "name": "numerator1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5882, - "src": "2268:10:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "id": 5933, - "name": "sqrtPX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5864, - "src": "2281:8:29", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "src": "2268:21:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 5935, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "2267:23:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 5936, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "add", - "nodeType": "MemberAccess", - "referencedDeclaration": 4764, - "src": "2267:27:29", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 5938, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2267:35:29", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 5929, - "name": "UnsafeMath", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7934, - "src": "2230:10:29", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_UnsafeMath_$7934_$", - "typeString": "type(library UnsafeMath)" - } - }, - "id": 5930, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "divRoundingUp", - "nodeType": "MemberAccess", - "referencedDeclaration": 7933, - "src": "2230:24:29", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 5939, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2230:73:29", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 5928, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2222:7:29", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint160_$", - "typeString": "type(uint160)" - }, - "typeName": { - "id": 5927, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "2222:7:29", - "typeDescriptions": {} - } - }, - "id": 5940, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2222:82:29", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "functionReturnParameters": 5874, - "id": 5941, - "nodeType": "Return", - "src": "2215:89:29" - } - ] - } - } - ] - }, - "documentation": { - "id": 5862, - "nodeType": "StructuredDocumentation", - "src": "468:932:29", - "text": "@notice Gets the next sqrt price given a delta of token0\n @dev Always rounds up, because in the exact output case (increasing price) we need to move the price at least\n far enough to get the desired output amount, and in the exact input case (decreasing price) we need to move the\n price less in order to not send too much output.\n The most precise formula for this is liquidity * sqrtPX96 / (liquidity +- amount * sqrtPX96),\n if this is impossible because of overflow, we calculate liquidity / (liquidity / sqrtPX96 +- amount).\n @param sqrtPX96 The starting price, i.e. before accounting for the token0 delta\n @param liquidity The amount of usable liquidity\n @param amount How much of token0 to add or remove from virtual reserves\n @param add Whether to add or remove the amount of token0\n @return The price after adding or removing amount, depending on add" - }, - "id": 5981, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getNextSqrtPriceFromAmount0RoundingUp", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 5871, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 5864, - "mutability": "mutable", - "name": "sqrtPX96", - "nodeType": "VariableDeclaration", - "scope": 5981, - "src": "1461:16:29", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "typeName": { - "id": 5863, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "1461:7:29", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 5866, - "mutability": "mutable", - "name": "liquidity", - "nodeType": "VariableDeclaration", - "scope": 5981, - "src": "1487:17:29", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "typeName": { - "id": 5865, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "1487:7:29", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 5868, - "mutability": "mutable", - "name": "amount", - "nodeType": "VariableDeclaration", - "scope": 5981, - "src": "1514:14:29", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 5867, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1514:7:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 5870, - "mutability": "mutable", - "name": "add", - "nodeType": "VariableDeclaration", - "scope": 5981, - "src": "1538:8:29", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 5869, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "1538:4:29", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "src": "1451:101:29" - }, - "returnParameters": { - "id": 5874, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 5873, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 5981, - "src": "1576:7:29", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "typeName": { - "id": 5872, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "1576:7:29", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "visibility": "internal" - } - ], - "src": "1575:9:29" - }, - "scope": 6363, - "src": "1405:1366:29", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 6075, - "nodeType": "Block", - "src": "3779:971:29", - "statements": [ - { - "condition": { - "id": 5995, - "name": "add", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5990, - "src": "3947:3:29", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 6073, - "nodeType": "Block", - "src": "4303:441:29", - "statements": [ - { - "assignments": [ - 6034 - ], - "declarations": [ - { - "constant": false, - "id": 6034, - "mutability": "mutable", - "name": "quotient", - "nodeType": "VariableDeclaration", - "scope": 6073, - "src": "4317:16:29", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 6033, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4317:7:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 6059, - "initialValue": { - "components": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 6041, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 6035, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5988, - "src": "4374:6:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "expression": { - "arguments": [ - { - "id": 6038, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "4389:7:29", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint160_$", - "typeString": "type(uint160)" - }, - "typeName": { - "id": 6037, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "4389:7:29", - "typeDescriptions": {} - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_type$_t_uint160_$", - "typeString": "type(uint160)" - } - ], - "id": 6036, - "name": "type", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -27, - "src": "4384:4:29", - "typeDescriptions": { - "typeIdentifier": "t_function_metatype_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 6039, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4384:13:29", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_magic_meta_type_t_uint160", - "typeString": "type(uint160)" - } - }, - "id": 6040, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "max", - "nodeType": "MemberAccess", - "src": "4384:17:29", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "src": "4374:27:29", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseExpression": { - "arguments": [ - { - "id": 6052, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5988, - "src": "4551:6:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "expression": { - "id": 6053, - "name": "FixedPoint96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4514, - "src": "4559:12:29", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_FixedPoint96_$4514_$", - "typeString": "type(library FixedPoint96)" - } - }, - "id": 6054, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "Q96", - "nodeType": "MemberAccess", - "referencedDeclaration": 4513, - "src": "4559:16:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 6055, - "name": "liquidity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5986, - "src": "4577:9:29", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - ], - "expression": { - "id": 6050, - "name": "FullMath", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4687, - "src": "4525:8:29", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_FullMath_$4687_$", - "typeString": "type(library FullMath)" - } - }, - "id": 6051, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "mulDivRoundingUp", - "nodeType": "MemberAccess", - "referencedDeclaration": 4686, - "src": "4525:25:29", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 6056, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4525:62:29", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 6057, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "Conditional", - "src": "4374:213:29", - "trueExpression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 6047, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 6044, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5988, - "src": "4453:6:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<<", - "rightExpression": { - "expression": { - "id": 6045, - "name": "FixedPoint96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4514, - "src": "4463:12:29", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_FixedPoint96_$4514_$", - "typeString": "type(library FixedPoint96)" - } - }, - "id": 6046, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "RESOLUTION", - "nodeType": "MemberAccess", - "referencedDeclaration": 4510, - "src": "4463:23:29", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "4453:33:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 6048, - "name": "liquidity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5986, - "src": "4488:9:29", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - ], - "expression": { - "id": 6042, - "name": "UnsafeMath", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7934, - "src": "4428:10:29", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_UnsafeMath_$7934_$", - "typeString": "type(library UnsafeMath)" - } - }, - "id": 6043, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "divRoundingUp", - "nodeType": "MemberAccess", - "referencedDeclaration": 7933, - "src": "4428:24:29", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 6049, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4428:70:29", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 6058, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "4352:253:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "4317:288:29" - }, - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 6063, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 6061, - "name": "sqrtPX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5984, - "src": "4628:8:29", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "id": 6062, - "name": "quotient", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6034, - "src": "4639:8:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4628:19:29", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 6060, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "4620:7:29", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 6064, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4620:28:29", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 6065, - "nodeType": "ExpressionStatement", - "src": "4620:28:29" - }, - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 6070, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 6068, - "name": "sqrtPX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5984, - "src": "4713:8:29", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "id": 6069, - "name": "quotient", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6034, - "src": "4724:8:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4713:19:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 6067, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "4705:7:29", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint160_$", - "typeString": "type(uint160)" - }, - "typeName": { - "id": 6066, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "4705:7:29", - "typeDescriptions": {} - } - }, - "id": 6071, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4705:28:29", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "functionReturnParameters": 5994, - "id": 6072, - "nodeType": "Return", - "src": "4698:35:29" - } - ] - }, - "id": 6074, - "nodeType": "IfStatement", - "src": "3943:801:29", - "trueBody": { - "id": 6032, - "nodeType": "Block", - "src": "3952:345:29", - "statements": [ - { - "assignments": [ - 5997 - ], - "declarations": [ - { - "constant": false, - "id": 5997, - "mutability": "mutable", - "name": "quotient", - "nodeType": "VariableDeclaration", - "scope": 6032, - "src": "3966:16:29", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 5996, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3966:7:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 6021, - "initialValue": { - "components": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 6004, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 5998, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5988, - "src": "4023:6:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "expression": { - "arguments": [ - { - "id": 6001, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "4038:7:29", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint160_$", - "typeString": "type(uint160)" - }, - "typeName": { - "id": 6000, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "4038:7:29", - "typeDescriptions": {} - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_type$_t_uint160_$", - "typeString": "type(uint160)" - } - ], - "id": 5999, - "name": "type", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -27, - "src": "4033:4:29", - "typeDescriptions": { - "typeIdentifier": "t_function_metatype_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 6002, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4033:13:29", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_magic_meta_type_t_uint160", - "typeString": "type(uint160)" - } - }, - "id": 6003, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "max", - "nodeType": "MemberAccess", - "src": "4033:17:29", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "src": "4023:27:29", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseExpression": { - "arguments": [ - { - "id": 6014, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5988, - "src": "4167:6:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "expression": { - "id": 6015, - "name": "FixedPoint96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4514, - "src": "4175:12:29", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_FixedPoint96_$4514_$", - "typeString": "type(library FixedPoint96)" - } - }, - "id": 6016, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "Q96", - "nodeType": "MemberAccess", - "referencedDeclaration": 4513, - "src": "4175:16:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 6017, - "name": "liquidity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5986, - "src": "4193:9:29", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - ], - "expression": { - "id": 6012, - "name": "FullMath", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4687, - "src": "4151:8:29", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_FullMath_$4687_$", - "typeString": "type(library FullMath)" - } - }, - "id": 6013, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "mulDiv", - "nodeType": "MemberAccess", - "referencedDeclaration": 4643, - "src": "4151:15:29", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 6018, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4151:52:29", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 6019, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "Conditional", - "src": "4023:180:29", - "trueExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 6011, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 6008, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 6005, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5988, - "src": "4078:6:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<<", - "rightExpression": { - "expression": { - "id": 6006, - "name": "FixedPoint96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4514, - "src": "4088:12:29", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_FixedPoint96_$4514_$", - "typeString": "type(library FixedPoint96)" - } - }, - "id": 6007, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "RESOLUTION", - "nodeType": "MemberAccess", - "referencedDeclaration": 4510, - "src": "4088:23:29", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "4078:33:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 6009, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "4077:35:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "id": 6010, - "name": "liquidity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5986, - "src": "4115:9:29", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "src": "4077:47:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 6020, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "4001:220:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3966:255:29" - }, - { - "expression": { - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "arguments": [ - { - "id": 6027, - "name": "quotient", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5997, - "src": "4265:8:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "arguments": [ - { - "id": 6024, - "name": "sqrtPX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5984, - "src": "4251:8:29", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - ], - "id": 6023, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "4243:7:29", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 6022, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4243:7:29", - "typeDescriptions": {} - } - }, - "id": 6025, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4243:17:29", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 6026, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "add", - "nodeType": "MemberAccess", - "referencedDeclaration": 4764, - "src": "4243:21:29", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 6028, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4243:31:29", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 6029, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "toUint160", - "nodeType": "MemberAccess", - "referencedDeclaration": 5801, - "src": "4243:41:29", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint160_$bound_to$_t_uint256_$", - "typeString": "function (uint256) pure returns (uint160)" - } - }, - "id": 6030, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4243:43:29", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "functionReturnParameters": 5994, - "id": 6031, - "nodeType": "Return", - "src": "4236:50:29" - } - ] - } - } - ] - }, - "documentation": { - "id": 5982, - "nodeType": "StructuredDocumentation", - "src": "2777:815:29", - "text": "@notice Gets the next sqrt price given a delta of token1\n @dev Always rounds down, because in the exact output case (decreasing price) we need to move the price at least\n far enough to get the desired output amount, and in the exact input case (increasing price) we need to move the\n price less in order to not send too much output.\n The formula we compute is within <1 wei of the lossless version: sqrtPX96 +- amount / liquidity\n @param sqrtPX96 The starting price, i.e., before accounting for the token1 delta\n @param liquidity The amount of usable liquidity\n @param amount How much of token1 to add, or remove, from virtual reserves\n @param add Whether to add, or remove, the amount of token1\n @return The price after adding or removing `amount`" - }, - "id": 6076, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getNextSqrtPriceFromAmount1RoundingDown", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 5991, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 5984, - "mutability": "mutable", - "name": "sqrtPX96", - "nodeType": "VariableDeclaration", - "scope": 6076, - "src": "3655:16:29", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "typeName": { - "id": 5983, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "3655:7:29", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 5986, - "mutability": "mutable", - "name": "liquidity", - "nodeType": "VariableDeclaration", - "scope": 6076, - "src": "3681:17:29", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "typeName": { - "id": 5985, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "3681:7:29", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 5988, - "mutability": "mutable", - "name": "amount", - "nodeType": "VariableDeclaration", - "scope": 6076, - "src": "3708:14:29", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 5987, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3708:7:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 5990, - "mutability": "mutable", - "name": "add", - "nodeType": "VariableDeclaration", - "scope": 6076, - "src": "3732:8:29", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 5989, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "3732:4:29", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "src": "3645:101:29" - }, - "returnParameters": { - "id": 5994, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 5993, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 6076, - "src": "3770:7:29", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "typeName": { - "id": 5992, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "3770:7:29", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "visibility": "internal" - } - ], - "src": "3769:9:29" - }, - "scope": 6363, - "src": "3597:1153:29", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 6117, - "nodeType": "Block", - "src": "5485:364:29", - "statements": [ - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "id": 6093, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 6091, - "name": "sqrtPX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6079, - "src": "5503:8:29", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 6092, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5514:1:29", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "5503:12:29", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 6090, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "5495:7:29", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 6094, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5495:21:29", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 6095, - "nodeType": "ExpressionStatement", - "src": "5495:21:29" - }, - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "id": 6099, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 6097, - "name": "liquidity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6081, - "src": "5534:9:29", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 6098, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5546:1:29", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "5534:13:29", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 6096, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "5526:7:29", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 6100, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5526:22:29", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 6101, - "nodeType": "ExpressionStatement", - "src": "5526:22:29" - }, - { - "expression": { - "condition": { - "id": 6102, - "name": "zeroForOne", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6085, - "src": "5644:10:29", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseExpression": { - "arguments": [ - { - "id": 6110, - "name": "sqrtPX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6079, - "src": "5806:8:29", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - { - "id": 6111, - "name": "liquidity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6081, - "src": "5816:9:29", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - { - "id": 6112, - "name": "amountIn", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6083, - "src": "5827:8:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "hexValue": "74727565", - "id": 6113, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5837:4:29", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 6109, - "name": "getNextSqrtPriceFromAmount1RoundingDown", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6076, - "src": "5766:39:29", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint160_$_t_uint128_$_t_uint256_$_t_bool_$returns$_t_uint160_$", - "typeString": "function (uint160,uint128,uint256,bool) pure returns (uint160)" - } - }, - "id": 6114, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5766:76:29", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "id": 6115, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "Conditional", - "src": "5644:198:29", - "trueExpression": { - "arguments": [ - { - "id": 6104, - "name": "sqrtPX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6079, - "src": "5711:8:29", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - { - "id": 6105, - "name": "liquidity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6081, - "src": "5721:9:29", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - { - "id": 6106, - "name": "amountIn", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6083, - "src": "5732:8:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "hexValue": "74727565", - "id": 6107, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5742:4:29", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 6103, - "name": "getNextSqrtPriceFromAmount0RoundingUp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5981, - "src": "5673:37:29", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint160_$_t_uint128_$_t_uint256_$_t_bool_$returns$_t_uint160_$", - "typeString": "function (uint160,uint128,uint256,bool) pure returns (uint160)" - } - }, - "id": 6108, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5673:74:29", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "functionReturnParameters": 6089, - "id": 6116, - "nodeType": "Return", - "src": "5625:217:29" - } - ] - }, - "documentation": { - "id": 6077, - "nodeType": "StructuredDocumentation", - "src": "4756:538:29", - "text": "@notice Gets the next sqrt price given an input amount of token0 or token1\n @dev Throws if price or liquidity are 0, or if the next price is out of bounds\n @param sqrtPX96 The starting price, i.e., before accounting for the input amount\n @param liquidity The amount of usable liquidity\n @param amountIn How much of token0, or token1, is being swapped in\n @param zeroForOne Whether the amount in is token0 or token1\n @return sqrtQX96 The price after adding the input amount to token0 or token1" - }, - "id": 6118, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getNextSqrtPriceFromInput", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 6086, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 6079, - "mutability": "mutable", - "name": "sqrtPX96", - "nodeType": "VariableDeclaration", - "scope": 6118, - "src": "5343:16:29", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "typeName": { - "id": 6078, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "5343:7:29", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 6081, - "mutability": "mutable", - "name": "liquidity", - "nodeType": "VariableDeclaration", - "scope": 6118, - "src": "5369:17:29", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "typeName": { - "id": 6080, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "5369:7:29", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 6083, - "mutability": "mutable", - "name": "amountIn", - "nodeType": "VariableDeclaration", - "scope": 6118, - "src": "5396:16:29", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 6082, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5396:7:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 6085, - "mutability": "mutable", - "name": "zeroForOne", - "nodeType": "VariableDeclaration", - "scope": 6118, - "src": "5422:15:29", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 6084, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "5422:4:29", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "src": "5333:110:29" - }, - "returnParameters": { - "id": 6089, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 6088, - "mutability": "mutable", - "name": "sqrtQX96", - "nodeType": "VariableDeclaration", - "scope": 6118, - "src": "5467:16:29", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "typeName": { - "id": 6087, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "5467:7:29", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "visibility": "internal" - } - ], - "src": "5466:18:29" - }, - "scope": 6363, - "src": "5299:550:29", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 6159, - "nodeType": "Block", - "src": "6583:362:29", - "statements": [ - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "id": 6135, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 6133, - "name": "sqrtPX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6121, - "src": "6601:8:29", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 6134, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6612:1:29", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "6601:12:29", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 6132, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "6593:7:29", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 6136, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6593:21:29", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 6137, - "nodeType": "ExpressionStatement", - "src": "6593:21:29" - }, - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "id": 6141, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 6139, - "name": "liquidity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6123, - "src": "6632:9:29", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 6140, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6644:1:29", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "6632:13:29", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 6138, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "6624:7:29", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 6142, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6624:22:29", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 6143, - "nodeType": "ExpressionStatement", - "src": "6624:22:29" - }, - { - "expression": { - "condition": { - "id": 6144, - "name": "zeroForOne", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6127, - "src": "6736:10:29", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseExpression": { - "arguments": [ - { - "id": 6152, - "name": "sqrtPX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6121, - "src": "6900:8:29", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - { - "id": 6153, - "name": "liquidity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6123, - "src": "6910:9:29", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - { - "id": 6154, - "name": "amountOut", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6125, - "src": "6921:9:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "hexValue": "66616c7365", - "id": 6155, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6932:5:29", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 6151, - "name": "getNextSqrtPriceFromAmount0RoundingUp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 5981, - "src": "6862:37:29", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint160_$_t_uint128_$_t_uint256_$_t_bool_$returns$_t_uint160_$", - "typeString": "function (uint160,uint128,uint256,bool) pure returns (uint160)" - } - }, - "id": 6156, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6862:76:29", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "id": 6157, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "Conditional", - "src": "6736:202:29", - "trueExpression": { - "arguments": [ - { - "id": 6146, - "name": "sqrtPX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6121, - "src": "6805:8:29", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - { - "id": 6147, - "name": "liquidity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6123, - "src": "6815:9:29", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - { - "id": 6148, - "name": "amountOut", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6125, - "src": "6826:9:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "hexValue": "66616c7365", - "id": 6149, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6837:5:29", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 6145, - "name": "getNextSqrtPriceFromAmount1RoundingDown", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6076, - "src": "6765:39:29", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint160_$_t_uint128_$_t_uint256_$_t_bool_$returns$_t_uint160_$", - "typeString": "function (uint160,uint128,uint256,bool) pure returns (uint160)" - } - }, - "id": 6150, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6765:78:29", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "functionReturnParameters": 6131, - "id": 6158, - "nodeType": "Return", - "src": "6717:221:29" - } - ] - }, - "documentation": { - "id": 6119, - "nodeType": "StructuredDocumentation", - "src": "5855:535:29", - "text": "@notice Gets the next sqrt price given an output amount of token0 or token1\n @dev Throws if price or liquidity are 0 or the next price is out of bounds\n @param sqrtPX96 The starting price before accounting for the output amount\n @param liquidity The amount of usable liquidity\n @param amountOut How much of token0, or token1, is being swapped out\n @param zeroForOne Whether the amount out is token0 or token1\n @return sqrtQX96 The price after removing the output amount of token0 or token1" - }, - "id": 6160, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getNextSqrtPriceFromOutput", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 6128, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 6121, - "mutability": "mutable", - "name": "sqrtPX96", - "nodeType": "VariableDeclaration", - "scope": 6160, - "src": "6440:16:29", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "typeName": { - "id": 6120, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "6440:7:29", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 6123, - "mutability": "mutable", - "name": "liquidity", - "nodeType": "VariableDeclaration", - "scope": 6160, - "src": "6466:17:29", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "typeName": { - "id": 6122, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "6466:7:29", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 6125, - "mutability": "mutable", - "name": "amountOut", - "nodeType": "VariableDeclaration", - "scope": 6160, - "src": "6493:17:29", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 6124, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6493:7:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 6127, - "mutability": "mutable", - "name": "zeroForOne", - "nodeType": "VariableDeclaration", - "scope": 6160, - "src": "6520:15:29", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 6126, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "6520:4:29", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "src": "6430:111:29" - }, - "returnParameters": { - "id": 6131, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 6130, - "mutability": "mutable", - "name": "sqrtQX96", - "nodeType": "VariableDeclaration", - "scope": 6160, - "src": "6565:16:29", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "typeName": { - "id": 6129, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "6565:7:29", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "visibility": "internal" - } - ], - "src": "6564:18:29" - }, - "scope": 6363, - "src": "6395:550:29", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 6229, - "nodeType": "Block", - "src": "7675:597:29", - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "id": 6176, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 6174, - "name": "sqrtRatioAX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6163, - "src": "7689:13:29", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "id": 6175, - "name": "sqrtRatioBX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6165, - "src": "7705:13:29", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "src": "7689:29:29", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 6185, - "nodeType": "IfStatement", - "src": "7685:98:29", - "trueBody": { - "expression": { - "id": 6183, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "components": [ - { - "id": 6177, - "name": "sqrtRatioAX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6163, - "src": "7721:13:29", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - { - "id": 6178, - "name": "sqrtRatioBX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6165, - "src": "7736:13:29", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - } - ], - "id": 6179, - "isConstant": false, - "isInlineArray": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "TupleExpression", - "src": "7720:30:29", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint160_$_t_uint160_$", - "typeString": "tuple(uint160,uint160)" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "components": [ - { - "id": 6180, - "name": "sqrtRatioBX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6165, - "src": "7754:13:29", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - { - "id": 6181, - "name": "sqrtRatioAX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6163, - "src": "7769:13:29", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - } - ], - "id": 6182, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "7753:30:29", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint160_$_t_uint160_$", - "typeString": "tuple(uint160,uint160)" - } - }, - "src": "7720:63:29", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 6184, - "nodeType": "ExpressionStatement", - "src": "7720:63:29" - } - }, - { - "assignments": [ - 6187 - ], - "declarations": [ - { - "constant": false, - "id": 6187, - "mutability": "mutable", - "name": "numerator1", - "nodeType": "VariableDeclaration", - "scope": 6229, - "src": "7794:18:29", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 6186, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7794:7:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 6195, - "initialValue": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 6194, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "arguments": [ - { - "id": 6190, - "name": "liquidity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6167, - "src": "7823:9:29", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - ], - "id": 6189, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "7815:7:29", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 6188, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7815:7:29", - "typeDescriptions": {} - } - }, - "id": 6191, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7815:18:29", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<<", - "rightExpression": { - "expression": { - "id": 6192, - "name": "FixedPoint96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4514, - "src": "7837:12:29", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_FixedPoint96_$4514_$", - "typeString": "type(library FixedPoint96)" - } - }, - "id": 6193, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "RESOLUTION", - "nodeType": "MemberAccess", - "referencedDeclaration": 4510, - "src": "7837:23:29", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "7815:45:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "7794:66:29" - }, - { - "assignments": [ - 6197 - ], - "declarations": [ - { - "constant": false, - "id": 6197, - "mutability": "mutable", - "name": "numerator2", - "nodeType": "VariableDeclaration", - "scope": 6229, - "src": "7870:18:29", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 6196, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7870:7:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 6201, - "initialValue": { - "commonType": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "id": 6200, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 6198, - "name": "sqrtRatioBX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6165, - "src": "7891:13:29", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "id": 6199, - "name": "sqrtRatioAX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6163, - "src": "7907:13:29", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "src": "7891:29:29", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "7870:50:29" - }, - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "id": 6205, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 6203, - "name": "sqrtRatioAX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6163, - "src": "7939:13:29", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 6204, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7955:1:29", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "7939:17:29", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 6202, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "7931:7:29", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 6206, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7931:26:29", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 6207, - "nodeType": "ExpressionStatement", - "src": "7931:26:29" - }, - { - "expression": { - "condition": { - "id": 6208, - "name": "roundUp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6169, - "src": "7987:7:29", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 6226, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "arguments": [ - { - "id": 6221, - "name": "numerator1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6187, - "src": "8211:10:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 6222, - "name": "numerator2", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6197, - "src": "8223:10:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 6223, - "name": "sqrtRatioBX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6165, - "src": "8235:13:29", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - ], - "expression": { - "id": 6219, - "name": "FullMath", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4687, - "src": "8195:8:29", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_FullMath_$4687_$", - "typeString": "type(library FullMath)" - } - }, - "id": 6220, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "mulDiv", - "nodeType": "MemberAccess", - "referencedDeclaration": 4643, - "src": "8195:15:29", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 6224, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8195:54:29", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "id": 6225, - "name": "sqrtRatioAX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6163, - "src": "8252:13:29", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "src": "8195:70:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 6227, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "Conditional", - "src": "7987:278:29", - "trueExpression": { - "arguments": [ - { - "arguments": [ - { - "id": 6213, - "name": "numerator1", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6187, - "src": "8085:10:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 6214, - "name": "numerator2", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6197, - "src": "8097:10:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 6215, - "name": "sqrtRatioBX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6165, - "src": "8109:13:29", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - ], - "expression": { - "id": 6211, - "name": "FullMath", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4687, - "src": "8059:8:29", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_FullMath_$4687_$", - "typeString": "type(library FullMath)" - } - }, - "id": 6212, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "mulDivRoundingUp", - "nodeType": "MemberAccess", - "referencedDeclaration": 4686, - "src": "8059:25:29", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 6216, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8059:64:29", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 6217, - "name": "sqrtRatioAX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6163, - "src": "8145:13:29", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - ], - "expression": { - "id": 6209, - "name": "UnsafeMath", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7934, - "src": "8013:10:29", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_UnsafeMath_$7934_$", - "typeString": "type(library UnsafeMath)" - } - }, - "id": 6210, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "divRoundingUp", - "nodeType": "MemberAccess", - "referencedDeclaration": 7933, - "src": "8013:24:29", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 6218, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8013:163:29", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 6173, - "id": 6228, - "nodeType": "Return", - "src": "7968:297:29" - } - ] - }, - "documentation": { - "id": 6161, - "nodeType": "StructuredDocumentation", - "src": "6951:537:29", - "text": "@notice Gets the amount0 delta between two prices\n @dev Calculates liquidity / sqrt(lower) - liquidity / sqrt(upper),\n i.e. liquidity * (sqrt(upper) - sqrt(lower)) / (sqrt(upper) * sqrt(lower))\n @param sqrtRatioAX96 A sqrt price\n @param sqrtRatioBX96 Another sqrt price\n @param liquidity The amount of usable liquidity\n @param roundUp Whether to round the amount up or down\n @return amount0 Amount of token0 required to cover a position of size liquidity between the two passed prices" - }, - "id": 6230, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getAmount0Delta", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 6170, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 6163, - "mutability": "mutable", - "name": "sqrtRatioAX96", - "nodeType": "VariableDeclaration", - "scope": 6230, - "src": "7527:21:29", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "typeName": { - "id": 6162, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "7527:7:29", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 6165, - "mutability": "mutable", - "name": "sqrtRatioBX96", - "nodeType": "VariableDeclaration", - "scope": 6230, - "src": "7558:21:29", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "typeName": { - "id": 6164, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "7558:7:29", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 6167, - "mutability": "mutable", - "name": "liquidity", - "nodeType": "VariableDeclaration", - "scope": 6230, - "src": "7589:17:29", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "typeName": { - "id": 6166, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "7589:7:29", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 6169, - "mutability": "mutable", - "name": "roundUp", - "nodeType": "VariableDeclaration", - "scope": 6230, - "src": "7616:12:29", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 6168, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "7616:4:29", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "src": "7517:117:29" - }, - "returnParameters": { - "id": 6173, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 6172, - "mutability": "mutable", - "name": "amount0", - "nodeType": "VariableDeclaration", - "scope": 6230, - "src": "7658:15:29", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 6171, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7658:7:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "7657:17:29" - }, - "scope": 6363, - "src": "7493:779:29", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 6277, - "nodeType": "Block", - "src": "8909:350:29", - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "id": 6246, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 6244, - "name": "sqrtRatioAX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6233, - "src": "8923:13:29", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "id": 6245, - "name": "sqrtRatioBX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6235, - "src": "8939:13:29", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "src": "8923:29:29", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 6255, - "nodeType": "IfStatement", - "src": "8919:98:29", - "trueBody": { - "expression": { - "id": 6253, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "components": [ - { - "id": 6247, - "name": "sqrtRatioAX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6233, - "src": "8955:13:29", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - { - "id": 6248, - "name": "sqrtRatioBX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6235, - "src": "8970:13:29", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - } - ], - "id": 6249, - "isConstant": false, - "isInlineArray": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "TupleExpression", - "src": "8954:30:29", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint160_$_t_uint160_$", - "typeString": "tuple(uint160,uint160)" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "components": [ - { - "id": 6250, - "name": "sqrtRatioBX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6235, - "src": "8988:13:29", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - { - "id": 6251, - "name": "sqrtRatioAX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6233, - "src": "9003:13:29", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - } - ], - "id": 6252, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "8987:30:29", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint160_$_t_uint160_$", - "typeString": "tuple(uint160,uint160)" - } - }, - "src": "8954:63:29", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 6254, - "nodeType": "ExpressionStatement", - "src": "8954:63:29" - } - }, - { - "expression": { - "condition": { - "id": 6256, - "name": "roundUp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6239, - "src": "9047:7:29", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseExpression": { - "arguments": [ - { - "id": 6268, - "name": "liquidity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6237, - "src": "9193:9:29", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - { - "commonType": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "id": 6271, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 6269, - "name": "sqrtRatioBX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6235, - "src": "9204:13:29", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "id": 6270, - "name": "sqrtRatioAX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6233, - "src": "9220:13:29", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "src": "9204:29:29", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - { - "expression": { - "id": 6272, - "name": "FixedPoint96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4514, - "src": "9235:12:29", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_FixedPoint96_$4514_$", - "typeString": "type(library FixedPoint96)" - } - }, - "id": 6273, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "Q96", - "nodeType": "MemberAccess", - "referencedDeclaration": 4513, - "src": "9235:16:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 6266, - "name": "FullMath", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4687, - "src": "9177:8:29", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_FullMath_$4687_$", - "typeString": "type(library FullMath)" - } - }, - "id": 6267, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "mulDiv", - "nodeType": "MemberAccess", - "referencedDeclaration": 4643, - "src": "9177:15:29", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 6274, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9177:75:29", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 6275, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "Conditional", - "src": "9047:205:29", - "trueExpression": { - "arguments": [ - { - "id": 6259, - "name": "liquidity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6237, - "src": "9099:9:29", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - { - "commonType": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "id": 6262, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 6260, - "name": "sqrtRatioBX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6235, - "src": "9110:13:29", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "id": 6261, - "name": "sqrtRatioAX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6233, - "src": "9126:13:29", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "src": "9110:29:29", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - { - "expression": { - "id": 6263, - "name": "FixedPoint96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4514, - "src": "9141:12:29", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_FixedPoint96_$4514_$", - "typeString": "type(library FixedPoint96)" - } - }, - "id": 6264, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "Q96", - "nodeType": "MemberAccess", - "referencedDeclaration": 4513, - "src": "9141:16:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 6257, - "name": "FullMath", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4687, - "src": "9073:8:29", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_FullMath_$4687_$", - "typeString": "type(library FullMath)" - } - }, - "id": 6258, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "mulDivRoundingUp", - "nodeType": "MemberAccess", - "referencedDeclaration": 4686, - "src": "9073:25:29", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 6265, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9073:85:29", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 6243, - "id": 6276, - "nodeType": "Return", - "src": "9028:224:29" - } - ] - }, - "documentation": { - "id": 6231, - "nodeType": "StructuredDocumentation", - "src": "8278:444:29", - "text": "@notice Gets the amount1 delta between two prices\n @dev Calculates liquidity * (sqrt(upper) - sqrt(lower))\n @param sqrtRatioAX96 A sqrt price\n @param sqrtRatioBX96 Another sqrt price\n @param liquidity The amount of usable liquidity\n @param roundUp Whether to round the amount up, or down\n @return amount1 Amount of token1 required to cover a position of size liquidity between the two passed prices" - }, - "id": 6278, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getAmount1Delta", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 6240, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 6233, - "mutability": "mutable", - "name": "sqrtRatioAX96", - "nodeType": "VariableDeclaration", - "scope": 6278, - "src": "8761:21:29", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "typeName": { - "id": 6232, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "8761:7:29", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 6235, - "mutability": "mutable", - "name": "sqrtRatioBX96", - "nodeType": "VariableDeclaration", - "scope": 6278, - "src": "8792:21:29", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "typeName": { - "id": 6234, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "8792:7:29", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 6237, - "mutability": "mutable", - "name": "liquidity", - "nodeType": "VariableDeclaration", - "scope": 6278, - "src": "8823:17:29", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "typeName": { - "id": 6236, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "8823:7:29", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 6239, - "mutability": "mutable", - "name": "roundUp", - "nodeType": "VariableDeclaration", - "scope": 6278, - "src": "8850:12:29", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 6238, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "8850:4:29", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "src": "8751:117:29" - }, - "returnParameters": { - "id": 6243, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 6242, - "mutability": "mutable", - "name": "amount1", - "nodeType": "VariableDeclaration", - "scope": 6278, - "src": "8892:15:29", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 6241, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8892:7:29", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "8891:17:29" - }, - "scope": 6363, - "src": "8727:532:29", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 6319, - "nodeType": "Block", - "src": "9761:254:29", - "statements": [ - { - "expression": { - "condition": { - "commonType": { - "typeIdentifier": "t_int128", - "typeString": "int128" - }, - "id": 6292, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 6290, - "name": "liquidity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6285, - "src": "9790:9:29", - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "hexValue": "30", - "id": 6291, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9802:1:29", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "9790:13:29", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseExpression": { - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "arguments": [ - { - "id": 6307, - "name": "sqrtRatioAX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6281, - "src": "9942:13:29", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - { - "id": 6308, - "name": "sqrtRatioBX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6283, - "src": "9957:13:29", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - { - "arguments": [ - { - "id": 6311, - "name": "liquidity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6285, - "src": "9980:9:29", - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - ], - "id": 6310, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "9972:7:29", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint128_$", - "typeString": "type(uint128)" - }, - "typeName": { - "id": 6309, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "9972:7:29", - "typeDescriptions": {} - } - }, - "id": 6312, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9972:18:29", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - { - "hexValue": "74727565", - "id": 6313, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9992:4:29", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 6306, - "name": "getAmount0Delta", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 6230, - 6320 - ], - "referencedDeclaration": 6230, - "src": "9926:15:29", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$_t_bool_$returns$_t_uint256_$", - "typeString": "function (uint160,uint160,uint128,bool) pure returns (uint256)" - } - }, - "id": 6314, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9926:71:29", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 6315, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "toInt256", - "nodeType": "MemberAccess", - "referencedDeclaration": 5846, - "src": "9926:80:29", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_int256_$bound_to$_t_uint256_$", - "typeString": "function (uint256) pure returns (int256)" - } - }, - "id": 6316, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9926:82:29", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "id": 6317, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "Conditional", - "src": "9790:218:29", - "trueExpression": { - "id": 6305, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "-", - "prefix": true, - "src": "9822:85:29", - "subExpression": { - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "arguments": [ - { - "id": 6294, - "name": "sqrtRatioAX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6281, - "src": "9839:13:29", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - { - "id": 6295, - "name": "sqrtRatioBX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6283, - "src": "9854:13:29", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - { - "arguments": [ - { - "id": 6299, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "-", - "prefix": true, - "src": "9877:10:29", - "subExpression": { - "id": 6298, - "name": "liquidity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6285, - "src": "9878:9:29", - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - ], - "id": 6297, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "9869:7:29", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint128_$", - "typeString": "type(uint128)" - }, - "typeName": { - "id": 6296, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "9869:7:29", - "typeDescriptions": {} - } - }, - "id": 6300, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9869:19:29", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - { - "hexValue": "66616c7365", - "id": 6301, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9890:5:29", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 6293, - "name": "getAmount0Delta", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 6230, - 6320 - ], - "referencedDeclaration": 6230, - "src": "9823:15:29", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$_t_bool_$returns$_t_uint256_$", - "typeString": "function (uint160,uint160,uint128,bool) pure returns (uint256)" - } - }, - "id": 6302, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9823:73:29", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 6303, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "toInt256", - "nodeType": "MemberAccess", - "referencedDeclaration": 5846, - "src": "9823:82:29", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_int256_$bound_to$_t_uint256_$", - "typeString": "function (uint256) pure returns (int256)" - } - }, - "id": 6304, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9823:84:29", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "functionReturnParameters": 6289, - "id": 6318, - "nodeType": "Return", - "src": "9771:237:29" - } - ] - }, - "documentation": { - "id": 6279, - "nodeType": "StructuredDocumentation", - "src": "9265:333:29", - "text": "@notice Helper that gets signed token0 delta\n @param sqrtRatioAX96 A sqrt price\n @param sqrtRatioBX96 Another sqrt price\n @param liquidity The change in liquidity for which to compute the amount0 delta\n @return amount0 Amount of token0 corresponding to the passed liquidityDelta between the two prices" - }, - "id": 6320, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getAmount0Delta", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 6286, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 6281, - "mutability": "mutable", - "name": "sqrtRatioAX96", - "nodeType": "VariableDeclaration", - "scope": 6320, - "src": "9637:21:29", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "typeName": { - "id": 6280, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "9637:7:29", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 6283, - "mutability": "mutable", - "name": "sqrtRatioBX96", - "nodeType": "VariableDeclaration", - "scope": 6320, - "src": "9668:21:29", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "typeName": { - "id": 6282, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "9668:7:29", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 6285, - "mutability": "mutable", - "name": "liquidity", - "nodeType": "VariableDeclaration", - "scope": 6320, - "src": "9699:16:29", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - }, - "typeName": { - "id": 6284, - "name": "int128", - "nodeType": "ElementaryTypeName", - "src": "9699:6:29", - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - }, - "visibility": "internal" - } - ], - "src": "9627:94:29" - }, - "returnParameters": { - "id": 6289, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 6288, - "mutability": "mutable", - "name": "amount0", - "nodeType": "VariableDeclaration", - "scope": 6320, - "src": "9745:14:29", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "typeName": { - "id": 6287, - "name": "int256", - "nodeType": "ElementaryTypeName", - "src": "9745:6:29", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "visibility": "internal" - } - ], - "src": "9744:16:29" - }, - "scope": 6363, - "src": "9603:412:29", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 6361, - "nodeType": "Block", - "src": "10517:254:29", - "statements": [ - { - "expression": { - "condition": { - "commonType": { - "typeIdentifier": "t_int128", - "typeString": "int128" - }, - "id": 6334, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 6332, - "name": "liquidity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6327, - "src": "10546:9:29", - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "hexValue": "30", - "id": 6333, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "10558:1:29", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "10546:13:29", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseExpression": { - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "arguments": [ - { - "id": 6349, - "name": "sqrtRatioAX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6323, - "src": "10698:13:29", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - { - "id": 6350, - "name": "sqrtRatioBX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6325, - "src": "10713:13:29", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - { - "arguments": [ - { - "id": 6353, - "name": "liquidity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6327, - "src": "10736:9:29", - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - ], - "id": 6352, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "10728:7:29", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint128_$", - "typeString": "type(uint128)" - }, - "typeName": { - "id": 6351, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "10728:7:29", - "typeDescriptions": {} - } - }, - "id": 6354, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10728:18:29", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - { - "hexValue": "74727565", - "id": 6355, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "10748:4:29", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 6348, - "name": "getAmount1Delta", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 6278, - 6362 - ], - "referencedDeclaration": 6278, - "src": "10682:15:29", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$_t_bool_$returns$_t_uint256_$", - "typeString": "function (uint160,uint160,uint128,bool) pure returns (uint256)" - } - }, - "id": 6356, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10682:71:29", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 6357, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "toInt256", - "nodeType": "MemberAccess", - "referencedDeclaration": 5846, - "src": "10682:80:29", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_int256_$bound_to$_t_uint256_$", - "typeString": "function (uint256) pure returns (int256)" - } - }, - "id": 6358, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10682:82:29", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "id": 6359, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "Conditional", - "src": "10546:218:29", - "trueExpression": { - "id": 6347, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "-", - "prefix": true, - "src": "10578:85:29", - "subExpression": { - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "arguments": [ - { - "id": 6336, - "name": "sqrtRatioAX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6323, - "src": "10595:13:29", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - { - "id": 6337, - "name": "sqrtRatioBX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6325, - "src": "10610:13:29", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - { - "arguments": [ - { - "id": 6341, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "-", - "prefix": true, - "src": "10633:10:29", - "subExpression": { - "id": 6340, - "name": "liquidity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6327, - "src": "10634:9:29", - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - ], - "id": 6339, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "10625:7:29", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint128_$", - "typeString": "type(uint128)" - }, - "typeName": { - "id": 6338, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "10625:7:29", - "typeDescriptions": {} - } - }, - "id": 6342, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10625:19:29", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - { - "hexValue": "66616c7365", - "id": 6343, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "10646:5:29", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 6335, - "name": "getAmount1Delta", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 6278, - 6362 - ], - "referencedDeclaration": 6278, - "src": "10579:15:29", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$_t_bool_$returns$_t_uint256_$", - "typeString": "function (uint160,uint160,uint128,bool) pure returns (uint256)" - } - }, - "id": 6344, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10579:73:29", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 6345, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "toInt256", - "nodeType": "MemberAccess", - "referencedDeclaration": 5846, - "src": "10579:82:29", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_int256_$bound_to$_t_uint256_$", - "typeString": "function (uint256) pure returns (int256)" - } - }, - "id": 6346, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10579:84:29", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "functionReturnParameters": 6331, - "id": 6360, - "nodeType": "Return", - "src": "10527:237:29" - } - ] - }, - "documentation": { - "id": 6321, - "nodeType": "StructuredDocumentation", - "src": "10021:333:29", - "text": "@notice Helper that gets signed token1 delta\n @param sqrtRatioAX96 A sqrt price\n @param sqrtRatioBX96 Another sqrt price\n @param liquidity The change in liquidity for which to compute the amount1 delta\n @return amount1 Amount of token1 corresponding to the passed liquidityDelta between the two prices" - }, - "id": 6362, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getAmount1Delta", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 6328, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 6323, - "mutability": "mutable", - "name": "sqrtRatioAX96", - "nodeType": "VariableDeclaration", - "scope": 6362, - "src": "10393:21:29", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "typeName": { - "id": 6322, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "10393:7:29", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 6325, - "mutability": "mutable", - "name": "sqrtRatioBX96", - "nodeType": "VariableDeclaration", - "scope": 6362, - "src": "10424:21:29", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "typeName": { - "id": 6324, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "10424:7:29", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 6327, - "mutability": "mutable", - "name": "liquidity", - "nodeType": "VariableDeclaration", - "scope": 6362, - "src": "10455:16:29", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - }, - "typeName": { - "id": 6326, - "name": "int128", - "nodeType": "ElementaryTypeName", - "src": "10455:6:29", - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - }, - "visibility": "internal" - } - ], - "src": "10383:94:29" - }, - "returnParameters": { - "id": 6331, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 6330, - "mutability": "mutable", - "name": "amount1", - "nodeType": "VariableDeclaration", - "scope": 6362, - "src": "10501:14:29", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "typeName": { - "id": 6329, - "name": "int256", - "nodeType": "ElementaryTypeName", - "src": "10501:6:29", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "visibility": "internal" - } - ], - "src": "10500:16:29" - }, - "scope": 6363, - "src": "10359:412:29", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - } - ], - "scope": 6364, - "src": "369:10404:29" - } - ], - "src": "37:10737:29" - }, - "id": 29 - }, - "@uniswap/v3-core/contracts/libraries/SwapMath.sol": { - "ast": { - "absolutePath": "@uniswap/v3-core/contracts/libraries/SwapMath.sol", - "exportedSymbols": { - "FixedPoint96": [ - 4514 - ], - "FullMath": [ - 4687 - ], - "LowGasSafeMath": [ - 4869 - ], - "SafeCast": [ - 5847 - ], - "SqrtPriceMath": [ - 6363 - ], - "SwapMath": [ - 6624 - ], - "UnsafeMath": [ - 7934 - ] - }, - "id": 6625, - "license": "BUSL-1.1", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 6365, - "literals": [ - "solidity", - ">=", - "0.5", - ".0" - ], - "nodeType": "PragmaDirective", - "src": "37:24:30" - }, - { - "absolutePath": "@uniswap/v3-core/contracts/libraries/FullMath.sol", - "file": "./FullMath.sol", - "id": 6366, - "nodeType": "ImportDirective", - "scope": 6625, - "sourceUnit": 4688, - "src": "63:24:30", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "@uniswap/v3-core/contracts/libraries/SqrtPriceMath.sol", - "file": "./SqrtPriceMath.sol", - "id": 6367, - "nodeType": "ImportDirective", - "scope": 6625, - "sourceUnit": 6364, - "src": "88:29:30", - "symbolAliases": [], - "unitAlias": "" - }, - { - "abstract": false, - "baseContracts": [], - "contractDependencies": [], - "contractKind": "library", - "documentation": { - "id": 6368, - "nodeType": "StructuredDocumentation", - "src": "119:173:30", - "text": "@title Computes the result of a swap within ticks\n @notice Contains methods for computing the result of a swap within a single tick price range, i.e., a single tick." - }, - "fullyImplemented": true, - "id": 6624, - "linearizedBaseContracts": [ - 6624 - ], - "name": "SwapMath", - "nodeType": "ContractDefinition", - "nodes": [ - { - "body": { - "id": 6622, - "nodeType": "Block", - "src": "1769:2861:30", - "statements": [ - { - "assignments": [ - 6391 - ], - "declarations": [ - { - "constant": false, - "id": 6391, - "mutability": "mutable", - "name": "zeroForOne", - "nodeType": "VariableDeclaration", - "scope": 6622, - "src": "1779:15:30", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 6390, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "1779:4:30", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "id": 6395, - "initialValue": { - "commonType": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "id": 6394, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 6392, - "name": "sqrtRatioCurrentX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6371, - "src": "1797:19:30", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "id": 6393, - "name": "sqrtRatioTargetX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6373, - "src": "1820:18:30", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "src": "1797:41:30", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1779:59:30" - }, - { - "assignments": [ - 6397 - ], - "declarations": [ - { - "constant": false, - "id": 6397, - "mutability": "mutable", - "name": "exactIn", - "nodeType": "VariableDeclaration", - "scope": 6622, - "src": "1848:12:30", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 6396, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "1848:4:30", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "id": 6401, - "initialValue": { - "commonType": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "id": 6400, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 6398, - "name": "amountRemaining", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6377, - "src": "1863:15:30", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "hexValue": "30", - "id": 6399, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1882:1:30", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1863:20:30", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1848:35:30" - }, - { - "condition": { - "id": 6402, - "name": "exactIn", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6397, - "src": "1898:7:30", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 6500, - "nodeType": "Block", - "src": "2629:619:30", - "statements": [ - { - "expression": { - "id": 6472, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 6455, - "name": "amountOut", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6386, - "src": "2643:9:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "condition": { - "id": 6456, - "name": "zeroForOne", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6391, - "src": "2655:10:30", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseExpression": { - "arguments": [ - { - "id": 6466, - "name": "sqrtRatioCurrentX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6371, - "src": "2821:19:30", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - { - "id": 6467, - "name": "sqrtRatioTargetX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6373, - "src": "2842:18:30", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - { - "id": 6468, - "name": "liquidity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6375, - "src": "2862:9:30", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - { - "hexValue": "66616c7365", - "id": 6469, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2873:5:30", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "expression": { - "id": 6464, - "name": "SqrtPriceMath", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6363, - "src": "2791:13:30", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_SqrtPriceMath_$6363_$", - "typeString": "type(library SqrtPriceMath)" - } - }, - "id": 6465, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "getAmount0Delta", - "nodeType": "MemberAccess", - "referencedDeclaration": 6230, - "src": "2791:29:30", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$_t_bool_$returns$_t_uint256_$", - "typeString": "function (uint160,uint160,uint128,bool) pure returns (uint256)" - } - }, - "id": 6470, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2791:88:30", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 6471, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "Conditional", - "src": "2655:224:30", - "trueExpression": { - "arguments": [ - { - "id": 6459, - "name": "sqrtRatioTargetX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6373, - "src": "2714:18:30", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - { - "id": 6460, - "name": "sqrtRatioCurrentX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6371, - "src": "2734:19:30", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - { - "id": 6461, - "name": "liquidity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6375, - "src": "2755:9:30", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - { - "hexValue": "66616c7365", - "id": 6462, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2766:5:30", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "expression": { - "id": 6457, - "name": "SqrtPriceMath", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6363, - "src": "2684:13:30", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_SqrtPriceMath_$6363_$", - "typeString": "type(library SqrtPriceMath)" - } - }, - "id": 6458, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "getAmount1Delta", - "nodeType": "MemberAccess", - "referencedDeclaration": 6278, - "src": "2684:29:30", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$_t_bool_$returns$_t_uint256_$", - "typeString": "function (uint160,uint160,uint128,bool) pure returns (uint256)" - } - }, - "id": 6463, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2684:88:30", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2643:236:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 6473, - "nodeType": "ExpressionStatement", - "src": "2643:236:30" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 6480, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "arguments": [ - { - "id": 6477, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "-", - "prefix": true, - "src": "2905:16:30", - "subExpression": { - "id": 6476, - "name": "amountRemaining", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6377, - "src": "2906:15:30", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - ], - "id": 6475, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2897:7:30", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 6474, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2897:7:30", - "typeDescriptions": {} - } - }, - "id": 6478, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2897:25:30", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "id": 6479, - "name": "amountOut", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6386, - "src": "2926:9:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2897:38:30", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "expression": { - "id": 6497, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 6485, - "name": "sqrtRatioNextX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6382, - "src": "3009:16:30", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 6488, - "name": "sqrtRatioCurrentX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6371, - "src": "3090:19:30", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - { - "id": 6489, - "name": "liquidity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6375, - "src": "3131:9:30", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - { - "arguments": [ - { - "id": 6493, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "-", - "prefix": true, - "src": "3170:16:30", - "subExpression": { - "id": 6492, - "name": "amountRemaining", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6377, - "src": "3171:15:30", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - ], - "id": 6491, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "3162:7:30", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 6490, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3162:7:30", - "typeDescriptions": {} - } - }, - "id": 6494, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3162:25:30", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 6495, - "name": "zeroForOne", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6391, - "src": "3209:10:30", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "expression": { - "id": 6486, - "name": "SqrtPriceMath", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6363, - "src": "3028:13:30", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_SqrtPriceMath_$6363_$", - "typeString": "type(library SqrtPriceMath)" - } - }, - "id": 6487, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "getNextSqrtPriceFromOutput", - "nodeType": "MemberAccess", - "referencedDeclaration": 6160, - "src": "3028:40:30", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint160_$_t_uint128_$_t_uint256_$_t_bool_$returns$_t_uint160_$", - "typeString": "function (uint160,uint128,uint256,bool) pure returns (uint160)" - } - }, - "id": 6496, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3028:209:30", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "src": "3009:228:30", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "id": 6498, - "nodeType": "ExpressionStatement", - "src": "3009:228:30" - }, - "id": 6499, - "nodeType": "IfStatement", - "src": "2893:344:30", - "trueBody": { - "expression": { - "id": 6483, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 6481, - "name": "sqrtRatioNextX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6382, - "src": "2937:16:30", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 6482, - "name": "sqrtRatioTargetX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6373, - "src": "2956:18:30", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "src": "2937:37:30", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "id": 6484, - "nodeType": "ExpressionStatement", - "src": "2937:37:30" - } - } - ] - }, - "id": 6501, - "nodeType": "IfStatement", - "src": "1894:1354:30", - "trueBody": { - "id": 6454, - "nodeType": "Block", - "src": "1907:716:30", - "statements": [ - { - "assignments": [ - 6404 - ], - "declarations": [ - { - "constant": false, - "id": 6404, - "mutability": "mutable", - "name": "amountRemainingLessFee", - "nodeType": "VariableDeclaration", - "scope": 6454, - "src": "1921:30:30", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 6403, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1921:7:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 6416, - "initialValue": { - "arguments": [ - { - "arguments": [ - { - "id": 6409, - "name": "amountRemaining", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6377, - "src": "1978:15:30", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - ], - "id": 6408, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1970:7:30", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 6407, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1970:7:30", - "typeDescriptions": {} - } - }, - "id": 6410, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1970:24:30", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "commonType": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - }, - "id": 6413, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "hexValue": "316536", - "id": 6411, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1996:3:30", - "typeDescriptions": { - "typeIdentifier": "t_rational_1000000_by_1", - "typeString": "int_const 1000000" - }, - "value": "1e6" - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "id": 6412, - "name": "feePips", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6379, - "src": "2002:7:30", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - "src": "1996:13:30", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - { - "hexValue": "316536", - "id": 6414, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2011:3:30", - "typeDescriptions": { - "typeIdentifier": "t_rational_1000000_by_1", - "typeString": "int_const 1000000" - }, - "value": "1e6" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - }, - { - "typeIdentifier": "t_rational_1000000_by_1", - "typeString": "int_const 1000000" - } - ], - "expression": { - "id": 6405, - "name": "FullMath", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4687, - "src": "1954:8:30", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_FullMath_$4687_$", - "typeString": "type(library FullMath)" - } - }, - "id": 6406, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "mulDiv", - "nodeType": "MemberAccess", - "referencedDeclaration": 4643, - "src": "1954:15:30", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 6415, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1954:61:30", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1921:94:30" - }, - { - "expression": { - "id": 6434, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 6417, - "name": "amountIn", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6384, - "src": "2029:8:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "condition": { - "id": 6418, - "name": "zeroForOne", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6391, - "src": "2040:10:30", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseExpression": { - "arguments": [ - { - "id": 6428, - "name": "sqrtRatioCurrentX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6371, - "src": "2205:19:30", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - { - "id": 6429, - "name": "sqrtRatioTargetX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6373, - "src": "2226:18:30", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - { - "id": 6430, - "name": "liquidity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6375, - "src": "2246:9:30", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - { - "hexValue": "74727565", - "id": 6431, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2257:4:30", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "expression": { - "id": 6426, - "name": "SqrtPriceMath", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6363, - "src": "2175:13:30", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_SqrtPriceMath_$6363_$", - "typeString": "type(library SqrtPriceMath)" - } - }, - "id": 6427, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "getAmount1Delta", - "nodeType": "MemberAccess", - "referencedDeclaration": 6278, - "src": "2175:29:30", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$_t_bool_$returns$_t_uint256_$", - "typeString": "function (uint160,uint160,uint128,bool) pure returns (uint256)" - } - }, - "id": 6432, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2175:87:30", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 6433, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "Conditional", - "src": "2040:222:30", - "trueExpression": { - "arguments": [ - { - "id": 6421, - "name": "sqrtRatioTargetX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6373, - "src": "2099:18:30", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - { - "id": 6422, - "name": "sqrtRatioCurrentX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6371, - "src": "2119:19:30", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - { - "id": 6423, - "name": "liquidity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6375, - "src": "2140:9:30", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - { - "hexValue": "74727565", - "id": 6424, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2151:4:30", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "expression": { - "id": 6419, - "name": "SqrtPriceMath", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6363, - "src": "2069:13:30", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_SqrtPriceMath_$6363_$", - "typeString": "type(library SqrtPriceMath)" - } - }, - "id": 6420, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "getAmount0Delta", - "nodeType": "MemberAccess", - "referencedDeclaration": 6230, - "src": "2069:29:30", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$_t_bool_$returns$_t_uint256_$", - "typeString": "function (uint160,uint160,uint128,bool) pure returns (uint256)" - } - }, - "id": 6425, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2069:87:30", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2029:233:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 6435, - "nodeType": "ExpressionStatement", - "src": "2029:233:30" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 6438, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 6436, - "name": "amountRemainingLessFee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6404, - "src": "2280:22:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "id": 6437, - "name": "amountIn", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6384, - "src": "2306:8:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2280:34:30", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "expression": { - "id": 6451, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 6443, - "name": "sqrtRatioNextX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6382, - "src": "2388:16:30", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 6446, - "name": "sqrtRatioCurrentX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6371, - "src": "2468:19:30", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - { - "id": 6447, - "name": "liquidity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6375, - "src": "2509:9:30", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - { - "id": 6448, - "name": "amountRemainingLessFee", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6404, - "src": "2540:22:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 6449, - "name": "zeroForOne", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6391, - "src": "2584:10:30", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "expression": { - "id": 6444, - "name": "SqrtPriceMath", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6363, - "src": "2407:13:30", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_SqrtPriceMath_$6363_$", - "typeString": "type(library SqrtPriceMath)" - } - }, - "id": 6445, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "getNextSqrtPriceFromInput", - "nodeType": "MemberAccess", - "referencedDeclaration": 6118, - "src": "2407:39:30", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint160_$_t_uint128_$_t_uint256_$_t_bool_$returns$_t_uint160_$", - "typeString": "function (uint160,uint128,uint256,bool) pure returns (uint160)" - } - }, - "id": 6450, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2407:205:30", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "src": "2388:224:30", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "id": 6452, - "nodeType": "ExpressionStatement", - "src": "2388:224:30" - }, - "id": 6453, - "nodeType": "IfStatement", - "src": "2276:336:30", - "trueBody": { - "expression": { - "id": 6441, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 6439, - "name": "sqrtRatioNextX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6382, - "src": "2316:16:30", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 6440, - "name": "sqrtRatioTargetX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6373, - "src": "2335:18:30", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "src": "2316:37:30", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "id": 6442, - "nodeType": "ExpressionStatement", - "src": "2316:37:30" - } - } - ] - } - }, - { - "assignments": [ - 6503 - ], - "declarations": [ - { - "constant": false, - "id": 6503, - "mutability": "mutable", - "name": "max", - "nodeType": "VariableDeclaration", - "scope": 6622, - "src": "3258:8:30", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 6502, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "3258:4:30", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "id": 6507, - "initialValue": { - "commonType": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "id": 6506, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 6504, - "name": "sqrtRatioTargetX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6373, - "src": "3269:18:30", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "id": 6505, - "name": "sqrtRatioNextX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6382, - "src": "3291:16:30", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "src": "3269:38:30", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3258:49:30" - }, - { - "condition": { - "id": 6508, - "name": "zeroForOne", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6391, - "src": "3362:10:30", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 6572, - "nodeType": "Block", - "src": "3735:355:30", - "statements": [ - { - "expression": { - "id": 6554, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 6541, - "name": "amountIn", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6384, - "src": "3749:8:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "condition": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 6544, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 6542, - "name": "max", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6503, - "src": "3760:3:30", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "id": 6543, - "name": "exactIn", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6397, - "src": "3767:7:30", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "3760:14:30", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseExpression": { - "arguments": [ - { - "id": 6548, - "name": "sqrtRatioCurrentX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6371, - "src": "3850:19:30", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - { - "id": 6549, - "name": "sqrtRatioNextX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6382, - "src": "3871:16:30", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - { - "id": 6550, - "name": "liquidity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6375, - "src": "3889:9:30", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - { - "hexValue": "74727565", - "id": 6551, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3900:4:30", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "expression": { - "id": 6546, - "name": "SqrtPriceMath", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6363, - "src": "3820:13:30", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_SqrtPriceMath_$6363_$", - "typeString": "type(library SqrtPriceMath)" - } - }, - "id": 6547, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "getAmount1Delta", - "nodeType": "MemberAccess", - "referencedDeclaration": 6278, - "src": "3820:29:30", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$_t_bool_$returns$_t_uint256_$", - "typeString": "function (uint160,uint160,uint128,bool) pure returns (uint256)" - } - }, - "id": 6552, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3820:85:30", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 6553, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "Conditional", - "src": "3760:145:30", - "trueExpression": { - "id": 6545, - "name": "amountIn", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6384, - "src": "3793:8:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3749:156:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 6555, - "nodeType": "ExpressionStatement", - "src": "3749:156:30" - }, - { - "expression": { - "id": 6570, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 6556, - "name": "amountOut", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6386, - "src": "3919:9:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "condition": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 6560, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 6557, - "name": "max", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6503, - "src": "3931:3:30", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "id": 6559, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "3938:8:30", - "subExpression": { - "id": 6558, - "name": "exactIn", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6397, - "src": "3939:7:30", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "3931:15:30", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseExpression": { - "arguments": [ - { - "id": 6564, - "name": "sqrtRatioCurrentX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6371, - "src": "4023:19:30", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - { - "id": 6565, - "name": "sqrtRatioNextX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6382, - "src": "4044:16:30", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - { - "id": 6566, - "name": "liquidity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6375, - "src": "4062:9:30", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - { - "hexValue": "66616c7365", - "id": 6567, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4073:5:30", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "expression": { - "id": 6562, - "name": "SqrtPriceMath", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6363, - "src": "3993:13:30", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_SqrtPriceMath_$6363_$", - "typeString": "type(library SqrtPriceMath)" - } - }, - "id": 6563, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "getAmount0Delta", - "nodeType": "MemberAccess", - "referencedDeclaration": 6230, - "src": "3993:29:30", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$_t_bool_$returns$_t_uint256_$", - "typeString": "function (uint160,uint160,uint128,bool) pure returns (uint256)" - } - }, - "id": 6568, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3993:86:30", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 6569, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "Conditional", - "src": "3931:148:30", - "trueExpression": { - "id": 6561, - "name": "amountOut", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6386, - "src": "3965:9:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3919:160:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 6571, - "nodeType": "ExpressionStatement", - "src": "3919:160:30" - } - ] - }, - "id": 6573, - "nodeType": "IfStatement", - "src": "3358:732:30", - "trueBody": { - "id": 6540, - "nodeType": "Block", - "src": "3374:355:30", - "statements": [ - { - "expression": { - "id": 6522, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 6509, - "name": "amountIn", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6384, - "src": "3388:8:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "condition": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 6512, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 6510, - "name": "max", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6503, - "src": "3399:3:30", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "id": 6511, - "name": "exactIn", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6397, - "src": "3406:7:30", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "3399:14:30", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseExpression": { - "arguments": [ - { - "id": 6516, - "name": "sqrtRatioNextX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6382, - "src": "3489:16:30", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - { - "id": 6517, - "name": "sqrtRatioCurrentX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6371, - "src": "3507:19:30", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - { - "id": 6518, - "name": "liquidity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6375, - "src": "3528:9:30", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - { - "hexValue": "74727565", - "id": 6519, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3539:4:30", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "expression": { - "id": 6514, - "name": "SqrtPriceMath", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6363, - "src": "3459:13:30", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_SqrtPriceMath_$6363_$", - "typeString": "type(library SqrtPriceMath)" - } - }, - "id": 6515, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "getAmount0Delta", - "nodeType": "MemberAccess", - "referencedDeclaration": 6230, - "src": "3459:29:30", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$_t_bool_$returns$_t_uint256_$", - "typeString": "function (uint160,uint160,uint128,bool) pure returns (uint256)" - } - }, - "id": 6520, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3459:85:30", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 6521, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "Conditional", - "src": "3399:145:30", - "trueExpression": { - "id": 6513, - "name": "amountIn", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6384, - "src": "3432:8:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3388:156:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 6523, - "nodeType": "ExpressionStatement", - "src": "3388:156:30" - }, - { - "expression": { - "id": 6538, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 6524, - "name": "amountOut", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6386, - "src": "3558:9:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "condition": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 6528, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 6525, - "name": "max", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6503, - "src": "3570:3:30", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "id": 6527, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "3577:8:30", - "subExpression": { - "id": 6526, - "name": "exactIn", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6397, - "src": "3578:7:30", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "3570:15:30", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseExpression": { - "arguments": [ - { - "id": 6532, - "name": "sqrtRatioNextX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6382, - "src": "3662:16:30", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - { - "id": 6533, - "name": "sqrtRatioCurrentX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6371, - "src": "3680:19:30", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - { - "id": 6534, - "name": "liquidity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6375, - "src": "3701:9:30", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - { - "hexValue": "66616c7365", - "id": 6535, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3712:5:30", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "expression": { - "id": 6530, - "name": "SqrtPriceMath", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6363, - "src": "3632:13:30", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_SqrtPriceMath_$6363_$", - "typeString": "type(library SqrtPriceMath)" - } - }, - "id": 6531, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "getAmount1Delta", - "nodeType": "MemberAccess", - "referencedDeclaration": 6278, - "src": "3632:29:30", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$_t_bool_$returns$_t_uint256_$", - "typeString": "function (uint160,uint160,uint128,bool) pure returns (uint256)" - } - }, - "id": 6536, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3632:86:30", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 6537, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "Conditional", - "src": "3570:148:30", - "trueExpression": { - "id": 6529, - "name": "amountOut", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6386, - "src": "3604:9:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3558:160:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 6539, - "nodeType": "ExpressionStatement", - "src": "3558:160:30" - } - ] - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 6583, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 6575, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "4179:8:30", - "subExpression": { - "id": 6574, - "name": "exactIn", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6397, - "src": "4180:7:30", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 6582, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 6576, - "name": "amountOut", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6386, - "src": "4191:9:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "arguments": [ - { - "id": 6580, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "-", - "prefix": true, - "src": "4211:16:30", - "subExpression": { - "id": 6579, - "name": "amountRemaining", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6377, - "src": "4212:15:30", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - ], - "id": 6578, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "4203:7:30", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 6577, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4203:7:30", - "typeDescriptions": {} - } - }, - "id": 6581, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4203:25:30", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4191:37:30", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "4179:49:30", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 6593, - "nodeType": "IfStatement", - "src": "4175:117:30", - "trueBody": { - "id": 6592, - "nodeType": "Block", - "src": "4230:62:30", - "statements": [ - { - "expression": { - "id": 6590, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 6584, - "name": "amountOut", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6386, - "src": "4244:9:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 6588, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "-", - "prefix": true, - "src": "4264:16:30", - "subExpression": { - "id": 6587, - "name": "amountRemaining", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6377, - "src": "4265:15:30", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - ], - "id": 6586, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "4256:7:30", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 6585, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4256:7:30", - "typeDescriptions": {} - } - }, - "id": 6589, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4256:25:30", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4244:37:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 6591, - "nodeType": "ExpressionStatement", - "src": "4244:37:30" - } - ] - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 6598, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 6594, - "name": "exactIn", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6397, - "src": "4306:7:30", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "id": 6597, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 6595, - "name": "sqrtRatioNextX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6382, - "src": "4317:16:30", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "id": 6596, - "name": "sqrtRatioTargetX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6373, - "src": "4337:18:30", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "src": "4317:38:30", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "4306:49:30", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 6620, - "nodeType": "Block", - "src": "4528:96:30", - "statements": [ - { - "expression": { - "id": 6618, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 6609, - "name": "feeAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6388, - "src": "4542:9:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 6612, - "name": "amountIn", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6384, - "src": "4580:8:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 6613, - "name": "feePips", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6379, - "src": "4590:7:30", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - { - "commonType": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - }, - "id": 6616, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "hexValue": "316536", - "id": 6614, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4599:3:30", - "typeDescriptions": { - "typeIdentifier": "t_rational_1000000_by_1", - "typeString": "int_const 1000000" - }, - "value": "1e6" - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "id": 6615, - "name": "feePips", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6379, - "src": "4605:7:30", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - "src": "4599:13:30", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - }, - { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - ], - "expression": { - "id": 6610, - "name": "FullMath", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4687, - "src": "4554:8:30", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_FullMath_$4687_$", - "typeString": "type(library FullMath)" - } - }, - "id": 6611, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "mulDivRoundingUp", - "nodeType": "MemberAccess", - "referencedDeclaration": 4686, - "src": "4554:25:30", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 6617, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4554:59:30", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4542:71:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 6619, - "nodeType": "ExpressionStatement", - "src": "4542:71:30" - } - ] - }, - "id": 6621, - "nodeType": "IfStatement", - "src": "4302:322:30", - "trueBody": { - "id": 6608, - "nodeType": "Block", - "src": "4357:165:30", - "statements": [ - { - "expression": { - "id": 6606, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 6599, - "name": "feeAmount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6388, - "src": "4464:9:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 6605, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "arguments": [ - { - "id": 6602, - "name": "amountRemaining", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6377, - "src": "4484:15:30", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - ], - "id": 6601, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "4476:7:30", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 6600, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4476:7:30", - "typeDescriptions": {} - } - }, - "id": 6603, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4476:24:30", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "id": 6604, - "name": "amountIn", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6384, - "src": "4503:8:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4476:35:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4464:47:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 6607, - "nodeType": "ExpressionStatement", - "src": "4464:47:30" - } - ] - } - } - ] - }, - "documentation": { - "id": 6369, - "nodeType": "StructuredDocumentation", - "src": "315:1071:30", - "text": "@notice Computes the result of swapping some amount in, or amount out, given the parameters of the swap\n @dev The fee, plus the amount in, will never exceed the amount remaining if the swap's `amountSpecified` is positive\n @param sqrtRatioCurrentX96 The current sqrt price of the pool\n @param sqrtRatioTargetX96 The price that cannot be exceeded, from which the direction of the swap is inferred\n @param liquidity The usable liquidity\n @param amountRemaining How much input or output amount is remaining to be swapped in/out\n @param feePips The fee taken from the input amount, expressed in hundredths of a bip\n @return sqrtRatioNextX96 The price after swapping the amount in/out, not to exceed the price target\n @return amountIn The amount to be swapped in, of either token0 or token1, based on the direction of the swap\n @return amountOut The amount to be received, of either token0 or token1, based on the direction of the swap\n @return feeAmount The amount of input that will be taken as a fee" - }, - "id": 6623, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "computeSwapStep", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 6380, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 6371, - "mutability": "mutable", - "name": "sqrtRatioCurrentX96", - "nodeType": "VariableDeclaration", - "scope": 6623, - "src": "1425:27:30", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "typeName": { - "id": 6370, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "1425:7:30", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 6373, - "mutability": "mutable", - "name": "sqrtRatioTargetX96", - "nodeType": "VariableDeclaration", - "scope": 6623, - "src": "1462:26:30", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "typeName": { - "id": 6372, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "1462:7:30", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 6375, - "mutability": "mutable", - "name": "liquidity", - "nodeType": "VariableDeclaration", - "scope": 6623, - "src": "1498:17:30", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "typeName": { - "id": 6374, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "1498:7:30", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 6377, - "mutability": "mutable", - "name": "amountRemaining", - "nodeType": "VariableDeclaration", - "scope": 6623, - "src": "1525:22:30", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "typeName": { - "id": 6376, - "name": "int256", - "nodeType": "ElementaryTypeName", - "src": "1525:6:30", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 6379, - "mutability": "mutable", - "name": "feePips", - "nodeType": "VariableDeclaration", - "scope": 6623, - "src": "1557:14:30", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - }, - "typeName": { - "id": 6378, - "name": "uint24", - "nodeType": "ElementaryTypeName", - "src": "1557:6:30", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - "visibility": "internal" - } - ], - "src": "1415:162:30" - }, - "returnParameters": { - "id": 6389, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 6382, - "mutability": "mutable", - "name": "sqrtRatioNextX96", - "nodeType": "VariableDeclaration", - "scope": 6623, - "src": "1638:24:30", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "typeName": { - "id": 6381, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "1638:7:30", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 6384, - "mutability": "mutable", - "name": "amountIn", - "nodeType": "VariableDeclaration", - "scope": 6623, - "src": "1676:16:30", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 6383, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1676:7:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 6386, - "mutability": "mutable", - "name": "amountOut", - "nodeType": "VariableDeclaration", - "scope": 6623, - "src": "1706:17:30", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 6385, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1706:7:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 6388, - "mutability": "mutable", - "name": "feeAmount", - "nodeType": "VariableDeclaration", - "scope": 6623, - "src": "1737:17:30", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 6387, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1737:7:30", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "1624:140:30" - }, - "scope": 6624, - "src": "1391:3239:30", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - } - ], - "scope": 6625, - "src": "292:4340:30" - } - ], - "src": "37:4596:30" - }, - "id": 30 - }, - "@uniswap/v3-core/contracts/libraries/Tick.sol": { - "ast": { - "absolutePath": "@uniswap/v3-core/contracts/libraries/Tick.sol", - "exportedSymbols": { - "LiquidityMath": [ - 4739 - ], - "LowGasSafeMath": [ - 4869 - ], - "SafeCast": [ - 5847 - ], - "Tick": [ - 7076 - ], - "TickMath": [ - 7867 - ] - }, - "id": 7077, - "license": "BUSL-1.1", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 6626, - "literals": [ - "solidity", - ">=", - "0.5", - ".0" - ], - "nodeType": "PragmaDirective", - "src": "37:24:31" - }, - { - "absolutePath": "@uniswap/v3-core/contracts/libraries/LowGasSafeMath.sol", - "file": "./LowGasSafeMath.sol", - "id": 6627, - "nodeType": "ImportDirective", - "scope": 7077, - "sourceUnit": 4870, - "src": "63:30:31", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "@uniswap/v3-core/contracts/libraries/SafeCast.sol", - "file": "./SafeCast.sol", - "id": 6628, - "nodeType": "ImportDirective", - "scope": 7077, - "sourceUnit": 5848, - "src": "94:24:31", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "@uniswap/v3-core/contracts/libraries/TickMath.sol", - "file": "./TickMath.sol", - "id": 6629, - "nodeType": "ImportDirective", - "scope": 7077, - "sourceUnit": 7868, - "src": "120:24:31", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "@uniswap/v3-core/contracts/libraries/LiquidityMath.sol", - "file": "./LiquidityMath.sol", - "id": 6630, - "nodeType": "ImportDirective", - "scope": 7077, - "sourceUnit": 4740, - "src": "145:29:31", - "symbolAliases": [], - "unitAlias": "" - }, - { - "abstract": false, - "baseContracts": [], - "contractDependencies": [], - "contractKind": "library", - "documentation": { - "id": 6631, - "nodeType": "StructuredDocumentation", - "src": "176:101:31", - "text": "@title Tick\n @notice Contains functions for managing tick processes and relevant calculations" - }, - "fullyImplemented": true, - "id": 7076, - "linearizedBaseContracts": [ - 7076 - ], - "name": "Tick", - "nodeType": "ContractDefinition", - "nodes": [ - { - "id": 6634, - "libraryName": { - "id": 6632, - "name": "LowGasSafeMath", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 4869, - "src": "302:14:31", - "typeDescriptions": { - "typeIdentifier": "t_contract$_LowGasSafeMath_$4869", - "typeString": "library LowGasSafeMath" - } - }, - "nodeType": "UsingForDirective", - "src": "296:32:31", - "typeName": { - "id": 6633, - "name": "int256", - "nodeType": "ElementaryTypeName", - "src": "321:6:31", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - } - }, - { - "id": 6637, - "libraryName": { - "id": 6635, - "name": "SafeCast", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5847, - "src": "339:8:31", - "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeCast_$5847", - "typeString": "library SafeCast" - } - }, - "nodeType": "UsingForDirective", - "src": "333:26:31", - "typeName": { - "id": 6636, - "name": "int256", - "nodeType": "ElementaryTypeName", - "src": "352:6:31", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - } - }, - { - "canonicalName": "Tick.Info", - "id": 6654, - "members": [ - { - "constant": false, - "id": 6639, - "mutability": "mutable", - "name": "liquidityGross", - "nodeType": "VariableDeclaration", - "scope": 6654, - "src": "509:22:31", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "typeName": { - "id": 6638, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "509:7:31", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 6641, - "mutability": "mutable", - "name": "liquidityNet", - "nodeType": "VariableDeclaration", - "scope": 6654, - "src": "652:19:31", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - }, - "typeName": { - "id": 6640, - "name": "int128", - "nodeType": "ElementaryTypeName", - "src": "652:6:31", - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 6643, - "mutability": "mutable", - "name": "feeGrowthOutside0X128", - "nodeType": "VariableDeclaration", - "scope": 6654, - "src": "894:29:31", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 6642, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "894:7:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 6645, - "mutability": "mutable", - "name": "feeGrowthOutside1X128", - "nodeType": "VariableDeclaration", - "scope": 6654, - "src": "933:29:31", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 6644, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "933:7:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 6647, - "mutability": "mutable", - "name": "tickCumulativeOutside", - "nodeType": "VariableDeclaration", - "scope": 6654, - "src": "1039:27:31", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - }, - "typeName": { - "id": 6646, - "name": "int56", - "nodeType": "ElementaryTypeName", - "src": "1039:5:31", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 6649, - "mutability": "mutable", - "name": "secondsPerLiquidityOutsideX128", - "nodeType": "VariableDeclaration", - "scope": 6654, - "src": "1290:38:31", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "typeName": { - "id": 6648, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "1290:7:31", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 6651, - "mutability": "mutable", - "name": "secondsOutside", - "nodeType": "VariableDeclaration", - "scope": 6654, - "src": "1533:21:31", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 6650, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "1533:6:31", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 6653, - "mutability": "mutable", - "name": "initialized", - "nodeType": "VariableDeclaration", - "scope": 6654, - "src": "1779:16:31", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 6652, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "1779:4:31", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "name": "Info", - "nodeType": "StructDefinition", - "scope": 7076, - "src": "421:1381:31", - "visibility": "public" - }, - { - "body": { - "id": 6704, - "nodeType": "Block", - "src": "2288:271:31", - "statements": [ - { - "assignments": [ - 6663 - ], - "declarations": [ - { - "constant": false, - "id": 6663, - "mutability": "mutable", - "name": "minTick", - "nodeType": "VariableDeclaration", - "scope": 6704, - "src": "2298:13:31", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 6662, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "2298:5:31", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - } - ], - "id": 6671, - "initialValue": { - "commonType": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "id": 6670, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "id": 6667, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 6664, - "name": "TickMath", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7867, - "src": "2315:8:31", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_TickMath_$7867_$", - "typeString": "type(library TickMath)" - } - }, - "id": 6665, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "MIN_TICK", - "nodeType": "MemberAccess", - "referencedDeclaration": 7340, - "src": "2315:17:31", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "id": 6666, - "name": "tickSpacing", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6657, - "src": "2335:11:31", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "src": "2315:31:31", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - } - ], - "id": 6668, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "2314:33:31", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "id": 6669, - "name": "tickSpacing", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6657, - "src": "2350:11:31", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "src": "2314:47:31", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2298:63:31" - }, - { - "assignments": [ - 6673 - ], - "declarations": [ - { - "constant": false, - "id": 6673, - "mutability": "mutable", - "name": "maxTick", - "nodeType": "VariableDeclaration", - "scope": 6704, - "src": "2371:13:31", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 6672, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "2371:5:31", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - } - ], - "id": 6681, - "initialValue": { - "commonType": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "id": 6680, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "id": 6677, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 6674, - "name": "TickMath", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7867, - "src": "2388:8:31", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_TickMath_$7867_$", - "typeString": "type(library TickMath)" - } - }, - "id": 6675, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "MAX_TICK", - "nodeType": "MemberAccess", - "referencedDeclaration": 7345, - "src": "2388:17:31", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "id": 6676, - "name": "tickSpacing", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6657, - "src": "2408:11:31", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "src": "2388:31:31", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - } - ], - "id": 6678, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "2387:33:31", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "id": 6679, - "name": "tickSpacing", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6657, - "src": "2423:11:31", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "src": "2387:47:31", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2371:63:31" - }, - { - "assignments": [ - 6683 - ], - "declarations": [ - { - "constant": false, - "id": 6683, - "mutability": "mutable", - "name": "numTicks", - "nodeType": "VariableDeclaration", - "scope": 6704, - "src": "2444:15:31", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - }, - "typeName": { - "id": 6682, - "name": "uint24", - "nodeType": "ElementaryTypeName", - "src": "2444:6:31", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - "visibility": "internal" - } - ], - "id": 6695, - "initialValue": { - "commonType": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - }, - "id": 6694, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "id": 6691, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "id": 6688, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 6686, - "name": "maxTick", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6673, - "src": "2470:7:31", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "id": 6687, - "name": "minTick", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6663, - "src": "2480:7:31", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "src": "2470:17:31", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - } - ], - "id": 6689, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "2469:19:31", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "id": 6690, - "name": "tickSpacing", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6657, - "src": "2491:11:31", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "src": "2469:33:31", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - ], - "id": 6685, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2462:6:31", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint24_$", - "typeString": "type(uint24)" - }, - "typeName": { - "id": 6684, - "name": "uint24", - "nodeType": "ElementaryTypeName", - "src": "2462:6:31", - "typeDescriptions": {} - } - }, - "id": 6692, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2462:41:31", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "hexValue": "31", - "id": 6693, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2506:1:31", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "2462:45:31", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2444:63:31" - }, - { - "expression": { - "commonType": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "id": 6702, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "arguments": [ - { - "id": 6698, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2529:7:31", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint128_$", - "typeString": "type(uint128)" - }, - "typeName": { - "id": 6697, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "2529:7:31", - "typeDescriptions": {} - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_type$_t_uint128_$", - "typeString": "type(uint128)" - } - ], - "id": 6696, - "name": "type", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -27, - "src": "2524:4:31", - "typeDescriptions": { - "typeIdentifier": "t_function_metatype_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 6699, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2524:13:31", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_magic_meta_type_t_uint128", - "typeString": "type(uint128)" - } - }, - "id": 6700, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "max", - "nodeType": "MemberAccess", - "src": "2524:17:31", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "id": 6701, - "name": "numTicks", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6683, - "src": "2544:8:31", - "typeDescriptions": { - "typeIdentifier": "t_uint24", - "typeString": "uint24" - } - }, - "src": "2524:28:31", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "functionReturnParameters": 6661, - "id": 6703, - "nodeType": "Return", - "src": "2517:35:31" - } - ] - }, - "documentation": { - "id": 6655, - "nodeType": "StructuredDocumentation", - "src": "1808:382:31", - "text": "@notice Derives max liquidity per tick from given tick spacing\n @dev Executed within the pool constructor\n @param tickSpacing The amount of required tick separation, realized in multiples of `tickSpacing`\n e.g., a tickSpacing of 3 requires ticks to be initialized every 3rd tick i.e., ..., -6, -3, 0, 3, 6, ...\n @return The max liquidity per tick" - }, - "id": 6705, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "tickSpacingToMaxLiquidityPerTick", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 6658, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 6657, - "mutability": "mutable", - "name": "tickSpacing", - "nodeType": "VariableDeclaration", - "scope": 6705, - "src": "2237:17:31", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 6656, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "2237:5:31", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - } - ], - "src": "2236:19:31" - }, - "returnParameters": { - "id": 6661, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 6660, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 6705, - "src": "2279:7:31", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "typeName": { - "id": 6659, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "2279:7:31", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "visibility": "internal" - } - ], - "src": "2278:9:31" - }, - "scope": 7076, - "src": "2195:364:31", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 6827, - "nodeType": "Block", - "src": "3655:1249:31", - "statements": [ - { - "assignments": [ - 6728 - ], - "declarations": [ - { - "constant": false, - "id": 6728, - "mutability": "mutable", - "name": "lower", - "nodeType": "VariableDeclaration", - "scope": 6827, - "src": "3665:18:31", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$6654_storage_ptr", - "typeString": "struct Tick.Info" - }, - "typeName": { - "id": 6727, - "name": "Info", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 6654, - "src": "3665:4:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$6654_storage_ptr", - "typeString": "struct Tick.Info" - } - }, - "visibility": "internal" - } - ], - "id": 6732, - "initialValue": { - "baseExpression": { - "id": 6729, - "name": "self", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6710, - "src": "3686:4:31", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Info_$6654_storage_$", - "typeString": "mapping(int24 => struct Tick.Info storage ref)" - } - }, - "id": 6731, - "indexExpression": { - "id": 6730, - "name": "tickLower", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6712, - "src": "3691:9:31", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3686:15:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$6654_storage", - "typeString": "struct Tick.Info storage ref" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3665:36:31" - }, - { - "assignments": [ - 6734 - ], - "declarations": [ - { - "constant": false, - "id": 6734, - "mutability": "mutable", - "name": "upper", - "nodeType": "VariableDeclaration", - "scope": 6827, - "src": "3711:18:31", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$6654_storage_ptr", - "typeString": "struct Tick.Info" - }, - "typeName": { - "id": 6733, - "name": "Info", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 6654, - "src": "3711:4:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$6654_storage_ptr", - "typeString": "struct Tick.Info" - } - }, - "visibility": "internal" - } - ], - "id": 6738, - "initialValue": { - "baseExpression": { - "id": 6735, - "name": "self", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6710, - "src": "3732:4:31", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Info_$6654_storage_$", - "typeString": "mapping(int24 => struct Tick.Info storage ref)" - } - }, - "id": 6737, - "indexExpression": { - "id": 6736, - "name": "tickUpper", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6714, - "src": "3737:9:31", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3732:15:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$6654_storage", - "typeString": "struct Tick.Info storage ref" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3711:36:31" - }, - { - "assignments": [ - 6740 - ], - "declarations": [ - { - "constant": false, - "id": 6740, - "mutability": "mutable", - "name": "feeGrowthBelow0X128", - "nodeType": "VariableDeclaration", - "scope": 6827, - "src": "3796:27:31", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 6739, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3796:7:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 6741, - "nodeType": "VariableDeclarationStatement", - "src": "3796:27:31" - }, - { - "assignments": [ - 6743 - ], - "declarations": [ - { - "constant": false, - "id": 6743, - "mutability": "mutable", - "name": "feeGrowthBelow1X128", - "nodeType": "VariableDeclaration", - "scope": 6827, - "src": "3833:27:31", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 6742, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3833:7:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 6744, - "nodeType": "VariableDeclarationStatement", - "src": "3833:27:31" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "id": 6747, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 6745, - "name": "tickCurrent", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6716, - "src": "3874:11:31", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "id": 6746, - "name": "tickLower", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6712, - "src": "3889:9:31", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "src": "3874:24:31", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 6773, - "nodeType": "Block", - "src": "4043:183:31", - "statements": [ - { - "expression": { - "id": 6764, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 6759, - "name": "feeGrowthBelow0X128", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6740, - "src": "4057:19:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 6763, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 6760, - "name": "feeGrowthGlobal0X128", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6718, - "src": "4079:20:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "expression": { - "id": 6761, - "name": "lower", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6728, - "src": "4102:5:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$6654_storage_ptr", - "typeString": "struct Tick.Info storage pointer" - } - }, - "id": 6762, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "feeGrowthOutside0X128", - "nodeType": "MemberAccess", - "referencedDeclaration": 6643, - "src": "4102:27:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4079:50:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4057:72:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 6765, - "nodeType": "ExpressionStatement", - "src": "4057:72:31" - }, - { - "expression": { - "id": 6771, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 6766, - "name": "feeGrowthBelow1X128", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6743, - "src": "4143:19:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 6770, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 6767, - "name": "feeGrowthGlobal1X128", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6720, - "src": "4165:20:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "expression": { - "id": 6768, - "name": "lower", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6728, - "src": "4188:5:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$6654_storage_ptr", - "typeString": "struct Tick.Info storage pointer" - } - }, - "id": 6769, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "feeGrowthOutside1X128", - "nodeType": "MemberAccess", - "referencedDeclaration": 6645, - "src": "4188:27:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4165:50:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4143:72:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 6772, - "nodeType": "ExpressionStatement", - "src": "4143:72:31" - } - ] - }, - "id": 6774, - "nodeType": "IfStatement", - "src": "3870:356:31", - "trueBody": { - "id": 6758, - "nodeType": "Block", - "src": "3900:137:31", - "statements": [ - { - "expression": { - "id": 6751, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 6748, - "name": "feeGrowthBelow0X128", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6740, - "src": "3914:19:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "expression": { - "id": 6749, - "name": "lower", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6728, - "src": "3936:5:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$6654_storage_ptr", - "typeString": "struct Tick.Info storage pointer" - } - }, - "id": 6750, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "feeGrowthOutside0X128", - "nodeType": "MemberAccess", - "referencedDeclaration": 6643, - "src": "3936:27:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3914:49:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 6752, - "nodeType": "ExpressionStatement", - "src": "3914:49:31" - }, - { - "expression": { - "id": 6756, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 6753, - "name": "feeGrowthBelow1X128", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6743, - "src": "3977:19:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "expression": { - "id": 6754, - "name": "lower", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6728, - "src": "3999:5:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$6654_storage_ptr", - "typeString": "struct Tick.Info storage pointer" - } - }, - "id": 6755, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "feeGrowthOutside1X128", - "nodeType": "MemberAccess", - "referencedDeclaration": 6645, - "src": "3999:27:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3977:49:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 6757, - "nodeType": "ExpressionStatement", - "src": "3977:49:31" - } - ] - } - }, - { - "assignments": [ - 6776 - ], - "declarations": [ - { - "constant": false, - "id": 6776, - "mutability": "mutable", - "name": "feeGrowthAbove0X128", - "nodeType": "VariableDeclaration", - "scope": 6827, - "src": "4274:27:31", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 6775, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4274:7:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 6777, - "nodeType": "VariableDeclarationStatement", - "src": "4274:27:31" - }, - { - "assignments": [ - 6779 - ], - "declarations": [ - { - "constant": false, - "id": 6779, - "mutability": "mutable", - "name": "feeGrowthAbove1X128", - "nodeType": "VariableDeclaration", - "scope": 6827, - "src": "4311:27:31", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 6778, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4311:7:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 6780, - "nodeType": "VariableDeclarationStatement", - "src": "4311:27:31" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "id": 6783, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 6781, - "name": "tickCurrent", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6716, - "src": "4352:11:31", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "id": 6782, - "name": "tickUpper", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6714, - "src": "4366:9:31", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "src": "4352:23:31", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 6809, - "nodeType": "Block", - "src": "4520:183:31", - "statements": [ - { - "expression": { - "id": 6800, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 6795, - "name": "feeGrowthAbove0X128", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6776, - "src": "4534:19:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 6799, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 6796, - "name": "feeGrowthGlobal0X128", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6718, - "src": "4556:20:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "expression": { - "id": 6797, - "name": "upper", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6734, - "src": "4579:5:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$6654_storage_ptr", - "typeString": "struct Tick.Info storage pointer" - } - }, - "id": 6798, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "feeGrowthOutside0X128", - "nodeType": "MemberAccess", - "referencedDeclaration": 6643, - "src": "4579:27:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4556:50:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4534:72:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 6801, - "nodeType": "ExpressionStatement", - "src": "4534:72:31" - }, - { - "expression": { - "id": 6807, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 6802, - "name": "feeGrowthAbove1X128", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6779, - "src": "4620:19:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 6806, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 6803, - "name": "feeGrowthGlobal1X128", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6720, - "src": "4642:20:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "expression": { - "id": 6804, - "name": "upper", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6734, - "src": "4665:5:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$6654_storage_ptr", - "typeString": "struct Tick.Info storage pointer" - } - }, - "id": 6805, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "feeGrowthOutside1X128", - "nodeType": "MemberAccess", - "referencedDeclaration": 6645, - "src": "4665:27:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4642:50:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4620:72:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 6808, - "nodeType": "ExpressionStatement", - "src": "4620:72:31" - } - ] - }, - "id": 6810, - "nodeType": "IfStatement", - "src": "4348:355:31", - "trueBody": { - "id": 6794, - "nodeType": "Block", - "src": "4377:137:31", - "statements": [ - { - "expression": { - "id": 6787, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 6784, - "name": "feeGrowthAbove0X128", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6776, - "src": "4391:19:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "expression": { - "id": 6785, - "name": "upper", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6734, - "src": "4413:5:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$6654_storage_ptr", - "typeString": "struct Tick.Info storage pointer" - } - }, - "id": 6786, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "feeGrowthOutside0X128", - "nodeType": "MemberAccess", - "referencedDeclaration": 6643, - "src": "4413:27:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4391:49:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 6788, - "nodeType": "ExpressionStatement", - "src": "4391:49:31" - }, - { - "expression": { - "id": 6792, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 6789, - "name": "feeGrowthAbove1X128", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6779, - "src": "4454:19:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "expression": { - "id": 6790, - "name": "upper", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6734, - "src": "4476:5:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$6654_storage_ptr", - "typeString": "struct Tick.Info storage pointer" - } - }, - "id": 6791, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "feeGrowthOutside1X128", - "nodeType": "MemberAccess", - "referencedDeclaration": 6645, - "src": "4476:27:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4454:49:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 6793, - "nodeType": "ExpressionStatement", - "src": "4454:49:31" - } - ] - } - }, - { - "expression": { - "id": 6817, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 6811, - "name": "feeGrowthInside0X128", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6723, - "src": "4713:20:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 6816, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 6814, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 6812, - "name": "feeGrowthGlobal0X128", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6718, - "src": "4736:20:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "id": 6813, - "name": "feeGrowthBelow0X128", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6740, - "src": "4759:19:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4736:42:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "id": 6815, - "name": "feeGrowthAbove0X128", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6776, - "src": "4781:19:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4736:64:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4713:87:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 6818, - "nodeType": "ExpressionStatement", - "src": "4713:87:31" - }, - { - "expression": { - "id": 6825, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 6819, - "name": "feeGrowthInside1X128", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6725, - "src": "4810:20:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 6824, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 6822, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 6820, - "name": "feeGrowthGlobal1X128", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6720, - "src": "4833:20:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "id": 6821, - "name": "feeGrowthBelow1X128", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6743, - "src": "4856:19:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4833:42:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "id": 6823, - "name": "feeGrowthAbove1X128", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6779, - "src": "4878:19:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4833:64:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4810:87:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 6826, - "nodeType": "ExpressionStatement", - "src": "4810:87:31" - } - ] - }, - "documentation": { - "id": 6706, - "nodeType": "StructuredDocumentation", - "src": "2565:765:31", - "text": "@notice Retrieves fee growth data\n @param self The mapping containing all tick information for initialized ticks\n @param tickLower The lower tick boundary of the position\n @param tickUpper The upper tick boundary of the position\n @param tickCurrent The current tick\n @param feeGrowthGlobal0X128 The all-time global fee growth, per unit of liquidity, in token0\n @param feeGrowthGlobal1X128 The all-time global fee growth, per unit of liquidity, in token1\n @return feeGrowthInside0X128 The all-time fee growth in token0, per unit of liquidity, inside the position's tick boundaries\n @return feeGrowthInside1X128 The all-time fee growth in token1, per unit of liquidity, inside the position's tick boundaries" - }, - "id": 6828, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getFeeGrowthInside", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 6721, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 6710, - "mutability": "mutable", - "name": "self", - "nodeType": "VariableDeclaration", - "scope": 6828, - "src": "3372:40:31", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Info_$6654_storage_$", - "typeString": "mapping(int24 => struct Tick.Info)" - }, - "typeName": { - "id": 6709, - "keyType": { - "id": 6707, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "3380:5:31", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "Mapping", - "src": "3372:27:31", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Info_$6654_storage_$", - "typeString": "mapping(int24 => struct Tick.Info)" - }, - "valueType": { - "id": 6708, - "name": "Tick.Info", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 6654, - "src": "3389:9:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$6654_storage_ptr", - "typeString": "struct Tick.Info" - } - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 6712, - "mutability": "mutable", - "name": "tickLower", - "nodeType": "VariableDeclaration", - "scope": 6828, - "src": "3422:15:31", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 6711, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "3422:5:31", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 6714, - "mutability": "mutable", - "name": "tickUpper", - "nodeType": "VariableDeclaration", - "scope": 6828, - "src": "3447:15:31", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 6713, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "3447:5:31", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 6716, - "mutability": "mutable", - "name": "tickCurrent", - "nodeType": "VariableDeclaration", - "scope": 6828, - "src": "3472:17:31", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 6715, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "3472:5:31", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 6718, - "mutability": "mutable", - "name": "feeGrowthGlobal0X128", - "nodeType": "VariableDeclaration", - "scope": 6828, - "src": "3499:28:31", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 6717, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3499:7:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 6720, - "mutability": "mutable", - "name": "feeGrowthGlobal1X128", - "nodeType": "VariableDeclaration", - "scope": 6828, - "src": "3537:28:31", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 6719, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3537:7:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "3362:209:31" - }, - "returnParameters": { - "id": 6726, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 6723, - "mutability": "mutable", - "name": "feeGrowthInside0X128", - "nodeType": "VariableDeclaration", - "scope": 6828, - "src": "3595:28:31", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 6722, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3595:7:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 6725, - "mutability": "mutable", - "name": "feeGrowthInside1X128", - "nodeType": "VariableDeclaration", - "scope": 6828, - "src": "3625:28:31", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 6724, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3625:7:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "3594:60:31" - }, - "scope": 7076, - "src": "3335:1569:31", - "stateMutability": "view", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 6977, - "nodeType": "Block", - "src": "6420:1279:31", - "statements": [ - { - "assignments": [ - 6861 - ], - "declarations": [ - { - "constant": false, - "id": 6861, - "mutability": "mutable", - "name": "info", - "nodeType": "VariableDeclaration", - "scope": 6977, - "src": "6430:22:31", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$6654_storage_ptr", - "typeString": "struct Tick.Info" - }, - "typeName": { - "id": 6860, - "name": "Tick.Info", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 6654, - "src": "6430:9:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$6654_storage_ptr", - "typeString": "struct Tick.Info" - } - }, - "visibility": "internal" - } - ], - "id": 6865, - "initialValue": { - "baseExpression": { - "id": 6862, - "name": "self", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6833, - "src": "6455:4:31", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Info_$6654_storage_$", - "typeString": "mapping(int24 => struct Tick.Info storage ref)" - } - }, - "id": 6864, - "indexExpression": { - "id": 6863, - "name": "tick", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6835, - "src": "6460:4:31", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "6455:10:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$6654_storage", - "typeString": "struct Tick.Info storage ref" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "6430:35:31" - }, - { - "assignments": [ - 6867 - ], - "declarations": [ - { - "constant": false, - "id": 6867, - "mutability": "mutable", - "name": "liquidityGrossBefore", - "nodeType": "VariableDeclaration", - "scope": 6977, - "src": "6476:28:31", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "typeName": { - "id": 6866, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "6476:7:31", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "visibility": "internal" - } - ], - "id": 6870, - "initialValue": { - "expression": { - "id": 6868, - "name": "info", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6861, - "src": "6507:4:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$6654_storage_ptr", - "typeString": "struct Tick.Info storage pointer" - } - }, - "id": 6869, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "liquidityGross", - "nodeType": "MemberAccess", - "referencedDeclaration": 6639, - "src": "6507:19:31", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "6476:50:31" - }, - { - "assignments": [ - 6872 - ], - "declarations": [ - { - "constant": false, - "id": 6872, - "mutability": "mutable", - "name": "liquidityGrossAfter", - "nodeType": "VariableDeclaration", - "scope": 6977, - "src": "6536:27:31", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "typeName": { - "id": 6871, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "6536:7:31", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "visibility": "internal" - } - ], - "id": 6878, - "initialValue": { - "arguments": [ - { - "id": 6875, - "name": "liquidityGrossBefore", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6867, - "src": "6589:20:31", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - { - "id": 6876, - "name": "liquidityDelta", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6839, - "src": "6611:14:31", - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - ], - "expression": { - "id": 6873, - "name": "LiquidityMath", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4739, - "src": "6566:13:31", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_LiquidityMath_$4739_$", - "typeString": "type(library LiquidityMath)" - } - }, - "id": 6874, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "addDelta", - "nodeType": "MemberAccess", - "referencedDeclaration": 4738, - "src": "6566:22:31", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint128_$_t_int128_$returns$_t_uint128_$", - "typeString": "function (uint128,int128) pure returns (uint128)" - } - }, - "id": 6877, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6566:60:31", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "6536:90:31" - }, - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "id": 6882, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 6880, - "name": "liquidityGrossAfter", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6872, - "src": "6645:19:31", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "id": 6881, - "name": "maxLiquidity", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6853, - "src": "6668:12:31", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "src": "6645:35:31", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "4c4f", - "id": 6883, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6682:4:31", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_df0e8e403ea3fe54c7efb80492fa8f6599886b9c5435c1772b8d6400862c8c48", - "typeString": "literal_string \"LO\"" - }, - "value": "LO" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_df0e8e403ea3fe54c7efb80492fa8f6599886b9c5435c1772b8d6400862c8c48", - "typeString": "literal_string \"LO\"" - } - ], - "id": 6879, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "6637:7:31", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 6884, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6637:50:31", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 6885, - "nodeType": "ExpressionStatement", - "src": "6637:50:31" - }, - { - "expression": { - "id": 6896, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 6886, - "name": "flipped", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6856, - "src": "6698:7:31", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 6895, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "id": 6889, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 6887, - "name": "liquidityGrossAfter", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6872, - "src": "6709:19:31", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 6888, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6732:1:31", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "6709:24:31", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "id": 6890, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "6708:26:31", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "id": 6893, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 6891, - "name": "liquidityGrossBefore", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6867, - "src": "6739:20:31", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 6892, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6763:1:31", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "6739:25:31", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "id": 6894, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "6738:27:31", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "6708:57:31", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "6698:67:31", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 6897, - "nodeType": "ExpressionStatement", - "src": "6698:67:31" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "id": 6900, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 6898, - "name": "liquidityGrossBefore", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6867, - "src": "6780:20:31", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 6899, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6804:1:31", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "6780:25:31", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 6943, - "nodeType": "IfStatement", - "src": "6776:572:31", - "trueBody": { - "id": 6942, - "nodeType": "Block", - "src": "6807:541:31", - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "id": 6903, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 6901, - "name": "tick", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6835, - "src": "6937:4:31", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "id": 6902, - "name": "tickCurrent", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6837, - "src": "6945:11:31", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "src": "6937:19:31", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 6935, - "nodeType": "IfStatement", - "src": "6933:368:31", - "trueBody": { - "id": 6934, - "nodeType": "Block", - "src": "6958:343:31", - "statements": [ - { - "expression": { - "id": 6908, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 6904, - "name": "info", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6861, - "src": "6976:4:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$6654_storage_ptr", - "typeString": "struct Tick.Info storage pointer" - } - }, - "id": 6906, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "feeGrowthOutside0X128", - "nodeType": "MemberAccess", - "referencedDeclaration": 6643, - "src": "6976:26:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 6907, - "name": "feeGrowthGlobal0X128", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6841, - "src": "7005:20:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "6976:49:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 6909, - "nodeType": "ExpressionStatement", - "src": "6976:49:31" - }, - { - "expression": { - "id": 6914, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 6910, - "name": "info", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6861, - "src": "7043:4:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$6654_storage_ptr", - "typeString": "struct Tick.Info storage pointer" - } - }, - "id": 6912, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "feeGrowthOutside1X128", - "nodeType": "MemberAccess", - "referencedDeclaration": 6645, - "src": "7043:26:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 6913, - "name": "feeGrowthGlobal1X128", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6843, - "src": "7072:20:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "7043:49:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 6915, - "nodeType": "ExpressionStatement", - "src": "7043:49:31" - }, - { - "expression": { - "id": 6920, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 6916, - "name": "info", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6861, - "src": "7110:4:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$6654_storage_ptr", - "typeString": "struct Tick.Info storage pointer" - } - }, - "id": 6918, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "secondsPerLiquidityOutsideX128", - "nodeType": "MemberAccess", - "referencedDeclaration": 6649, - "src": "7110:35:31", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 6919, - "name": "secondsPerLiquidityCumulativeX128", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6845, - "src": "7148:33:31", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "src": "7110:71:31", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "id": 6921, - "nodeType": "ExpressionStatement", - "src": "7110:71:31" - }, - { - "expression": { - "id": 6926, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 6922, - "name": "info", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6861, - "src": "7199:4:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$6654_storage_ptr", - "typeString": "struct Tick.Info storage pointer" - } - }, - "id": 6924, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "tickCumulativeOutside", - "nodeType": "MemberAccess", - "referencedDeclaration": 6647, - "src": "7199:26:31", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 6925, - "name": "tickCumulative", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6847, - "src": "7228:14:31", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - } - }, - "src": "7199:43:31", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - } - }, - "id": 6927, - "nodeType": "ExpressionStatement", - "src": "7199:43:31" - }, - { - "expression": { - "id": 6932, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 6928, - "name": "info", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6861, - "src": "7260:4:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$6654_storage_ptr", - "typeString": "struct Tick.Info storage pointer" - } - }, - "id": 6930, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "secondsOutside", - "nodeType": "MemberAccess", - "referencedDeclaration": 6651, - "src": "7260:19:31", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 6931, - "name": "time", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6849, - "src": "7282:4:31", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "src": "7260:26:31", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "id": 6933, - "nodeType": "ExpressionStatement", - "src": "7260:26:31" - } - ] - } - }, - { - "expression": { - "id": 6940, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 6936, - "name": "info", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6861, - "src": "7314:4:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$6654_storage_ptr", - "typeString": "struct Tick.Info storage pointer" - } - }, - "id": 6938, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "initialized", - "nodeType": "MemberAccess", - "referencedDeclaration": 6653, - "src": "7314:16:31", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "74727565", - "id": 6939, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7333:4:31", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "7314:23:31", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 6941, - "nodeType": "ExpressionStatement", - "src": "7314:23:31" - } - ] - } - }, - { - "expression": { - "id": 6948, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 6944, - "name": "info", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6861, - "src": "7358:4:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$6654_storage_ptr", - "typeString": "struct Tick.Info storage pointer" - } - }, - "id": 6946, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "liquidityGross", - "nodeType": "MemberAccess", - "referencedDeclaration": 6639, - "src": "7358:19:31", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 6947, - "name": "liquidityGrossAfter", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6872, - "src": "7380:19:31", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "src": "7358:41:31", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "id": 6949, - "nodeType": "ExpressionStatement", - "src": "7358:41:31" - }, - { - "expression": { - "id": 6975, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 6950, - "name": "info", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6861, - "src": "7525:4:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$6654_storage_ptr", - "typeString": "struct Tick.Info storage pointer" - } - }, - "id": 6952, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "liquidityNet", - "nodeType": "MemberAccess", - "referencedDeclaration": 6641, - "src": "7525:17:31", - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "condition": { - "id": 6953, - "name": "upper", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6851, - "src": "7545:5:31", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseExpression": { - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "arguments": [ - { - "id": 6970, - "name": "liquidityDelta", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6839, - "src": "7666:14:31", - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - ], - "expression": { - "arguments": [ - { - "expression": { - "id": 6966, - "name": "info", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6861, - "src": "7643:4:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$6654_storage_ptr", - "typeString": "struct Tick.Info storage pointer" - } - }, - "id": 6967, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "liquidityNet", - "nodeType": "MemberAccess", - "referencedDeclaration": 6641, - "src": "7643:17:31", - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - ], - "id": 6965, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "7636:6:31", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_int256_$", - "typeString": "type(int256)" - }, - "typeName": { - "id": 6964, - "name": "int256", - "nodeType": "ElementaryTypeName", - "src": "7636:6:31", - "typeDescriptions": {} - } - }, - "id": 6968, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7636:25:31", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "id": 6969, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "add", - "nodeType": "MemberAccess", - "referencedDeclaration": 4841, - "src": "7636:29:31", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$", - "typeString": "function (int256,int256) pure returns (int256)" - } - }, - "id": 6971, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7636:45:31", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "id": 6972, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "toInt128", - "nodeType": "MemberAccess", - "referencedDeclaration": 5822, - "src": "7636:54:31", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_int128_$bound_to$_t_int256_$", - "typeString": "function (int256) pure returns (int128)" - } - }, - "id": 6973, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7636:56:31", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - }, - "id": 6974, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "Conditional", - "src": "7545:147:31", - "trueExpression": { - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "arguments": [ - { - "id": 6960, - "name": "liquidityDelta", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6839, - "src": "7595:14:31", - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - ], - "expression": { - "arguments": [ - { - "expression": { - "id": 6956, - "name": "info", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6861, - "src": "7572:4:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$6654_storage_ptr", - "typeString": "struct Tick.Info storage pointer" - } - }, - "id": 6957, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "liquidityNet", - "nodeType": "MemberAccess", - "referencedDeclaration": 6641, - "src": "7572:17:31", - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - ], - "id": 6955, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "7565:6:31", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_int256_$", - "typeString": "type(int256)" - }, - "typeName": { - "id": 6954, - "name": "int256", - "nodeType": "ElementaryTypeName", - "src": "7565:6:31", - "typeDescriptions": {} - } - }, - "id": 6958, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7565:25:31", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "id": 6959, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sub", - "nodeType": "MemberAccess", - "referencedDeclaration": 4868, - "src": "7565:29:31", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_int256_$_t_int256_$returns$_t_int256_$bound_to$_t_int256_$", - "typeString": "function (int256,int256) pure returns (int256)" - } - }, - "id": 6961, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7565:45:31", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "id": 6962, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "toInt128", - "nodeType": "MemberAccess", - "referencedDeclaration": 5822, - "src": "7565:54:31", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_int128_$bound_to$_t_int256_$", - "typeString": "function (int256) pure returns (int128)" - } - }, - "id": 6963, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7565:56:31", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - }, - "src": "7525:167:31", - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - }, - "id": 6976, - "nodeType": "ExpressionStatement", - "src": "7525:167:31" - } - ] - }, - "documentation": { - "id": 6829, - "nodeType": "StructuredDocumentation", - "src": "4910:1095:31", - "text": "@notice Updates a tick and returns true if the tick was flipped from initialized to uninitialized, or vice versa\n @param self The mapping containing all tick information for initialized ticks\n @param tick The tick that will be updated\n @param tickCurrent The current tick\n @param liquidityDelta A new amount of liquidity to be added (subtracted) when tick is crossed from left to right (right to left)\n @param feeGrowthGlobal0X128 The all-time global fee growth, per unit of liquidity, in token0\n @param feeGrowthGlobal1X128 The all-time global fee growth, per unit of liquidity, in token1\n @param secondsPerLiquidityCumulativeX128 The all-time seconds per max(1, liquidity) of the pool\n @param time The current block timestamp cast to a uint32\n @param upper true for updating a position's upper tick, or false for updating a position's lower tick\n @param maxLiquidity The maximum liquidity allocation for a single tick\n @return flipped Whether the tick was flipped from initialized to uninitialized, or vice versa" - }, - "id": 6978, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "update", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 6854, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 6833, - "mutability": "mutable", - "name": "self", - "nodeType": "VariableDeclaration", - "scope": 6978, - "src": "6035:40:31", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Info_$6654_storage_$", - "typeString": "mapping(int24 => struct Tick.Info)" - }, - "typeName": { - "id": 6832, - "keyType": { - "id": 6830, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "6043:5:31", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "Mapping", - "src": "6035:27:31", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Info_$6654_storage_$", - "typeString": "mapping(int24 => struct Tick.Info)" - }, - "valueType": { - "id": 6831, - "name": "Tick.Info", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 6654, - "src": "6052:9:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$6654_storage_ptr", - "typeString": "struct Tick.Info" - } - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 6835, - "mutability": "mutable", - "name": "tick", - "nodeType": "VariableDeclaration", - "scope": 6978, - "src": "6085:10:31", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 6834, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "6085:5:31", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 6837, - "mutability": "mutable", - "name": "tickCurrent", - "nodeType": "VariableDeclaration", - "scope": 6978, - "src": "6105:17:31", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 6836, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "6105:5:31", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 6839, - "mutability": "mutable", - "name": "liquidityDelta", - "nodeType": "VariableDeclaration", - "scope": 6978, - "src": "6132:21:31", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - }, - "typeName": { - "id": 6838, - "name": "int128", - "nodeType": "ElementaryTypeName", - "src": "6132:6:31", - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 6841, - "mutability": "mutable", - "name": "feeGrowthGlobal0X128", - "nodeType": "VariableDeclaration", - "scope": 6978, - "src": "6163:28:31", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 6840, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6163:7:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 6843, - "mutability": "mutable", - "name": "feeGrowthGlobal1X128", - "nodeType": "VariableDeclaration", - "scope": 6978, - "src": "6201:28:31", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 6842, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "6201:7:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 6845, - "mutability": "mutable", - "name": "secondsPerLiquidityCumulativeX128", - "nodeType": "VariableDeclaration", - "scope": 6978, - "src": "6239:41:31", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "typeName": { - "id": 6844, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "6239:7:31", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 6847, - "mutability": "mutable", - "name": "tickCumulative", - "nodeType": "VariableDeclaration", - "scope": 6978, - "src": "6290:20:31", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - }, - "typeName": { - "id": 6846, - "name": "int56", - "nodeType": "ElementaryTypeName", - "src": "6290:5:31", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 6849, - "mutability": "mutable", - "name": "time", - "nodeType": "VariableDeclaration", - "scope": 6978, - "src": "6320:11:31", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 6848, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "6320:6:31", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 6851, - "mutability": "mutable", - "name": "upper", - "nodeType": "VariableDeclaration", - "scope": 6978, - "src": "6341:10:31", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 6850, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "6341:4:31", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 6853, - "mutability": "mutable", - "name": "maxLiquidity", - "nodeType": "VariableDeclaration", - "scope": 6978, - "src": "6361:20:31", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - }, - "typeName": { - "id": 6852, - "name": "uint128", - "nodeType": "ElementaryTypeName", - "src": "6361:7:31", - "typeDescriptions": { - "typeIdentifier": "t_uint128", - "typeString": "uint128" - } - }, - "visibility": "internal" - } - ], - "src": "6025:362:31" - }, - "returnParameters": { - "id": 6857, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 6856, - "mutability": "mutable", - "name": "flipped", - "nodeType": "VariableDeclaration", - "scope": 6978, - "src": "6406:12:31", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 6855, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "6406:4:31", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "src": "6405:14:31" - }, - "scope": 7076, - "src": "6010:1689:31", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 6993, - "nodeType": "Block", - "src": "7964:34:31", - "statements": [ - { - "expression": { - "id": 6991, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "delete", - "prefix": true, - "src": "7974:17:31", - "subExpression": { - "baseExpression": { - "id": 6988, - "name": "self", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6983, - "src": "7981:4:31", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Info_$6654_storage_$", - "typeString": "mapping(int24 => struct Tick.Info storage ref)" - } - }, - "id": 6990, - "indexExpression": { - "id": 6989, - "name": "tick", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6985, - "src": "7986:4:31", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "7981:10:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$6654_storage", - "typeString": "struct Tick.Info storage ref" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 6992, - "nodeType": "ExpressionStatement", - "src": "7974:17:31" - } - ] - }, - "documentation": { - "id": 6979, - "nodeType": "StructuredDocumentation", - "src": "7705:176:31", - "text": "@notice Clears tick data\n @param self The mapping containing all initialized tick information for initialized ticks\n @param tick The tick that will be cleared" - }, - "id": 6994, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "clear", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 6986, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 6983, - "mutability": "mutable", - "name": "self", - "nodeType": "VariableDeclaration", - "scope": 6994, - "src": "7901:40:31", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Info_$6654_storage_$", - "typeString": "mapping(int24 => struct Tick.Info)" - }, - "typeName": { - "id": 6982, - "keyType": { - "id": 6980, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "7909:5:31", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "Mapping", - "src": "7901:27:31", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Info_$6654_storage_$", - "typeString": "mapping(int24 => struct Tick.Info)" - }, - "valueType": { - "id": 6981, - "name": "Tick.Info", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 6654, - "src": "7918:9:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$6654_storage_ptr", - "typeString": "struct Tick.Info" - } - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 6985, - "mutability": "mutable", - "name": "tick", - "nodeType": "VariableDeclaration", - "scope": 6994, - "src": "7943:10:31", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 6984, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "7943:5:31", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - } - ], - "src": "7900:54:31" - }, - "returnParameters": { - "id": 6987, - "nodeType": "ParameterList", - "parameters": [], - "src": "7964:0:31" - }, - "scope": 7076, - "src": "7886:112:31", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 7074, - "nodeType": "Block", - "src": "8987:529:31", - "statements": [ - { - "assignments": [ - 7019 - ], - "declarations": [ - { - "constant": false, - "id": 7019, - "mutability": "mutable", - "name": "info", - "nodeType": "VariableDeclaration", - "scope": 7074, - "src": "8997:22:31", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$6654_storage_ptr", - "typeString": "struct Tick.Info" - }, - "typeName": { - "id": 7018, - "name": "Tick.Info", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 6654, - "src": "8997:9:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$6654_storage_ptr", - "typeString": "struct Tick.Info" - } - }, - "visibility": "internal" - } - ], - "id": 7023, - "initialValue": { - "baseExpression": { - "id": 7020, - "name": "self", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6999, - "src": "9022:4:31", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Info_$6654_storage_$", - "typeString": "mapping(int24 => struct Tick.Info storage ref)" - } - }, - "id": 7022, - "indexExpression": { - "id": 7021, - "name": "tick", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7001, - "src": "9027:4:31", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9022:10:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$6654_storage", - "typeString": "struct Tick.Info storage ref" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "8997:35:31" - }, - { - "expression": { - "id": 7031, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 7024, - "name": "info", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7019, - "src": "9042:4:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$6654_storage_ptr", - "typeString": "struct Tick.Info storage pointer" - } - }, - "id": 7026, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "feeGrowthOutside0X128", - "nodeType": "MemberAccess", - "referencedDeclaration": 6643, - "src": "9042:26:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7030, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7027, - "name": "feeGrowthGlobal0X128", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7003, - "src": "9071:20:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "expression": { - "id": 7028, - "name": "info", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7019, - "src": "9094:4:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$6654_storage_ptr", - "typeString": "struct Tick.Info storage pointer" - } - }, - "id": 7029, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "feeGrowthOutside0X128", - "nodeType": "MemberAccess", - "referencedDeclaration": 6643, - "src": "9094:26:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "9071:49:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "9042:78:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 7032, - "nodeType": "ExpressionStatement", - "src": "9042:78:31" - }, - { - "expression": { - "id": 7040, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 7033, - "name": "info", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7019, - "src": "9130:4:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$6654_storage_ptr", - "typeString": "struct Tick.Info storage pointer" - } - }, - "id": 7035, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "feeGrowthOutside1X128", - "nodeType": "MemberAccess", - "referencedDeclaration": 6645, - "src": "9130:26:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7039, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7036, - "name": "feeGrowthGlobal1X128", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7005, - "src": "9159:20:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "expression": { - "id": 7037, - "name": "info", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7019, - "src": "9182:4:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$6654_storage_ptr", - "typeString": "struct Tick.Info storage pointer" - } - }, - "id": 7038, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "feeGrowthOutside1X128", - "nodeType": "MemberAccess", - "referencedDeclaration": 6645, - "src": "9182:26:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "9159:49:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "9130:78:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 7041, - "nodeType": "ExpressionStatement", - "src": "9130:78:31" - }, - { - "expression": { - "id": 7049, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 7042, - "name": "info", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7019, - "src": "9218:4:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$6654_storage_ptr", - "typeString": "struct Tick.Info storage pointer" - } - }, - "id": 7044, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "secondsPerLiquidityOutsideX128", - "nodeType": "MemberAccess", - "referencedDeclaration": 6649, - "src": "9218:35:31", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "id": 7048, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7045, - "name": "secondsPerLiquidityCumulativeX128", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7007, - "src": "9256:33:31", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "expression": { - "id": 7046, - "name": "info", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7019, - "src": "9292:4:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$6654_storage_ptr", - "typeString": "struct Tick.Info storage pointer" - } - }, - "id": 7047, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "secondsPerLiquidityOutsideX128", - "nodeType": "MemberAccess", - "referencedDeclaration": 6649, - "src": "9292:35:31", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "src": "9256:71:31", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "src": "9218:109:31", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "id": 7050, - "nodeType": "ExpressionStatement", - "src": "9218:109:31" - }, - { - "expression": { - "id": 7058, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 7051, - "name": "info", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7019, - "src": "9337:4:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$6654_storage_ptr", - "typeString": "struct Tick.Info storage pointer" - } - }, - "id": 7053, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "tickCumulativeOutside", - "nodeType": "MemberAccess", - "referencedDeclaration": 6647, - "src": "9337:26:31", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_int56", - "typeString": "int56" - }, - "id": 7057, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7054, - "name": "tickCumulative", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7009, - "src": "9366:14:31", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "expression": { - "id": 7055, - "name": "info", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7019, - "src": "9383:4:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$6654_storage_ptr", - "typeString": "struct Tick.Info storage pointer" - } - }, - "id": 7056, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "tickCumulativeOutside", - "nodeType": "MemberAccess", - "referencedDeclaration": 6647, - "src": "9383:26:31", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - } - }, - "src": "9366:43:31", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - } - }, - "src": "9337:72:31", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - } - }, - "id": 7059, - "nodeType": "ExpressionStatement", - "src": "9337:72:31" - }, - { - "expression": { - "id": 7067, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "expression": { - "id": 7060, - "name": "info", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7019, - "src": "9419:4:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$6654_storage_ptr", - "typeString": "struct Tick.Info storage pointer" - } - }, - "id": 7062, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "secondsOutside", - "nodeType": "MemberAccess", - "referencedDeclaration": 6651, - "src": "9419:19:31", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "id": 7066, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7063, - "name": "time", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7011, - "src": "9441:4:31", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "expression": { - "id": 7064, - "name": "info", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7019, - "src": "9448:4:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$6654_storage_ptr", - "typeString": "struct Tick.Info storage pointer" - } - }, - "id": 7065, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "secondsOutside", - "nodeType": "MemberAccess", - "referencedDeclaration": 6651, - "src": "9448:19:31", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "src": "9441:26:31", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "src": "9419:48:31", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "id": 7068, - "nodeType": "ExpressionStatement", - "src": "9419:48:31" - }, - { - "expression": { - "id": 7072, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 7069, - "name": "liquidityNet", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7014, - "src": "9477:12:31", - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "expression": { - "id": 7070, - "name": "info", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7019, - "src": "9492:4:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$6654_storage_ptr", - "typeString": "struct Tick.Info storage pointer" - } - }, - "id": 7071, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "liquidityNet", - "nodeType": "MemberAccess", - "referencedDeclaration": 6641, - "src": "9492:17:31", - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - }, - "src": "9477:32:31", - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - }, - "id": 7073, - "nodeType": "ExpressionStatement", - "src": "9477:32:31" - } - ] - }, - "documentation": { - "id": 6995, - "nodeType": "StructuredDocumentation", - "src": "8004:670:31", - "text": "@notice Transitions to next tick as needed by price movement\n @param self The mapping containing all tick information for initialized ticks\n @param tick The destination tick of the transition\n @param feeGrowthGlobal0X128 The all-time global fee growth, per unit of liquidity, in token0\n @param feeGrowthGlobal1X128 The all-time global fee growth, per unit of liquidity, in token1\n @param secondsPerLiquidityCumulativeX128 The current seconds per liquidity\n @param time The current block.timestamp\n @return liquidityNet The amount of liquidity added (subtracted) when tick is crossed from left to right (right to left)" - }, - "id": 7075, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "cross", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 7012, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 6999, - "mutability": "mutable", - "name": "self", - "nodeType": "VariableDeclaration", - "scope": 7075, - "src": "8703:40:31", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Info_$6654_storage_$", - "typeString": "mapping(int24 => struct Tick.Info)" - }, - "typeName": { - "id": 6998, - "keyType": { - "id": 6996, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "8711:5:31", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "Mapping", - "src": "8703:27:31", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_int24_$_t_struct$_Info_$6654_storage_$", - "typeString": "mapping(int24 => struct Tick.Info)" - }, - "valueType": { - "id": 6997, - "name": "Tick.Info", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 6654, - "src": "8720:9:31", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Info_$6654_storage_ptr", - "typeString": "struct Tick.Info" - } - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 7001, - "mutability": "mutable", - "name": "tick", - "nodeType": "VariableDeclaration", - "scope": 7075, - "src": "8753:10:31", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 7000, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "8753:5:31", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 7003, - "mutability": "mutable", - "name": "feeGrowthGlobal0X128", - "nodeType": "VariableDeclaration", - "scope": 7075, - "src": "8773:28:31", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 7002, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8773:7:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 7005, - "mutability": "mutable", - "name": "feeGrowthGlobal1X128", - "nodeType": "VariableDeclaration", - "scope": 7075, - "src": "8811:28:31", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 7004, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8811:7:31", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 7007, - "mutability": "mutable", - "name": "secondsPerLiquidityCumulativeX128", - "nodeType": "VariableDeclaration", - "scope": 7075, - "src": "8849:41:31", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "typeName": { - "id": 7006, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "8849:7:31", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 7009, - "mutability": "mutable", - "name": "tickCumulative", - "nodeType": "VariableDeclaration", - "scope": 7075, - "src": "8900:20:31", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - }, - "typeName": { - "id": 7008, - "name": "int56", - "nodeType": "ElementaryTypeName", - "src": "8900:5:31", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 7011, - "mutability": "mutable", - "name": "time", - "nodeType": "VariableDeclaration", - "scope": 7075, - "src": "8930:11:31", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 7010, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "8930:6:31", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "visibility": "internal" - } - ], - "src": "8693:254:31" - }, - "returnParameters": { - "id": 7015, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 7014, - "mutability": "mutable", - "name": "liquidityNet", - "nodeType": "VariableDeclaration", - "scope": 7075, - "src": "8966:19:31", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - }, - "typeName": { - "id": 7013, - "name": "int128", - "nodeType": "ElementaryTypeName", - "src": "8966:6:31", - "typeDescriptions": { - "typeIdentifier": "t_int128", - "typeString": "int128" - } - }, - "visibility": "internal" - } - ], - "src": "8965:21:31" - }, - "scope": 7076, - "src": "8679:837:31", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - } - ], - "scope": 7077, - "src": "277:9241:31" - } - ], - "src": "37:9482:31" - }, - "id": 31 - }, - "@uniswap/v3-core/contracts/libraries/TickBitmap.sol": { - "ast": { - "absolutePath": "@uniswap/v3-core/contracts/libraries/TickBitmap.sol", - "exportedSymbols": { - "BitMath": [ - 4497 - ], - "TickBitmap": [ - 7332 - ] - }, - "id": 7333, - "license": "BUSL-1.1", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 7078, - "literals": [ - "solidity", - ">=", - "0.5", - ".0" - ], - "nodeType": "PragmaDirective", - "src": "37:24:32" - }, - { - "absolutePath": "@uniswap/v3-core/contracts/libraries/BitMath.sol", - "file": "./BitMath.sol", - "id": 7079, - "nodeType": "ImportDirective", - "scope": 7333, - "sourceUnit": 4498, - "src": "63:23:32", - "symbolAliases": [], - "unitAlias": "" - }, - { - "abstract": false, - "baseContracts": [], - "contractDependencies": [], - "contractKind": "library", - "documentation": { - "id": 7080, - "nodeType": "StructuredDocumentation", - "src": "88:243:32", - "text": "@title Packed tick initialized state library\n @notice Stores a packed mapping of tick index to its initialized state\n @dev The mapping uses int16 for keys since ticks are represented as int24 and there are 256 (2^8) values per word." - }, - "fullyImplemented": true, - "id": 7332, - "linearizedBaseContracts": [ - 7332 - ], - "name": "TickBitmap", - "nodeType": "ContractDefinition", - "nodes": [ - { - "body": { - "id": 7108, - "nodeType": "Block", - "src": "767:79:32", - "statements": [ - { - "expression": { - "id": 7097, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 7090, - "name": "wordPos", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7086, - "src": "777:7:32", - "typeDescriptions": { - "typeIdentifier": "t_int16", - "typeString": "int16" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "id": 7095, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7093, - "name": "tick", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7083, - "src": "793:4:32", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "BinaryOperation", - "operator": ">>", - "rightExpression": { - "hexValue": "38", - "id": 7094, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "801:1:32", - "typeDescriptions": { - "typeIdentifier": "t_rational_8_by_1", - "typeString": "int_const 8" - }, - "value": "8" - }, - "src": "793:9:32", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - ], - "id": 7092, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "787:5:32", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_int16_$", - "typeString": "type(int16)" - }, - "typeName": { - "id": 7091, - "name": "int16", - "nodeType": "ElementaryTypeName", - "src": "787:5:32", - "typeDescriptions": {} - } - }, - "id": 7096, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "787:16:32", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_int16", - "typeString": "int16" - } - }, - "src": "777:26:32", - "typeDescriptions": { - "typeIdentifier": "t_int16", - "typeString": "int16" - } - }, - "id": 7098, - "nodeType": "ExpressionStatement", - "src": "777:26:32" - }, - { - "expression": { - "id": 7106, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 7099, - "name": "bitPos", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7088, - "src": "813:6:32", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "id": 7104, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7102, - "name": "tick", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7083, - "src": "828:4:32", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "BinaryOperation", - "operator": "%", - "rightExpression": { - "hexValue": "323536", - "id": 7103, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "835:3:32", - "typeDescriptions": { - "typeIdentifier": "t_rational_256_by_1", - "typeString": "int_const 256" - }, - "value": "256" - }, - "src": "828:10:32", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - ], - "id": 7101, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "822:5:32", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint8_$", - "typeString": "type(uint8)" - }, - "typeName": { - "id": 7100, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "822:5:32", - "typeDescriptions": {} - } - }, - "id": 7105, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "822:17:32", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "813:26:32", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 7107, - "nodeType": "ExpressionStatement", - "src": "813:26:32" - } - ] - }, - "documentation": { - "id": 7081, - "nodeType": "StructuredDocumentation", - "src": "356:325:32", - "text": "@notice Computes the position in the mapping where the initialized bit for a tick lives\n @param tick The tick for which to compute the position\n @return wordPos The key in the mapping containing the word in which the bit is stored\n @return bitPos The bit position in the word where the flag is stored" - }, - "id": 7109, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "position", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 7084, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 7083, - "mutability": "mutable", - "name": "tick", - "nodeType": "VariableDeclaration", - "scope": 7109, - "src": "704:10:32", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 7082, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "704:5:32", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - } - ], - "src": "703:12:32" - }, - "returnParameters": { - "id": 7089, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 7086, - "mutability": "mutable", - "name": "wordPos", - "nodeType": "VariableDeclaration", - "scope": 7109, - "src": "738:13:32", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int16", - "typeString": "int16" - }, - "typeName": { - "id": 7085, - "name": "int16", - "nodeType": "ElementaryTypeName", - "src": "738:5:32", - "typeDescriptions": { - "typeIdentifier": "t_int16", - "typeString": "int16" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 7088, - "mutability": "mutable", - "name": "bitPos", - "nodeType": "VariableDeclaration", - "scope": 7109, - "src": "753:12:32", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 7087, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "753:5:32", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "visibility": "internal" - } - ], - "src": "737:29:32" - }, - "scope": 7332, - "src": "686:160:32", - "stateMutability": "pure", - "virtual": false, - "visibility": "private" - }, - { - "body": { - "id": 7151, - "nodeType": "Block", - "src": "1230:220:32", - "statements": [ - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "id": 7126, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "id": 7124, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7122, - "name": "tick", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7116, - "src": "1248:4:32", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "BinaryOperation", - "operator": "%", - "rightExpression": { - "id": 7123, - "name": "tickSpacing", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7118, - "src": "1255:11:32", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "src": "1248:18:32", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 7125, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1270:1:32", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1248:23:32", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 7121, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "1240:7:32", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 7127, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1240:32:32", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 7128, - "nodeType": "ExpressionStatement", - "src": "1240:32:32" - }, - { - "assignments": [ - 7130, - 7132 - ], - "declarations": [ - { - "constant": false, - "id": 7130, - "mutability": "mutable", - "name": "wordPos", - "nodeType": "VariableDeclaration", - "scope": 7151, - "src": "1317:13:32", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int16", - "typeString": "int16" - }, - "typeName": { - "id": 7129, - "name": "int16", - "nodeType": "ElementaryTypeName", - "src": "1317:5:32", - "typeDescriptions": { - "typeIdentifier": "t_int16", - "typeString": "int16" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 7132, - "mutability": "mutable", - "name": "bitPos", - "nodeType": "VariableDeclaration", - "scope": 7151, - "src": "1332:12:32", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 7131, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "1332:5:32", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "visibility": "internal" - } - ], - "id": 7138, - "initialValue": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "id": 7136, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7134, - "name": "tick", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7116, - "src": "1357:4:32", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "id": 7135, - "name": "tickSpacing", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7118, - "src": "1364:11:32", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "src": "1357:18:32", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - ], - "id": 7133, - "name": "position", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7109, - "src": "1348:8:32", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_int24_$returns$_t_int16_$_t_uint8_$", - "typeString": "function (int24) pure returns (int16,uint8)" - } - }, - "id": 7137, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1348:28:32", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_int16_$_t_uint8_$", - "typeString": "tuple(int16,uint8)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1316:60:32" - }, - { - "assignments": [ - 7140 - ], - "declarations": [ - { - "constant": false, - "id": 7140, - "mutability": "mutable", - "name": "mask", - "nodeType": "VariableDeclaration", - "scope": 7151, - "src": "1386:12:32", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 7139, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1386:7:32", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 7144, - "initialValue": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7143, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "hexValue": "31", - "id": 7141, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1401:1:32", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "nodeType": "BinaryOperation", - "operator": "<<", - "rightExpression": { - "id": 7142, - "name": "bitPos", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7132, - "src": "1406:6:32", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "1401:11:32", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1386:26:32" - }, - { - "expression": { - "id": 7149, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "id": 7145, - "name": "self", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7114, - "src": "1422:4:32", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_int16_$_t_uint256_$", - "typeString": "mapping(int16 => uint256)" - } - }, - "id": 7147, - "indexExpression": { - "id": 7146, - "name": "wordPos", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7130, - "src": "1427:7:32", - "typeDescriptions": { - "typeIdentifier": "t_int16", - "typeString": "int16" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "1422:13:32", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "^=", - "rightHandSide": { - "id": 7148, - "name": "mask", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7140, - "src": "1439:4:32", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1422:21:32", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 7150, - "nodeType": "ExpressionStatement", - "src": "1422:21:32" - } - ] - }, - "documentation": { - "id": 7110, - "nodeType": "StructuredDocumentation", - "src": "852:245:32", - "text": "@notice Flips the initialized state for a given tick from false to true, or vice versa\n @param self The mapping in which to flip the tick\n @param tick The tick to flip\n @param tickSpacing The spacing between usable ticks" - }, - "id": 7152, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "flipTick", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 7119, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 7114, - "mutability": "mutable", - "name": "self", - "nodeType": "VariableDeclaration", - "scope": 7152, - "src": "1129:38:32", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_int16_$_t_uint256_$", - "typeString": "mapping(int16 => uint256)" - }, - "typeName": { - "id": 7113, - "keyType": { - "id": 7111, - "name": "int16", - "nodeType": "ElementaryTypeName", - "src": "1137:5:32", - "typeDescriptions": { - "typeIdentifier": "t_int16", - "typeString": "int16" - } - }, - "nodeType": "Mapping", - "src": "1129:25:32", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_int16_$_t_uint256_$", - "typeString": "mapping(int16 => uint256)" - }, - "valueType": { - "id": 7112, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1146:7:32", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 7116, - "mutability": "mutable", - "name": "tick", - "nodeType": "VariableDeclaration", - "scope": 7152, - "src": "1177:10:32", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 7115, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "1177:5:32", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 7118, - "mutability": "mutable", - "name": "tickSpacing", - "nodeType": "VariableDeclaration", - "scope": 7152, - "src": "1197:17:32", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 7117, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "1197:5:32", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - } - ], - "src": "1119:101:32" - }, - "returnParameters": { - "id": 7120, - "nodeType": "ParameterList", - "parameters": [], - "src": "1230:0:32" - }, - "scope": 7332, - "src": "1102:348:32", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 7330, - "nodeType": "Block", - "src": "2402:1707:32", - "statements": [ - { - "assignments": [ - 7171 - ], - "declarations": [ - { - "constant": false, - "id": 7171, - "mutability": "mutable", - "name": "compressed", - "nodeType": "VariableDeclaration", - "scope": 7330, - "src": "2412:16:32", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 7170, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "2412:5:32", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - } - ], - "id": 7175, - "initialValue": { - "commonType": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "id": 7174, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7172, - "name": "tick", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7159, - "src": "2431:4:32", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "id": 7173, - "name": "tickSpacing", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7161, - "src": "2438:11:32", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "src": "2431:18:32", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2412:37:32" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 7184, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "id": 7178, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7176, - "name": "tick", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7159, - "src": "2463:4:32", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "hexValue": "30", - "id": 7177, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2470:1:32", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2463:8:32", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "id": 7183, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "id": 7181, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7179, - "name": "tick", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7159, - "src": "2475:4:32", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "BinaryOperation", - "operator": "%", - "rightExpression": { - "id": 7180, - "name": "tickSpacing", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7161, - "src": "2482:11:32", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "src": "2475:18:32", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "hexValue": "30", - "id": 7182, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2497:1:32", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2475:23:32", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "2463:35:32", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 7188, - "nodeType": "IfStatement", - "src": "2459:53:32", - "trueBody": { - "expression": { - "id": 7186, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "--", - "prefix": false, - "src": "2500:12:32", - "subExpression": { - "id": 7185, - "name": "compressed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7171, - "src": "2500:10:32", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "id": 7187, - "nodeType": "ExpressionStatement", - "src": "2500:12:32" - } - }, - { - "condition": { - "id": 7189, - "name": "lte", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7163, - "src": "2562:3:32", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 7328, - "nodeType": "Block", - "src": "3289:814:32", - "statements": [ - { - "assignments": [ - 7256, - 7258 - ], - "declarations": [ - { - "constant": false, - "id": 7256, - "mutability": "mutable", - "name": "wordPos", - "nodeType": "VariableDeclaration", - "scope": 7328, - "src": "3401:13:32", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int16", - "typeString": "int16" - }, - "typeName": { - "id": 7255, - "name": "int16", - "nodeType": "ElementaryTypeName", - "src": "3401:5:32", - "typeDescriptions": { - "typeIdentifier": "t_int16", - "typeString": "int16" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 7258, - "mutability": "mutable", - "name": "bitPos", - "nodeType": "VariableDeclaration", - "scope": 7328, - "src": "3416:12:32", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 7257, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "3416:5:32", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "visibility": "internal" - } - ], - "id": 7264, - "initialValue": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "id": 7262, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7260, - "name": "compressed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7171, - "src": "3441:10:32", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "hexValue": "31", - "id": 7261, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3454:1:32", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "3441:14:32", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - ], - "id": 7259, - "name": "position", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7109, - "src": "3432:8:32", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_int24_$returns$_t_int16_$_t_uint8_$", - "typeString": "function (int24) pure returns (int16,uint8)" - } - }, - "id": 7263, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3432:24:32", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_int16_$_t_uint8_$", - "typeString": "tuple(int16,uint8)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3400:56:32" - }, - { - "assignments": [ - 7266 - ], - "declarations": [ - { - "constant": false, - "id": 7266, - "mutability": "mutable", - "name": "mask", - "nodeType": "VariableDeclaration", - "scope": 7328, - "src": "3528:12:32", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 7265, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3528:7:32", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 7275, - "initialValue": { - "id": 7274, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "~", - "prefix": true, - "src": "3543:20:32", - "subExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7272, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7269, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "hexValue": "31", - "id": 7267, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3546:1:32", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "nodeType": "BinaryOperation", - "operator": "<<", - "rightExpression": { - "id": 7268, - "name": "bitPos", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7258, - "src": "3551:6:32", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "3546:11:32", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 7270, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "3545:13:32", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "hexValue": "31", - "id": 7271, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3561:1:32", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "3545:17:32", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 7273, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "3544:19:32", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3528:35:32" - }, - { - "assignments": [ - 7277 - ], - "declarations": [ - { - "constant": false, - "id": 7277, - "mutability": "mutable", - "name": "masked", - "nodeType": "VariableDeclaration", - "scope": 7328, - "src": "3577:14:32", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 7276, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3577:7:32", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 7283, - "initialValue": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7282, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "baseExpression": { - "id": 7278, - "name": "self", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7157, - "src": "3594:4:32", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_int16_$_t_uint256_$", - "typeString": "mapping(int16 => uint256)" - } - }, - "id": 7280, - "indexExpression": { - "id": 7279, - "name": "wordPos", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7256, - "src": "3599:7:32", - "typeDescriptions": { - "typeIdentifier": "t_int16", - "typeString": "int16" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3594:13:32", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "&", - "rightExpression": { - "id": 7281, - "name": "mask", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7266, - "src": "3610:4:32", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3594:20:32", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3577:37:32" - }, - { - "expression": { - "id": 7288, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 7284, - "name": "initialized", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7168, - "src": "3739:11:32", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7287, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7285, - "name": "masked", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7277, - "src": "3753:6:32", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "hexValue": "30", - "id": 7286, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3763:1:32", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3753:11:32", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "3739:25:32", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 7289, - "nodeType": "ExpressionStatement", - "src": "3739:25:32" - }, - { - "expression": { - "id": 7326, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 7290, - "name": "next", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7166, - "src": "3888:4:32", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "condition": { - "id": 7291, - "name": "initialized", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7168, - "src": "3895:11:32", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseExpression": { - "commonType": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "id": 7324, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "id": 7321, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "id": 7310, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7308, - "name": "compressed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7171, - "src": "4029:10:32", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "hexValue": "31", - "id": 7309, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4042:1:32", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "4029:14:32", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 7319, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "arguments": [ - { - "id": 7315, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "4057:5:32", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint8_$", - "typeString": "type(uint8)" - }, - "typeName": { - "id": 7314, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "4057:5:32", - "typeDescriptions": {} - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_type$_t_uint8_$", - "typeString": "type(uint8)" - } - ], - "id": 7313, - "name": "type", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -27, - "src": "4052:4:32", - "typeDescriptions": { - "typeIdentifier": "t_function_metatype_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 7316, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4052:11:32", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_magic_meta_type_t_uint8", - "typeString": "type(uint8)" - } - }, - "id": 7317, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "max", - "nodeType": "MemberAccess", - "src": "4052:15:32", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "id": 7318, - "name": "bitPos", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7258, - "src": "4070:6:32", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "4052:24:32", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - ], - "id": 7312, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "4046:5:32", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_int24_$", - "typeString": "type(int24)" - }, - "typeName": { - "id": 7311, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "4046:5:32", - "typeDescriptions": {} - } - }, - "id": 7320, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4046:31:32", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "src": "4029:48:32", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - } - ], - "id": 7322, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "4028:50:32", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "id": 7323, - "name": "tickSpacing", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7161, - "src": "4081:11:32", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "src": "4028:64:32", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "id": 7325, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "Conditional", - "src": "3895:197:32", - "trueExpression": { - "commonType": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "id": 7307, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "id": 7304, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "id": 7294, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7292, - "name": "compressed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7171, - "src": "3926:10:32", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "hexValue": "31", - "id": 7293, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3939:1:32", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "3926:14:32", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 7302, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "arguments": [ - { - "id": 7299, - "name": "masked", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7277, - "src": "3977:6:32", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 7297, - "name": "BitMath", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4497, - "src": "3949:7:32", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_BitMath_$4497_$", - "typeString": "type(library BitMath)" - } - }, - "id": 7298, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "leastSignificantBit", - "nodeType": "MemberAccess", - "referencedDeclaration": 4496, - "src": "3949:27:32", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint8_$", - "typeString": "function (uint256) pure returns (uint8)" - } - }, - "id": 7300, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3949:35:32", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "id": 7301, - "name": "bitPos", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7258, - "src": "3987:6:32", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "3949:44:32", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - ], - "id": 7296, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "3943:5:32", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_int24_$", - "typeString": "type(int24)" - }, - "typeName": { - "id": 7295, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "3943:5:32", - "typeDescriptions": {} - } - }, - "id": 7303, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3943:51:32", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "src": "3926:68:32", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - } - ], - "id": 7305, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "3925:70:32", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "id": 7306, - "name": "tickSpacing", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7161, - "src": "3998:11:32", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "src": "3925:84:32", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "src": "3888:204:32", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "id": 7327, - "nodeType": "ExpressionStatement", - "src": "3888:204:32" - } - ] - }, - "id": 7329, - "nodeType": "IfStatement", - "src": "2558:1545:32", - "trueBody": { - "id": 7254, - "nodeType": "Block", - "src": "2567:716:32", - "statements": [ - { - "assignments": [ - 7191, - 7193 - ], - "declarations": [ - { - "constant": false, - "id": 7191, - "mutability": "mutable", - "name": "wordPos", - "nodeType": "VariableDeclaration", - "scope": 7254, - "src": "2582:13:32", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int16", - "typeString": "int16" - }, - "typeName": { - "id": 7190, - "name": "int16", - "nodeType": "ElementaryTypeName", - "src": "2582:5:32", - "typeDescriptions": { - "typeIdentifier": "t_int16", - "typeString": "int16" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 7193, - "mutability": "mutable", - "name": "bitPos", - "nodeType": "VariableDeclaration", - "scope": 7254, - "src": "2597:12:32", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 7192, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "2597:5:32", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "visibility": "internal" - } - ], - "id": 7197, - "initialValue": { - "arguments": [ - { - "id": 7195, - "name": "compressed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7171, - "src": "2622:10:32", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - ], - "id": 7194, - "name": "position", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7109, - "src": "2613:8:32", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_int24_$returns$_t_int16_$_t_uint8_$", - "typeString": "function (int24) pure returns (int16,uint8)" - } - }, - "id": 7196, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2613:20:32", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_int16_$_t_uint8_$", - "typeString": "tuple(int16,uint8)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2581:52:32" - }, - { - "assignments": [ - 7199 - ], - "declarations": [ - { - "constant": false, - "id": 7199, - "mutability": "mutable", - "name": "mask", - "nodeType": "VariableDeclaration", - "scope": 7254, - "src": "2714:12:32", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 7198, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2714:7:32", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 7211, - "initialValue": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7210, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7205, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7202, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "hexValue": "31", - "id": 7200, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2730:1:32", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "nodeType": "BinaryOperation", - "operator": "<<", - "rightExpression": { - "id": 7201, - "name": "bitPos", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7193, - "src": "2735:6:32", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "2730:11:32", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 7203, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "2729:13:32", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "hexValue": "31", - "id": 7204, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2745:1:32", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "2729:17:32", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7208, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "hexValue": "31", - "id": 7206, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2750:1:32", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "nodeType": "BinaryOperation", - "operator": "<<", - "rightExpression": { - "id": 7207, - "name": "bitPos", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7193, - "src": "2755:6:32", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "2750:11:32", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 7209, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "2749:13:32", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2729:33:32", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2714:48:32" - }, - { - "assignments": [ - 7213 - ], - "declarations": [ - { - "constant": false, - "id": 7213, - "mutability": "mutable", - "name": "masked", - "nodeType": "VariableDeclaration", - "scope": 7254, - "src": "2776:14:32", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 7212, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2776:7:32", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 7219, - "initialValue": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7218, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "baseExpression": { - "id": 7214, - "name": "self", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7157, - "src": "2793:4:32", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_int16_$_t_uint256_$", - "typeString": "mapping(int16 => uint256)" - } - }, - "id": 7216, - "indexExpression": { - "id": 7215, - "name": "wordPos", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7191, - "src": "2798:7:32", - "typeDescriptions": { - "typeIdentifier": "t_int16", - "typeString": "int16" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2793:13:32", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "&", - "rightExpression": { - "id": 7217, - "name": "mask", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7199, - "src": "2809:4:32", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2793:20:32", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2776:37:32" - }, - { - "expression": { - "id": 7224, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 7220, - "name": "initialized", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7168, - "src": "2946:11:32", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7223, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7221, - "name": "masked", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7213, - "src": "2960:6:32", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "hexValue": "30", - "id": 7222, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2970:1:32", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2960:11:32", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "2946:25:32", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 7225, - "nodeType": "ExpressionStatement", - "src": "2946:25:32" - }, - { - "expression": { - "id": 7252, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 7226, - "name": "next", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7166, - "src": "3095:4:32", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "condition": { - "id": 7227, - "name": "initialized", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7168, - "src": "3102:11:32", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseExpression": { - "commonType": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "id": 7250, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "id": 7247, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7242, - "name": "compressed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7171, - "src": "3231:10:32", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "arguments": [ - { - "id": 7245, - "name": "bitPos", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7193, - "src": "3250:6:32", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - ], - "id": 7244, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "3244:5:32", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_int24_$", - "typeString": "type(int24)" - }, - "typeName": { - "id": 7243, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "3244:5:32", - "typeDescriptions": {} - } - }, - "id": 7246, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3244:13:32", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "src": "3231:26:32", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - } - ], - "id": 7248, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "3230:28:32", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "id": 7249, - "name": "tickSpacing", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7161, - "src": "3261:11:32", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "src": "3230:42:32", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "id": 7251, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "Conditional", - "src": "3102:170:32", - "trueExpression": { - "commonType": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "id": 7241, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "id": 7238, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7228, - "name": "compressed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7171, - "src": "3133:10:32", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 7236, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7231, - "name": "bitPos", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7193, - "src": "3152:6:32", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "arguments": [ - { - "id": 7234, - "name": "masked", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7213, - "src": "3188:6:32", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 7232, - "name": "BitMath", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4497, - "src": "3161:7:32", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_BitMath_$4497_$", - "typeString": "type(library BitMath)" - } - }, - "id": 7233, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "mostSignificantBit", - "nodeType": "MemberAccess", - "referencedDeclaration": 4335, - "src": "3161:26:32", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint8_$", - "typeString": "function (uint256) pure returns (uint8)" - } - }, - "id": 7235, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3161:34:32", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "3152:43:32", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - ], - "id": 7230, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "3146:5:32", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_int24_$", - "typeString": "type(int24)" - }, - "typeName": { - "id": 7229, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "3146:5:32", - "typeDescriptions": {} - } - }, - "id": 7237, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3146:50:32", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "src": "3133:63:32", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - } - ], - "id": 7239, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "3132:65:32", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "id": 7240, - "name": "tickSpacing", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7161, - "src": "3200:11:32", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "src": "3132:79:32", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "src": "3095:177:32", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "id": 7253, - "nodeType": "ExpressionStatement", - "src": "3095:177:32" - } - ] - } - } - ] - }, - "documentation": { - "id": 7153, - "nodeType": "StructuredDocumentation", - "src": "1456:727:32", - "text": "@notice Returns the next initialized tick contained in the same word (or adjacent word) as the tick that is either\n to the left (less than or equal to) or right (greater than) of the given tick\n @param self The mapping in which to compute the next initialized tick\n @param tick The starting tick\n @param tickSpacing The spacing between usable ticks\n @param lte Whether to search for the next initialized tick to the left (less than or equal to the starting tick)\n @return next The next initialized or uninitialized tick up to 256 ticks away from the current tick\n @return initialized Whether the next tick is initialized, as the function only searches within up to 256 ticks" - }, - "id": 7331, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "nextInitializedTickWithinOneWord", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 7164, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 7157, - "mutability": "mutable", - "name": "self", - "nodeType": "VariableDeclaration", - "scope": 7331, - "src": "2239:38:32", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_int16_$_t_uint256_$", - "typeString": "mapping(int16 => uint256)" - }, - "typeName": { - "id": 7156, - "keyType": { - "id": 7154, - "name": "int16", - "nodeType": "ElementaryTypeName", - "src": "2247:5:32", - "typeDescriptions": { - "typeIdentifier": "t_int16", - "typeString": "int16" - } - }, - "nodeType": "Mapping", - "src": "2239:25:32", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_int16_$_t_uint256_$", - "typeString": "mapping(int16 => uint256)" - }, - "valueType": { - "id": 7155, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2256:7:32", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 7159, - "mutability": "mutable", - "name": "tick", - "nodeType": "VariableDeclaration", - "scope": 7331, - "src": "2287:10:32", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 7158, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "2287:5:32", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 7161, - "mutability": "mutable", - "name": "tickSpacing", - "nodeType": "VariableDeclaration", - "scope": 7331, - "src": "2307:17:32", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 7160, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "2307:5:32", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 7163, - "mutability": "mutable", - "name": "lte", - "nodeType": "VariableDeclaration", - "scope": 7331, - "src": "2334:8:32", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 7162, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "2334:4:32", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "src": "2229:119:32" - }, - "returnParameters": { - "id": 7169, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 7166, - "mutability": "mutable", - "name": "next", - "nodeType": "VariableDeclaration", - "scope": 7331, - "src": "2372:10:32", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 7165, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "2372:5:32", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 7168, - "mutability": "mutable", - "name": "initialized", - "nodeType": "VariableDeclaration", - "scope": 7331, - "src": "2384:16:32", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 7167, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "2384:4:32", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - } - ], - "src": "2371:30:32" - }, - "scope": 7332, - "src": "2188:1921:32", - "stateMutability": "view", - "virtual": false, - "visibility": "internal" - } - ], - "scope": 7333, - "src": "331:3780:32" - } - ], - "src": "37:4075:32" - }, - "id": 32 - }, - "@uniswap/v3-core/contracts/libraries/TickMath.sol": { - "ast": { - "absolutePath": "@uniswap/v3-core/contracts/libraries/TickMath.sol", - "exportedSymbols": { - "TickMath": [ - 7867 - ] - }, - "id": 7868, - "license": "GPL-2.0-or-later", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 7334, - "literals": [ - "solidity", - ">=", - "0.5", - ".0" - ], - "nodeType": "PragmaDirective", - "src": "45:24:33" - }, - { - "abstract": false, - "baseContracts": [], - "contractDependencies": [], - "contractKind": "library", - "documentation": { - "id": 7335, - "nodeType": "StructuredDocumentation", - "src": "71:235:33", - "text": "@title Math library for computing sqrt prices from ticks and vice versa\n @notice Computes sqrt price for ticks of size 1.0001, i.e. sqrt(1.0001^tick) as fixed point Q64.96 numbers. Supports\n prices between 2**-128 and 2**128" - }, - "fullyImplemented": true, - "id": 7867, - "linearizedBaseContracts": [ - 7867 - ], - "name": "TickMath", - "nodeType": "ContractDefinition", - "nodes": [ - { - "constant": true, - "documentation": { - "id": 7336, - "nodeType": "StructuredDocumentation", - "src": "329:108:33", - "text": "@dev The minimum tick that may be passed to #getSqrtRatioAtTick computed from log base 1.0001 of 2**-128" - }, - "id": 7340, - "mutability": "constant", - "name": "MIN_TICK", - "nodeType": "VariableDeclaration", - "scope": 7867, - "src": "442:42:33", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 7337, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "442:5:33", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "value": { - "id": 7339, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "-", - "prefix": true, - "src": "477:7:33", - "subExpression": { - "hexValue": "383837323732", - "id": 7338, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "478:6:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_887272_by_1", - "typeString": "int_const 887272" - }, - "value": "887272" - }, - "typeDescriptions": { - "typeIdentifier": "t_rational_minus_887272_by_1", - "typeString": "int_const -887272" - } - }, - "visibility": "internal" - }, - { - "constant": true, - "documentation": { - "id": 7341, - "nodeType": "StructuredDocumentation", - "src": "490:107:33", - "text": "@dev The maximum tick that may be passed to #getSqrtRatioAtTick computed from log base 1.0001 of 2**128" - }, - "id": 7345, - "mutability": "constant", - "name": "MAX_TICK", - "nodeType": "VariableDeclaration", - "scope": 7867, - "src": "602:44:33", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 7342, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "602:5:33", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "value": { - "id": 7344, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "-", - "prefix": true, - "src": "637:9:33", - "subExpression": { - "id": 7343, - "name": "MIN_TICK", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7340, - "src": "638:8:33", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - }, - { - "constant": true, - "documentation": { - "id": 7346, - "nodeType": "StructuredDocumentation", - "src": "653:116:33", - "text": "@dev The minimum value that can be returned from #getSqrtRatioAtTick. Equivalent to getSqrtRatioAtTick(MIN_TICK)" - }, - "id": 7349, - "mutability": "constant", - "name": "MIN_SQRT_RATIO", - "nodeType": "VariableDeclaration", - "scope": 7867, - "src": "774:53:33", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "typeName": { - "id": 7347, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "774:7:33", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "value": { - "hexValue": "34323935313238373339", - "id": 7348, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "817:10:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_4295128739_by_1", - "typeString": "int_const 4295128739" - }, - "value": "4295128739" - }, - "visibility": "internal" - }, - { - "constant": true, - "documentation": { - "id": 7350, - "nodeType": "StructuredDocumentation", - "src": "833:116:33", - "text": "@dev The maximum value that can be returned from #getSqrtRatioAtTick. Equivalent to getSqrtRatioAtTick(MAX_TICK)" - }, - "id": 7353, - "mutability": "constant", - "name": "MAX_SQRT_RATIO", - "nodeType": "VariableDeclaration", - "scope": 7867, - "src": "954:92:33", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "typeName": { - "id": 7351, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "954:7:33", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "value": { - "hexValue": "31343631343436373033343835323130313033323837323733303532323033393838383232333738373233393730333432", - "id": 7352, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "997:49:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_1461446703485210103287273052203988822378723970342_by_1", - "typeString": "int_const 1461...(41 digits omitted)...0342" - }, - "value": "1461446703485210103287273052203988822378723970342" - }, - "visibility": "internal" - }, - { - "body": { - "id": 7726, - "nodeType": "Block", - "src": "1440:2495:33", - "statements": [ - { - "assignments": [ - 7362 - ], - "declarations": [ - { - "constant": false, - "id": 7362, - "mutability": "mutable", - "name": "absTick", - "nodeType": "VariableDeclaration", - "scope": 7726, - "src": "1450:15:33", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 7361, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1450:7:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 7382, - "initialValue": { - "condition": { - "commonType": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "id": 7365, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7363, - "name": "tick", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7356, - "src": "1468:4:33", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "hexValue": "30", - "id": 7364, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1475:1:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1468:8:33", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseExpression": { - "arguments": [ - { - "arguments": [ - { - "id": 7378, - "name": "tick", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7356, - "src": "1519:4:33", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - ], - "id": 7377, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1512:6:33", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_int256_$", - "typeString": "type(int256)" - }, - "typeName": { - "id": 7376, - "name": "int256", - "nodeType": "ElementaryTypeName", - "src": "1512:6:33", - "typeDescriptions": {} - } - }, - "id": 7379, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1512:12:33", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - ], - "id": 7375, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1504:7:33", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 7374, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1504:7:33", - "typeDescriptions": {} - } - }, - "id": 7380, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1504:21:33", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 7381, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "Conditional", - "src": "1468:57:33", - "trueExpression": { - "arguments": [ - { - "id": 7372, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "-", - "prefix": true, - "src": "1487:13:33", - "subExpression": { - "arguments": [ - { - "id": 7370, - "name": "tick", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7356, - "src": "1495:4:33", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - ], - "id": 7369, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1488:6:33", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_int256_$", - "typeString": "type(int256)" - }, - "typeName": { - "id": 7368, - "name": "int256", - "nodeType": "ElementaryTypeName", - "src": "1488:6:33", - "typeDescriptions": {} - } - }, - "id": 7371, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1488:12:33", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - ], - "id": 7367, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1479:7:33", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 7366, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1479:7:33", - "typeDescriptions": {} - } - }, - "id": 7373, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1479:22:33", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1450:75:33" - }, - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7389, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7384, - "name": "absTick", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7362, - "src": "1543:7:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "arguments": [ - { - "id": 7387, - "name": "MAX_TICK", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7345, - "src": "1562:8:33", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - ], - "id": 7386, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1554:7:33", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 7385, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1554:7:33", - "typeDescriptions": {} - } - }, - "id": 7388, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1554:17:33", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1543:28:33", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "54", - "id": 7390, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1573:3:33", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_846b7b6deb1cfa110d0ea7ec6162a7123b761785528db70cceed5143183b11fc", - "typeString": "literal_string \"T\"" - }, - "value": "T" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_846b7b6deb1cfa110d0ea7ec6162a7123b761785528db70cceed5143183b11fc", - "typeString": "literal_string \"T\"" - } - ], - "id": 7383, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "1535:7:33", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 7391, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1535:42:33", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 7392, - "nodeType": "ExpressionStatement", - "src": "1535:42:33" - }, - { - "assignments": [ - 7394 - ], - "declarations": [ - { - "constant": false, - "id": 7394, - "mutability": "mutable", - "name": "ratio", - "nodeType": "VariableDeclaration", - "scope": 7726, - "src": "1588:13:33", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 7393, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1588:7:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 7403, - "initialValue": { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7399, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7397, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7395, - "name": "absTick", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7362, - "src": "1604:7:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "&", - "rightExpression": { - "hexValue": "307831", - "id": 7396, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1614:3:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "0x1" - }, - "src": "1604:13:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "hexValue": "30", - "id": 7398, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1621:1:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1604:18:33", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseExpression": { - "hexValue": "3078313030303030303030303030303030303030303030303030303030303030303030", - "id": 7401, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1662:35:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_340282366920938463463374607431768211456_by_1", - "typeString": "int_const 3402...(31 digits omitted)...1456" - }, - "value": "0x100000000000000000000000000000000" - }, - "id": 7402, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "Conditional", - "src": "1604:93:33", - "trueExpression": { - "hexValue": "30786666666362393333626436666164333761613264313632643161353934303031", - "id": 7400, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1625:34:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_340265354078544963557816517032075149313_by_1", - "typeString": "int_const 3402...(31 digits omitted)...9313" - }, - "value": "0xfffcb933bd6fad37aa2d162d1a594001" - }, - "typeDescriptions": { - "typeIdentifier": "t_uint136", - "typeString": "uint136" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1588:109:33" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7408, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7406, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7404, - "name": "absTick", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7362, - "src": "1711:7:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "&", - "rightExpression": { - "hexValue": "307832", - "id": 7405, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1721:3:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "0x2" - }, - "src": "1711:13:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "hexValue": "30", - "id": 7407, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1728:1:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1711:18:33", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 7418, - "nodeType": "IfStatement", - "src": "1707:83:33", - "trueBody": { - "expression": { - "id": 7416, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 7409, - "name": "ratio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7394, - "src": "1731:5:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7415, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7412, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7410, - "name": "ratio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7394, - "src": "1740:5:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "hexValue": "30786666663937323732333733643431333235396134363939303538306532313361", - "id": 7411, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1748:34:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_340248342086729790484326174814286782778_by_1", - "typeString": "int_const 3402...(31 digits omitted)...2778" - }, - "value": "0xfff97272373d413259a46990580e213a" - }, - "src": "1740:42:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 7413, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "1739:44:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">>", - "rightExpression": { - "hexValue": "313238", - "id": 7414, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1787:3:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_128_by_1", - "typeString": "int_const 128" - }, - "value": "128" - }, - "src": "1739:51:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1731:59:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 7417, - "nodeType": "ExpressionStatement", - "src": "1731:59:33" - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7423, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7421, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7419, - "name": "absTick", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7362, - "src": "1804:7:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "&", - "rightExpression": { - "hexValue": "307834", - "id": 7420, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1814:3:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_4_by_1", - "typeString": "int_const 4" - }, - "value": "0x4" - }, - "src": "1804:13:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "hexValue": "30", - "id": 7422, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1821:1:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1804:18:33", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 7433, - "nodeType": "IfStatement", - "src": "1800:83:33", - "trueBody": { - "expression": { - "id": 7431, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 7424, - "name": "ratio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7394, - "src": "1824:5:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7430, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7427, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7425, - "name": "ratio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7394, - "src": "1833:5:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "hexValue": "30786666663265353066356636353639333265663132333537636633633766646363", - "id": 7426, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1841:34:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_340214320654664324051920982716015181260_by_1", - "typeString": "int_const 3402...(31 digits omitted)...1260" - }, - "value": "0xfff2e50f5f656932ef12357cf3c7fdcc" - }, - "src": "1833:42:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 7428, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "1832:44:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">>", - "rightExpression": { - "hexValue": "313238", - "id": 7429, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1880:3:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_128_by_1", - "typeString": "int_const 128" - }, - "value": "128" - }, - "src": "1832:51:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1824:59:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 7432, - "nodeType": "ExpressionStatement", - "src": "1824:59:33" - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7438, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7436, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7434, - "name": "absTick", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7362, - "src": "1897:7:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "&", - "rightExpression": { - "hexValue": "307838", - "id": 7435, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1907:3:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_8_by_1", - "typeString": "int_const 8" - }, - "value": "0x8" - }, - "src": "1897:13:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "hexValue": "30", - "id": 7437, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1914:1:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1897:18:33", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 7448, - "nodeType": "IfStatement", - "src": "1893:83:33", - "trueBody": { - "expression": { - "id": 7446, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 7439, - "name": "ratio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7394, - "src": "1917:5:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7445, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7442, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7440, - "name": "ratio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7394, - "src": "1926:5:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "hexValue": "30786666653563616361376531306534653631633336323465616130393431636430", - "id": 7441, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1934:34:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_340146287995602323631171512101879684304_by_1", - "typeString": "int_const 3401...(31 digits omitted)...4304" - }, - "value": "0xffe5caca7e10e4e61c3624eaa0941cd0" - }, - "src": "1926:42:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 7443, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "1925:44:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">>", - "rightExpression": { - "hexValue": "313238", - "id": 7444, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1973:3:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_128_by_1", - "typeString": "int_const 128" - }, - "value": "128" - }, - "src": "1925:51:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1917:59:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 7447, - "nodeType": "ExpressionStatement", - "src": "1917:59:33" - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7453, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7451, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7449, - "name": "absTick", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7362, - "src": "1990:7:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "&", - "rightExpression": { - "hexValue": "30783130", - "id": 7450, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2000:4:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_16_by_1", - "typeString": "int_const 16" - }, - "value": "0x10" - }, - "src": "1990:14:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "hexValue": "30", - "id": 7452, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2008:1:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1990:19:33", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 7463, - "nodeType": "IfStatement", - "src": "1986:84:33", - "trueBody": { - "expression": { - "id": 7461, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 7454, - "name": "ratio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7394, - "src": "2011:5:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7460, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7457, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7455, - "name": "ratio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7394, - "src": "2020:5:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "hexValue": "30786666636239383433643630663631353963396462353838333563393236363434", - "id": 7456, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2028:34:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_340010263488231146823593991679159461444_by_1", - "typeString": "int_const 3400...(31 digits omitted)...1444" - }, - "value": "0xffcb9843d60f6159c9db58835c926644" - }, - "src": "2020:42:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 7458, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "2019:44:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">>", - "rightExpression": { - "hexValue": "313238", - "id": 7459, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2067:3:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_128_by_1", - "typeString": "int_const 128" - }, - "value": "128" - }, - "src": "2019:51:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2011:59:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 7462, - "nodeType": "ExpressionStatement", - "src": "2011:59:33" - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7468, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7466, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7464, - "name": "absTick", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7362, - "src": "2084:7:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "&", - "rightExpression": { - "hexValue": "30783230", - "id": 7465, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2094:4:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_32_by_1", - "typeString": "int_const 32" - }, - "value": "0x20" - }, - "src": "2084:14:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "hexValue": "30", - "id": 7467, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2102:1:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2084:19:33", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 7478, - "nodeType": "IfStatement", - "src": "2080:84:33", - "trueBody": { - "expression": { - "id": 7476, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 7469, - "name": "ratio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7394, - "src": "2105:5:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7475, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7472, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7470, - "name": "ratio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7394, - "src": "2114:5:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "hexValue": "30786666393733623431666139386330383134373265363839366466623235346330", - "id": 7471, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2122:34:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_339738377640345403697157401104375502016_by_1", - "typeString": "int_const 3397...(31 digits omitted)...2016" - }, - "value": "0xff973b41fa98c081472e6896dfb254c0" - }, - "src": "2114:42:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 7473, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "2113:44:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">>", - "rightExpression": { - "hexValue": "313238", - "id": 7474, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2161:3:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_128_by_1", - "typeString": "int_const 128" - }, - "value": "128" - }, - "src": "2113:51:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2105:59:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 7477, - "nodeType": "ExpressionStatement", - "src": "2105:59:33" - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7483, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7481, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7479, - "name": "absTick", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7362, - "src": "2178:7:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "&", - "rightExpression": { - "hexValue": "30783430", - "id": 7480, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2188:4:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_64_by_1", - "typeString": "int_const 64" - }, - "value": "0x40" - }, - "src": "2178:14:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "hexValue": "30", - "id": 7482, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2196:1:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2178:19:33", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 7493, - "nodeType": "IfStatement", - "src": "2174:84:33", - "trueBody": { - "expression": { - "id": 7491, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 7484, - "name": "ratio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7394, - "src": "2199:5:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7490, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7487, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7485, - "name": "ratio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7394, - "src": "2208:5:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "hexValue": "30786666326561313634363663393661333834336563373862333236623532383631", - "id": 7486, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2216:34:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_339195258003219555707034227454543997025_by_1", - "typeString": "int_const 3391...(31 digits omitted)...7025" - }, - "value": "0xff2ea16466c96a3843ec78b326b52861" - }, - "src": "2208:42:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 7488, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "2207:44:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">>", - "rightExpression": { - "hexValue": "313238", - "id": 7489, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2255:3:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_128_by_1", - "typeString": "int_const 128" - }, - "value": "128" - }, - "src": "2207:51:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2199:59:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 7492, - "nodeType": "ExpressionStatement", - "src": "2199:59:33" - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7498, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7496, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7494, - "name": "absTick", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7362, - "src": "2272:7:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "&", - "rightExpression": { - "hexValue": "30783830", - "id": 7495, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2282:4:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_128_by_1", - "typeString": "int_const 128" - }, - "value": "0x80" - }, - "src": "2272:14:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "hexValue": "30", - "id": 7497, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2290:1:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2272:19:33", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 7508, - "nodeType": "IfStatement", - "src": "2268:84:33", - "trueBody": { - "expression": { - "id": 7506, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 7499, - "name": "ratio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7394, - "src": "2293:5:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7505, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7502, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7500, - "name": "ratio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7394, - "src": "2302:5:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "hexValue": "30786665356465653034366139396132613831316334363166313936396333303533", - "id": 7501, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2310:34:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_338111622100601834656805679988414885971_by_1", - "typeString": "int_const 3381...(31 digits omitted)...5971" - }, - "value": "0xfe5dee046a99a2a811c461f1969c3053" - }, - "src": "2302:42:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 7503, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "2301:44:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">>", - "rightExpression": { - "hexValue": "313238", - "id": 7504, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2349:3:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_128_by_1", - "typeString": "int_const 128" - }, - "value": "128" - }, - "src": "2301:51:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2293:59:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 7507, - "nodeType": "ExpressionStatement", - "src": "2293:59:33" - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7513, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7511, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7509, - "name": "absTick", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7362, - "src": "2366:7:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "&", - "rightExpression": { - "hexValue": "3078313030", - "id": 7510, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2376:5:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_256_by_1", - "typeString": "int_const 256" - }, - "value": "0x100" - }, - "src": "2366:15:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "hexValue": "30", - "id": 7512, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2385:1:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2366:20:33", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 7523, - "nodeType": "IfStatement", - "src": "2362:85:33", - "trueBody": { - "expression": { - "id": 7521, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 7514, - "name": "ratio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7394, - "src": "2388:5:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7520, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7517, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7515, - "name": "ratio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7394, - "src": "2397:5:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "hexValue": "30786663626538366337393030613838616564636666633833623437396161336134", - "id": 7516, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2405:34:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_335954724994790223023589805789778977700_by_1", - "typeString": "int_const 3359...(31 digits omitted)...7700" - }, - "value": "0xfcbe86c7900a88aedcffc83b479aa3a4" - }, - "src": "2397:42:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 7518, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "2396:44:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">>", - "rightExpression": { - "hexValue": "313238", - "id": 7519, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2444:3:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_128_by_1", - "typeString": "int_const 128" - }, - "value": "128" - }, - "src": "2396:51:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2388:59:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 7522, - "nodeType": "ExpressionStatement", - "src": "2388:59:33" - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7528, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7526, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7524, - "name": "absTick", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7362, - "src": "2461:7:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "&", - "rightExpression": { - "hexValue": "3078323030", - "id": 7525, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2471:5:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_512_by_1", - "typeString": "int_const 512" - }, - "value": "0x200" - }, - "src": "2461:15:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "hexValue": "30", - "id": 7527, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2480:1:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2461:20:33", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 7538, - "nodeType": "IfStatement", - "src": "2457:85:33", - "trueBody": { - "expression": { - "id": 7536, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 7529, - "name": "ratio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7394, - "src": "2483:5:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7535, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7532, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7530, - "name": "ratio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7394, - "src": "2492:5:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "hexValue": "30786639383761373235336163343133313736663262303734636637383135653534", - "id": 7531, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2500:34:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_331682121138379247127172139078559817300_by_1", - "typeString": "int_const 3316...(31 digits omitted)...7300" - }, - "value": "0xf987a7253ac413176f2b074cf7815e54" - }, - "src": "2492:42:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 7533, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "2491:44:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">>", - "rightExpression": { - "hexValue": "313238", - "id": 7534, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2539:3:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_128_by_1", - "typeString": "int_const 128" - }, - "value": "128" - }, - "src": "2491:51:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2483:59:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 7537, - "nodeType": "ExpressionStatement", - "src": "2483:59:33" - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7543, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7541, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7539, - "name": "absTick", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7362, - "src": "2556:7:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "&", - "rightExpression": { - "hexValue": "3078343030", - "id": 7540, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2566:5:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_1024_by_1", - "typeString": "int_const 1024" - }, - "value": "0x400" - }, - "src": "2556:15:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "hexValue": "30", - "id": 7542, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2575:1:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2556:20:33", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 7553, - "nodeType": "IfStatement", - "src": "2552:85:33", - "trueBody": { - "expression": { - "id": 7551, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 7544, - "name": "ratio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7394, - "src": "2578:5:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7550, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7547, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7545, - "name": "ratio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7394, - "src": "2587:5:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "hexValue": "30786633333932623038323262373030303539343063376133393865346237306633", - "id": 7546, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2595:34:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_323299236684853023288211250268160618739_by_1", - "typeString": "int_const 3232...(31 digits omitted)...8739" - }, - "value": "0xf3392b0822b70005940c7a398e4b70f3" - }, - "src": "2587:42:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 7548, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "2586:44:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">>", - "rightExpression": { - "hexValue": "313238", - "id": 7549, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2634:3:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_128_by_1", - "typeString": "int_const 128" - }, - "value": "128" - }, - "src": "2586:51:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2578:59:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 7552, - "nodeType": "ExpressionStatement", - "src": "2578:59:33" - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7558, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7556, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7554, - "name": "absTick", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7362, - "src": "2651:7:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "&", - "rightExpression": { - "hexValue": "3078383030", - "id": 7555, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2661:5:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_2048_by_1", - "typeString": "int_const 2048" - }, - "value": "0x800" - }, - "src": "2651:15:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "hexValue": "30", - "id": 7557, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2670:1:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2651:20:33", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 7568, - "nodeType": "IfStatement", - "src": "2647:85:33", - "trueBody": { - "expression": { - "id": 7566, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 7559, - "name": "ratio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7394, - "src": "2673:5:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7565, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7562, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7560, - "name": "ratio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7394, - "src": "2682:5:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "hexValue": "30786537313539343735613263323962373434336232396337666136653838396439", - "id": 7561, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2690:34:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_307163716377032989948697243942600083929_by_1", - "typeString": "int_const 3071...(31 digits omitted)...3929" - }, - "value": "0xe7159475a2c29b7443b29c7fa6e889d9" - }, - "src": "2682:42:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 7563, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "2681:44:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">>", - "rightExpression": { - "hexValue": "313238", - "id": 7564, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2729:3:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_128_by_1", - "typeString": "int_const 128" - }, - "value": "128" - }, - "src": "2681:51:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2673:59:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 7567, - "nodeType": "ExpressionStatement", - "src": "2673:59:33" - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7573, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7571, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7569, - "name": "absTick", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7362, - "src": "2746:7:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "&", - "rightExpression": { - "hexValue": "307831303030", - "id": 7570, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2756:6:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_4096_by_1", - "typeString": "int_const 4096" - }, - "value": "0x1000" - }, - "src": "2746:16:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "hexValue": "30", - "id": 7572, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2766:1:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2746:21:33", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 7583, - "nodeType": "IfStatement", - "src": "2742:86:33", - "trueBody": { - "expression": { - "id": 7581, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 7574, - "name": "ratio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7394, - "src": "2769:5:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7580, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7577, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7575, - "name": "ratio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7394, - "src": "2778:5:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "hexValue": "30786430393766336264666432303232623838343561643866373932616135383235", - "id": 7576, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2786:34:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_277268403626896220162999269216087595045_by_1", - "typeString": "int_const 2772...(31 digits omitted)...5045" - }, - "value": "0xd097f3bdfd2022b8845ad8f792aa5825" - }, - "src": "2778:42:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 7578, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "2777:44:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">>", - "rightExpression": { - "hexValue": "313238", - "id": 7579, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2825:3:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_128_by_1", - "typeString": "int_const 128" - }, - "value": "128" - }, - "src": "2777:51:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2769:59:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 7582, - "nodeType": "ExpressionStatement", - "src": "2769:59:33" - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7588, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7586, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7584, - "name": "absTick", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7362, - "src": "2842:7:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "&", - "rightExpression": { - "hexValue": "307832303030", - "id": 7585, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2852:6:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_8192_by_1", - "typeString": "int_const 8192" - }, - "value": "0x2000" - }, - "src": "2842:16:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "hexValue": "30", - "id": 7587, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2862:1:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2842:21:33", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 7598, - "nodeType": "IfStatement", - "src": "2838:86:33", - "trueBody": { - "expression": { - "id": 7596, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 7589, - "name": "ratio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7394, - "src": "2865:5:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7595, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7592, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7590, - "name": "ratio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7394, - "src": "2874:5:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "hexValue": "30786139663734363436326438373066646638613635646331663930653036316535", - "id": 7591, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2882:34:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_225923453940442621947126027127485391333_by_1", - "typeString": "int_const 2259...(31 digits omitted)...1333" - }, - "value": "0xa9f746462d870fdf8a65dc1f90e061e5" - }, - "src": "2874:42:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 7593, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "2873:44:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">>", - "rightExpression": { - "hexValue": "313238", - "id": 7594, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2921:3:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_128_by_1", - "typeString": "int_const 128" - }, - "value": "128" - }, - "src": "2873:51:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2865:59:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 7597, - "nodeType": "ExpressionStatement", - "src": "2865:59:33" - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7603, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7601, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7599, - "name": "absTick", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7362, - "src": "2938:7:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "&", - "rightExpression": { - "hexValue": "307834303030", - "id": 7600, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2948:6:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_16384_by_1", - "typeString": "int_const 16384" - }, - "value": "0x4000" - }, - "src": "2938:16:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "hexValue": "30", - "id": 7602, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2958:1:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2938:21:33", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 7613, - "nodeType": "IfStatement", - "src": "2934:86:33", - "trueBody": { - "expression": { - "id": 7611, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 7604, - "name": "ratio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7394, - "src": "2961:5:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7610, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7607, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7605, - "name": "ratio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7394, - "src": "2970:5:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "hexValue": "30783730643836396131353664326131623839306262336466363262616633326637", - "id": 7606, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2978:34:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_149997214084966997727330242082538205943_by_1", - "typeString": "int_const 1499...(31 digits omitted)...5943" - }, - "value": "0x70d869a156d2a1b890bb3df62baf32f7" - }, - "src": "2970:42:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 7608, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "2969:44:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">>", - "rightExpression": { - "hexValue": "313238", - "id": 7609, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3017:3:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_128_by_1", - "typeString": "int_const 128" - }, - "value": "128" - }, - "src": "2969:51:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2961:59:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 7612, - "nodeType": "ExpressionStatement", - "src": "2961:59:33" - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7618, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7616, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7614, - "name": "absTick", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7362, - "src": "3034:7:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "&", - "rightExpression": { - "hexValue": "307838303030", - "id": 7615, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3044:6:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_32768_by_1", - "typeString": "int_const 32768" - }, - "value": "0x8000" - }, - "src": "3034:16:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "hexValue": "30", - "id": 7617, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3054:1:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3034:21:33", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 7628, - "nodeType": "IfStatement", - "src": "3030:86:33", - "trueBody": { - "expression": { - "id": 7626, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 7619, - "name": "ratio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7394, - "src": "3057:5:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7625, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7622, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7620, - "name": "ratio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7394, - "src": "3066:5:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "hexValue": "30783331626531333566393764303866643938313233313530353534326663666136", - "id": 7621, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3074:34:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_66119101136024775622716233608466517926_by_1", - "typeString": "int_const 6611...(30 digits omitted)...7926" - }, - "value": "0x31be135f97d08fd981231505542fcfa6" - }, - "src": "3066:42:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 7623, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "3065:44:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">>", - "rightExpression": { - "hexValue": "313238", - "id": 7624, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3113:3:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_128_by_1", - "typeString": "int_const 128" - }, - "value": "128" - }, - "src": "3065:51:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3057:59:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 7627, - "nodeType": "ExpressionStatement", - "src": "3057:59:33" - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7633, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7631, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7629, - "name": "absTick", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7362, - "src": "3130:7:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "&", - "rightExpression": { - "hexValue": "30783130303030", - "id": 7630, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3140:7:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_65536_by_1", - "typeString": "int_const 65536" - }, - "value": "0x10000" - }, - "src": "3130:17:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "hexValue": "30", - "id": 7632, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3151:1:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3130:22:33", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 7643, - "nodeType": "IfStatement", - "src": "3126:86:33", - "trueBody": { - "expression": { - "id": 7641, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 7634, - "name": "ratio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7394, - "src": "3154:5:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7640, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7637, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7635, - "name": "ratio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7394, - "src": "3163:5:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "hexValue": "307839616135303862356237613834653163363737646535346633653939626339", - "id": 7636, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3171:33:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_12847376061809297530290974190478138313_by_1", - "typeString": "int_const 1284...(30 digits omitted)...8313" - }, - "value": "0x9aa508b5b7a84e1c677de54f3e99bc9" - }, - "src": "3163:41:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 7638, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "3162:43:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">>", - "rightExpression": { - "hexValue": "313238", - "id": 7639, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3209:3:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_128_by_1", - "typeString": "int_const 128" - }, - "value": "128" - }, - "src": "3162:50:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3154:58:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 7642, - "nodeType": "ExpressionStatement", - "src": "3154:58:33" - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7648, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7646, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7644, - "name": "absTick", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7362, - "src": "3226:7:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "&", - "rightExpression": { - "hexValue": "30783230303030", - "id": 7645, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3236:7:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_131072_by_1", - "typeString": "int_const 131072" - }, - "value": "0x20000" - }, - "src": "3226:17:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "hexValue": "30", - "id": 7647, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3247:1:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3226:22:33", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 7658, - "nodeType": "IfStatement", - "src": "3222:85:33", - "trueBody": { - "expression": { - "id": 7656, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 7649, - "name": "ratio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7394, - "src": "3250:5:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7655, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7652, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7650, - "name": "ratio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7394, - "src": "3259:5:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "hexValue": "3078356436616638646564623831313936363939633332393232356565363034", - "id": 7651, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3267:32:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_485053260817066172746253684029974020_by_1", - "typeString": "int_const 4850...(28 digits omitted)...4020" - }, - "value": "0x5d6af8dedb81196699c329225ee604" - }, - "src": "3259:40:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 7653, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "3258:42:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">>", - "rightExpression": { - "hexValue": "313238", - "id": 7654, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3304:3:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_128_by_1", - "typeString": "int_const 128" - }, - "value": "128" - }, - "src": "3258:49:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3250:57:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 7657, - "nodeType": "ExpressionStatement", - "src": "3250:57:33" - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7663, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7661, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7659, - "name": "absTick", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7362, - "src": "3321:7:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "&", - "rightExpression": { - "hexValue": "30783430303030", - "id": 7660, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3331:7:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_262144_by_1", - "typeString": "int_const 262144" - }, - "value": "0x40000" - }, - "src": "3321:17:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "hexValue": "30", - "id": 7662, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3342:1:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3321:22:33", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 7673, - "nodeType": "IfStatement", - "src": "3317:83:33", - "trueBody": { - "expression": { - "id": 7671, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 7664, - "name": "ratio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7394, - "src": "3345:5:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7670, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7667, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7665, - "name": "ratio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7394, - "src": "3354:5:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "hexValue": "307832323136653538346635666131656139323630343162656466653938", - "id": 7666, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3362:30:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_691415978906521570653435304214168_by_1", - "typeString": "int_const 6914...(25 digits omitted)...4168" - }, - "value": "0x2216e584f5fa1ea926041bedfe98" - }, - "src": "3354:38:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 7668, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "3353:40:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">>", - "rightExpression": { - "hexValue": "313238", - "id": 7669, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3397:3:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_128_by_1", - "typeString": "int_const 128" - }, - "value": "128" - }, - "src": "3353:47:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3345:55:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 7672, - "nodeType": "ExpressionStatement", - "src": "3345:55:33" - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7678, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7676, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7674, - "name": "absTick", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7362, - "src": "3414:7:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "&", - "rightExpression": { - "hexValue": "30783830303030", - "id": 7675, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3424:7:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_524288_by_1", - "typeString": "int_const 524288" - }, - "value": "0x80000" - }, - "src": "3414:17:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "hexValue": "30", - "id": 7677, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3435:1:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3414:22:33", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 7688, - "nodeType": "IfStatement", - "src": "3410:78:33", - "trueBody": { - "expression": { - "id": 7686, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 7679, - "name": "ratio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7394, - "src": "3438:5:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7685, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7682, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7680, - "name": "ratio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7394, - "src": "3447:5:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "hexValue": "30783438613137303339316637646334323434346538666132", - "id": 7681, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3455:25:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_1404880482679654955896180642_by_1", - "typeString": "int_const 1404880482679654955896180642" - }, - "value": "0x48a170391f7dc42444e8fa2" - }, - "src": "3447:33:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 7683, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "3446:35:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">>", - "rightExpression": { - "hexValue": "313238", - "id": 7684, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3485:3:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_128_by_1", - "typeString": "int_const 128" - }, - "value": "128" - }, - "src": "3446:42:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3438:50:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 7687, - "nodeType": "ExpressionStatement", - "src": "3438:50:33" - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "id": 7691, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7689, - "name": "tick", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7356, - "src": "3503:4:33", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 7690, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3510:1:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3503:8:33", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 7702, - "nodeType": "IfStatement", - "src": "3499:47:33", - "trueBody": { - "expression": { - "id": 7700, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 7692, - "name": "ratio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7394, - "src": "3513:5:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7699, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "arguments": [ - { - "id": 7695, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "3526:7:33", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 7694, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3526:7:33", - "typeDescriptions": {} - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - } - ], - "id": 7693, - "name": "type", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -27, - "src": "3521:4:33", - "typeDescriptions": { - "typeIdentifier": "t_function_metatype_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 7696, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3521:13:33", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_magic_meta_type_t_uint256", - "typeString": "type(uint256)" - } - }, - "id": 7697, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "max", - "nodeType": "MemberAccess", - "src": "3521:17:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "id": 7698, - "name": "ratio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7394, - "src": "3541:5:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3521:25:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3513:33:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 7701, - "nodeType": "ExpressionStatement", - "src": "3513:33:33" - } - }, - { - "expression": { - "id": 7724, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 7703, - "name": "sqrtPriceX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7359, - "src": "3856:12:33", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7722, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7708, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7706, - "name": "ratio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7394, - "src": "3880:5:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">>", - "rightExpression": { - "hexValue": "3332", - "id": 7707, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3889:2:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_32_by_1", - "typeString": "int_const 32" - }, - "value": "32" - }, - "src": "3880:11:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 7709, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "3879:13:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "components": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7717, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7715, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7710, - "name": "ratio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7394, - "src": "3896:5:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "%", - "rightExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_rational_4294967296_by_1", - "typeString": "int_const 4294967296" - }, - "id": 7713, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "leftExpression": { - "hexValue": "31", - "id": 7711, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3905:1:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "nodeType": "BinaryOperation", - "operator": "<<", - "rightExpression": { - "hexValue": "3332", - "id": 7712, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3910:2:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_32_by_1", - "typeString": "int_const 32" - }, - "value": "32" - }, - "src": "3905:7:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_4294967296_by_1", - "typeString": "int_const 4294967296" - } - } - ], - "id": 7714, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "3904:9:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_4294967296_by_1", - "typeString": "int_const 4294967296" - } - }, - "src": "3896:17:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 7716, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3917:1:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3896:22:33", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseExpression": { - "hexValue": "31", - "id": 7719, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3925:1:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "id": 7720, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "Conditional", - "src": "3896:30:33", - "trueExpression": { - "hexValue": "30", - "id": 7718, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3921:1:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - } - ], - "id": 7721, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "3895:32:33", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "3879:48:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 7705, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "3871:7:33", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint160_$", - "typeString": "type(uint160)" - }, - "typeName": { - "id": 7704, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "3871:7:33", - "typeDescriptions": {} - } - }, - "id": 7723, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3871:57:33", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "src": "3856:72:33", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "id": 7725, - "nodeType": "ExpressionStatement", - "src": "3856:72:33" - } - ] - }, - "documentation": { - "id": 7354, - "nodeType": "StructuredDocumentation", - "src": "1053:297:33", - "text": "@notice Calculates sqrt(1.0001^tick) * 2^96\n @dev Throws if |tick| > max tick\n @param tick The input tick for the above formula\n @return sqrtPriceX96 A Fixed point Q64.96 number representing the sqrt of the ratio of the two assets (token1/token0)\n at the given tick" - }, - "id": 7727, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getSqrtRatioAtTick", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 7357, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 7356, - "mutability": "mutable", - "name": "tick", - "nodeType": "VariableDeclaration", - "scope": 7727, - "src": "1383:10:33", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 7355, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "1383:5:33", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - } - ], - "src": "1382:12:33" - }, - "returnParameters": { - "id": 7360, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 7359, - "mutability": "mutable", - "name": "sqrtPriceX96", - "nodeType": "VariableDeclaration", - "scope": 7727, - "src": "1418:20:33", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "typeName": { - "id": 7358, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "1418:7:33", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "visibility": "internal" - } - ], - "src": "1417:22:33" - }, - "scope": 7867, - "src": "1355:2580:33", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 7865, - "nodeType": "Block", - "src": "4439:4196:33", - "statements": [ - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 7742, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "id": 7738, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7736, - "name": "sqrtPriceX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7730, - "src": "4556:12:33", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "id": 7737, - "name": "MIN_SQRT_RATIO", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7349, - "src": "4572:14:33", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "src": "4556:30:33", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "id": 7741, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7739, - "name": "sqrtPriceX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7730, - "src": "4590:12:33", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "id": 7740, - "name": "MAX_SQRT_RATIO", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7353, - "src": "4605:14:33", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "src": "4590:29:33", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "4556:63:33", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "52", - "id": 7743, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4621:3:33", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_ef22bddd350b943170a67d35191c27e310709a28c38b5762a152ff640108f5b2", - "typeString": "literal_string \"R\"" - }, - "value": "R" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_ef22bddd350b943170a67d35191c27e310709a28c38b5762a152ff640108f5b2", - "typeString": "literal_string \"R\"" - } - ], - "id": 7735, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "4548:7:33", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 7744, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4548:77:33", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 7745, - "nodeType": "ExpressionStatement", - "src": "4548:77:33" - }, - { - "assignments": [ - 7747 - ], - "declarations": [ - { - "constant": false, - "id": 7747, - "mutability": "mutable", - "name": "ratio", - "nodeType": "VariableDeclaration", - "scope": 7865, - "src": "4635:13:33", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 7746, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4635:7:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 7754, - "initialValue": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7753, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "arguments": [ - { - "id": 7750, - "name": "sqrtPriceX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7730, - "src": "4659:12:33", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - ], - "id": 7749, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "4651:7:33", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 7748, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4651:7:33", - "typeDescriptions": {} - } - }, - "id": 7751, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4651:21:33", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<<", - "rightExpression": { - "hexValue": "3332", - "id": 7752, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4676:2:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_32_by_1", - "typeString": "int_const 32" - }, - "value": "32" - }, - "src": "4651:27:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "4635:43:33" - }, - { - "assignments": [ - 7756 - ], - "declarations": [ - { - "constant": false, - "id": 7756, - "mutability": "mutable", - "name": "r", - "nodeType": "VariableDeclaration", - "scope": 7865, - "src": "4689:9:33", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 7755, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4689:7:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 7758, - "initialValue": { - "id": 7757, - "name": "ratio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7747, - "src": "4701:5:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "4689:17:33" - }, - { - "assignments": [ - 7760 - ], - "declarations": [ - { - "constant": false, - "id": 7760, - "mutability": "mutable", - "name": "msb", - "nodeType": "VariableDeclaration", - "scope": 7865, - "src": "4716:11:33", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 7759, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4716:7:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 7762, - "initialValue": { - "hexValue": "30", - "id": 7761, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4730:1:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "4716:15:33" - }, - { - "AST": { - "nodeType": "YulBlock", - "src": "4751:139:33", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "4765:58:33", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4778:1:33", - "type": "", - "value": "7" - }, - { - "arguments": [ - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "4784:1:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4787:34:33", - "type": "", - "value": "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "4781:2:33" - }, - "nodeType": "YulFunctionCall", - "src": "4781:41:33" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "4774:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "4774:49:33" - }, - "variables": [ - { - "name": "f", - "nodeType": "YulTypedName", - "src": "4769:1:33", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "4836:17:33", - "value": { - "arguments": [ - { - "name": "msb", - "nodeType": "YulIdentifier", - "src": "4846:3:33" - }, - { - "name": "f", - "nodeType": "YulIdentifier", - "src": "4851:1:33" - } - ], - "functionName": { - "name": "or", - "nodeType": "YulIdentifier", - "src": "4843:2:33" - }, - "nodeType": "YulFunctionCall", - "src": "4843:10:33" - }, - "variableNames": [ - { - "name": "msb", - "nodeType": "YulIdentifier", - "src": "4836:3:33" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "4866:14:33", - "value": { - "arguments": [ - { - "name": "f", - "nodeType": "YulIdentifier", - "src": "4875:1:33" - }, - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "4878:1:33" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "4871:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "4871:9:33" - }, - "variableNames": [ - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "4866:1:33" - } - ] - } - ] - }, - "evmVersion": "berlin", - "externalReferences": [ - { - "declaration": 7760, - "isOffset": false, - "isSlot": false, - "src": "4836:3:33", - "valueSize": 1 - }, - { - "declaration": 7760, - "isOffset": false, - "isSlot": false, - "src": "4846:3:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "4784:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "4866:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "4878:1:33", - "valueSize": 1 - } - ], - "id": 7763, - "nodeType": "InlineAssembly", - "src": "4742:148:33" - }, - { - "AST": { - "nodeType": "YulBlock", - "src": "4908:123:33", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "4922:42:33", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4935:1:33", - "type": "", - "value": "6" - }, - { - "arguments": [ - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "4941:1:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "4944:18:33", - "type": "", - "value": "0xFFFFFFFFFFFFFFFF" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "4938:2:33" - }, - "nodeType": "YulFunctionCall", - "src": "4938:25:33" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "4931:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "4931:33:33" - }, - "variables": [ - { - "name": "f", - "nodeType": "YulTypedName", - "src": "4926:1:33", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "4977:17:33", - "value": { - "arguments": [ - { - "name": "msb", - "nodeType": "YulIdentifier", - "src": "4987:3:33" - }, - { - "name": "f", - "nodeType": "YulIdentifier", - "src": "4992:1:33" - } - ], - "functionName": { - "name": "or", - "nodeType": "YulIdentifier", - "src": "4984:2:33" - }, - "nodeType": "YulFunctionCall", - "src": "4984:10:33" - }, - "variableNames": [ - { - "name": "msb", - "nodeType": "YulIdentifier", - "src": "4977:3:33" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "5007:14:33", - "value": { - "arguments": [ - { - "name": "f", - "nodeType": "YulIdentifier", - "src": "5016:1:33" - }, - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "5019:1:33" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "5012:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "5012:9:33" - }, - "variableNames": [ - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "5007:1:33" - } - ] - } - ] - }, - "evmVersion": "berlin", - "externalReferences": [ - { - "declaration": 7760, - "isOffset": false, - "isSlot": false, - "src": "4977:3:33", - "valueSize": 1 - }, - { - "declaration": 7760, - "isOffset": false, - "isSlot": false, - "src": "4987:3:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "4941:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "5007:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "5019:1:33", - "valueSize": 1 - } - ], - "id": 7764, - "nodeType": "InlineAssembly", - "src": "4899:132:33" - }, - { - "AST": { - "nodeType": "YulBlock", - "src": "5049:115:33", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "5063:34:33", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5076:1:33", - "type": "", - "value": "5" - }, - { - "arguments": [ - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "5082:1:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5085:10:33", - "type": "", - "value": "0xFFFFFFFF" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "5079:2:33" - }, - "nodeType": "YulFunctionCall", - "src": "5079:17:33" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "5072:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "5072:25:33" - }, - "variables": [ - { - "name": "f", - "nodeType": "YulTypedName", - "src": "5067:1:33", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "5110:17:33", - "value": { - "arguments": [ - { - "name": "msb", - "nodeType": "YulIdentifier", - "src": "5120:3:33" - }, - { - "name": "f", - "nodeType": "YulIdentifier", - "src": "5125:1:33" - } - ], - "functionName": { - "name": "or", - "nodeType": "YulIdentifier", - "src": "5117:2:33" - }, - "nodeType": "YulFunctionCall", - "src": "5117:10:33" - }, - "variableNames": [ - { - "name": "msb", - "nodeType": "YulIdentifier", - "src": "5110:3:33" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "5140:14:33", - "value": { - "arguments": [ - { - "name": "f", - "nodeType": "YulIdentifier", - "src": "5149:1:33" - }, - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "5152:1:33" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "5145:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "5145:9:33" - }, - "variableNames": [ - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "5140:1:33" - } - ] - } - ] - }, - "evmVersion": "berlin", - "externalReferences": [ - { - "declaration": 7760, - "isOffset": false, - "isSlot": false, - "src": "5110:3:33", - "valueSize": 1 - }, - { - "declaration": 7760, - "isOffset": false, - "isSlot": false, - "src": "5120:3:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "5082:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "5140:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "5152:1:33", - "valueSize": 1 - } - ], - "id": 7765, - "nodeType": "InlineAssembly", - "src": "5040:124:33" - }, - { - "AST": { - "nodeType": "YulBlock", - "src": "5182:111:33", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "5196:30:33", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5209:1:33", - "type": "", - "value": "4" - }, - { - "arguments": [ - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "5215:1:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5218:6:33", - "type": "", - "value": "0xFFFF" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "5212:2:33" - }, - "nodeType": "YulFunctionCall", - "src": "5212:13:33" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "5205:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "5205:21:33" - }, - "variables": [ - { - "name": "f", - "nodeType": "YulTypedName", - "src": "5200:1:33", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "5239:17:33", - "value": { - "arguments": [ - { - "name": "msb", - "nodeType": "YulIdentifier", - "src": "5249:3:33" - }, - { - "name": "f", - "nodeType": "YulIdentifier", - "src": "5254:1:33" - } - ], - "functionName": { - "name": "or", - "nodeType": "YulIdentifier", - "src": "5246:2:33" - }, - "nodeType": "YulFunctionCall", - "src": "5246:10:33" - }, - "variableNames": [ - { - "name": "msb", - "nodeType": "YulIdentifier", - "src": "5239:3:33" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "5269:14:33", - "value": { - "arguments": [ - { - "name": "f", - "nodeType": "YulIdentifier", - "src": "5278:1:33" - }, - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "5281:1:33" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "5274:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "5274:9:33" - }, - "variableNames": [ - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "5269:1:33" - } - ] - } - ] - }, - "evmVersion": "berlin", - "externalReferences": [ - { - "declaration": 7760, - "isOffset": false, - "isSlot": false, - "src": "5239:3:33", - "valueSize": 1 - }, - { - "declaration": 7760, - "isOffset": false, - "isSlot": false, - "src": "5249:3:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "5215:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "5269:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "5281:1:33", - "valueSize": 1 - } - ], - "id": 7766, - "nodeType": "InlineAssembly", - "src": "5173:120:33" - }, - { - "AST": { - "nodeType": "YulBlock", - "src": "5311:109:33", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "5325:28:33", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5338:1:33", - "type": "", - "value": "3" - }, - { - "arguments": [ - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "5344:1:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5347:4:33", - "type": "", - "value": "0xFF" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "5341:2:33" - }, - "nodeType": "YulFunctionCall", - "src": "5341:11:33" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "5334:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "5334:19:33" - }, - "variables": [ - { - "name": "f", - "nodeType": "YulTypedName", - "src": "5329:1:33", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "5366:17:33", - "value": { - "arguments": [ - { - "name": "msb", - "nodeType": "YulIdentifier", - "src": "5376:3:33" - }, - { - "name": "f", - "nodeType": "YulIdentifier", - "src": "5381:1:33" - } - ], - "functionName": { - "name": "or", - "nodeType": "YulIdentifier", - "src": "5373:2:33" - }, - "nodeType": "YulFunctionCall", - "src": "5373:10:33" - }, - "variableNames": [ - { - "name": "msb", - "nodeType": "YulIdentifier", - "src": "5366:3:33" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "5396:14:33", - "value": { - "arguments": [ - { - "name": "f", - "nodeType": "YulIdentifier", - "src": "5405:1:33" - }, - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "5408:1:33" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "5401:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "5401:9:33" - }, - "variableNames": [ - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "5396:1:33" - } - ] - } - ] - }, - "evmVersion": "berlin", - "externalReferences": [ - { - "declaration": 7760, - "isOffset": false, - "isSlot": false, - "src": "5366:3:33", - "valueSize": 1 - }, - { - "declaration": 7760, - "isOffset": false, - "isSlot": false, - "src": "5376:3:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "5344:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "5396:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "5408:1:33", - "valueSize": 1 - } - ], - "id": 7767, - "nodeType": "InlineAssembly", - "src": "5302:118:33" - }, - { - "AST": { - "nodeType": "YulBlock", - "src": "5438:108:33", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "5452:27:33", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5465:1:33", - "type": "", - "value": "2" - }, - { - "arguments": [ - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "5471:1:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5474:3:33", - "type": "", - "value": "0xF" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "5468:2:33" - }, - "nodeType": "YulFunctionCall", - "src": "5468:10:33" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "5461:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "5461:18:33" - }, - "variables": [ - { - "name": "f", - "nodeType": "YulTypedName", - "src": "5456:1:33", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "5492:17:33", - "value": { - "arguments": [ - { - "name": "msb", - "nodeType": "YulIdentifier", - "src": "5502:3:33" - }, - { - "name": "f", - "nodeType": "YulIdentifier", - "src": "5507:1:33" - } - ], - "functionName": { - "name": "or", - "nodeType": "YulIdentifier", - "src": "5499:2:33" - }, - "nodeType": "YulFunctionCall", - "src": "5499:10:33" - }, - "variableNames": [ - { - "name": "msb", - "nodeType": "YulIdentifier", - "src": "5492:3:33" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "5522:14:33", - "value": { - "arguments": [ - { - "name": "f", - "nodeType": "YulIdentifier", - "src": "5531:1:33" - }, - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "5534:1:33" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "5527:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "5527:9:33" - }, - "variableNames": [ - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "5522:1:33" - } - ] - } - ] - }, - "evmVersion": "berlin", - "externalReferences": [ - { - "declaration": 7760, - "isOffset": false, - "isSlot": false, - "src": "5492:3:33", - "valueSize": 1 - }, - { - "declaration": 7760, - "isOffset": false, - "isSlot": false, - "src": "5502:3:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "5471:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "5522:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "5534:1:33", - "valueSize": 1 - } - ], - "id": 7768, - "nodeType": "InlineAssembly", - "src": "5429:117:33" - }, - { - "AST": { - "nodeType": "YulBlock", - "src": "5564:108:33", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "5578:27:33", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5591:1:33", - "type": "", - "value": "1" - }, - { - "arguments": [ - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "5597:1:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5600:3:33", - "type": "", - "value": "0x3" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "5594:2:33" - }, - "nodeType": "YulFunctionCall", - "src": "5594:10:33" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "5587:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "5587:18:33" - }, - "variables": [ - { - "name": "f", - "nodeType": "YulTypedName", - "src": "5582:1:33", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "5618:17:33", - "value": { - "arguments": [ - { - "name": "msb", - "nodeType": "YulIdentifier", - "src": "5628:3:33" - }, - { - "name": "f", - "nodeType": "YulIdentifier", - "src": "5633:1:33" - } - ], - "functionName": { - "name": "or", - "nodeType": "YulIdentifier", - "src": "5625:2:33" - }, - "nodeType": "YulFunctionCall", - "src": "5625:10:33" - }, - "variableNames": [ - { - "name": "msb", - "nodeType": "YulIdentifier", - "src": "5618:3:33" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "5648:14:33", - "value": { - "arguments": [ - { - "name": "f", - "nodeType": "YulIdentifier", - "src": "5657:1:33" - }, - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "5660:1:33" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "5653:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "5653:9:33" - }, - "variableNames": [ - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "5648:1:33" - } - ] - } - ] - }, - "evmVersion": "berlin", - "externalReferences": [ - { - "declaration": 7760, - "isOffset": false, - "isSlot": false, - "src": "5618:3:33", - "valueSize": 1 - }, - { - "declaration": 7760, - "isOffset": false, - "isSlot": false, - "src": "5628:3:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "5597:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "5648:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "5660:1:33", - "valueSize": 1 - } - ], - "id": 7769, - "nodeType": "InlineAssembly", - "src": "5555:117:33" - }, - { - "AST": { - "nodeType": "YulBlock", - "src": "5690:73:33", - "statements": [ - { - "nodeType": "YulVariableDeclaration", - "src": "5704:19:33", - "value": { - "arguments": [ - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "5716:1:33" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5719:3:33", - "type": "", - "value": "0x1" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "5713:2:33" - }, - "nodeType": "YulFunctionCall", - "src": "5713:10:33" - }, - "variables": [ - { - "name": "f", - "nodeType": "YulTypedName", - "src": "5708:1:33", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "5736:17:33", - "value": { - "arguments": [ - { - "name": "msb", - "nodeType": "YulIdentifier", - "src": "5746:3:33" - }, - { - "name": "f", - "nodeType": "YulIdentifier", - "src": "5751:1:33" - } - ], - "functionName": { - "name": "or", - "nodeType": "YulIdentifier", - "src": "5743:2:33" - }, - "nodeType": "YulFunctionCall", - "src": "5743:10:33" - }, - "variableNames": [ - { - "name": "msb", - "nodeType": "YulIdentifier", - "src": "5736:3:33" - } - ] - } - ] - }, - "evmVersion": "berlin", - "externalReferences": [ - { - "declaration": 7760, - "isOffset": false, - "isSlot": false, - "src": "5736:3:33", - "valueSize": 1 - }, - { - "declaration": 7760, - "isOffset": false, - "isSlot": false, - "src": "5746:3:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "5716:1:33", - "valueSize": 1 - } - ], - "id": 7770, - "nodeType": "InlineAssembly", - "src": "5681:82:33" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7773, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7771, - "name": "msb", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7760, - "src": "5777:3:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "hexValue": "313238", - "id": 7772, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5784:3:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_128_by_1", - "typeString": "int_const 128" - }, - "value": "128" - }, - "src": "5777:10:33", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "expression": { - "id": 7790, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 7783, - "name": "r", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7756, - "src": "5828:1:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7789, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7784, - "name": "ratio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7747, - "src": "5832:5:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<<", - "rightExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7787, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "hexValue": "313237", - "id": 7785, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5842:3:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_127_by_1", - "typeString": "int_const 127" - }, - "value": "127" - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "id": 7786, - "name": "msb", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7760, - "src": "5848:3:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "5842:9:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 7788, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "5841:11:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "5832:20:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "5828:24:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 7791, - "nodeType": "ExpressionStatement", - "src": "5828:24:33" - }, - "id": 7792, - "nodeType": "IfStatement", - "src": "5773:79:33", - "trueBody": { - "expression": { - "id": 7781, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 7774, - "name": "r", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7756, - "src": "5789:1:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7780, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7775, - "name": "ratio", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7747, - "src": "5793:5:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">>", - "rightExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7778, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7776, - "name": "msb", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7760, - "src": "5803:3:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "hexValue": "313237", - "id": 7777, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5809:3:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_127_by_1", - "typeString": "int_const 127" - }, - "value": "127" - }, - "src": "5803:9:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 7779, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "5802:11:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "5793:20:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "5789:24:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 7782, - "nodeType": "ExpressionStatement", - "src": "5789:24:33" - } - }, - { - "assignments": [ - 7794 - ], - "declarations": [ - { - "constant": false, - "id": 7794, - "mutability": "mutable", - "name": "log_2", - "nodeType": "VariableDeclaration", - "scope": 7865, - "src": "5863:12:33", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "typeName": { - "id": 7793, - "name": "int256", - "nodeType": "ElementaryTypeName", - "src": "5863:6:33", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "visibility": "internal" - } - ], - "id": 7804, - "initialValue": { - "commonType": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "id": 7803, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "id": 7800, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "arguments": [ - { - "id": 7797, - "name": "msb", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7760, - "src": "5886:3:33", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 7796, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "5879:6:33", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_int256_$", - "typeString": "type(int256)" - }, - "typeName": { - "id": 7795, - "name": "int256", - "nodeType": "ElementaryTypeName", - "src": "5879:6:33", - "typeDescriptions": {} - } - }, - "id": 7798, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5879:11:33", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "hexValue": "313238", - "id": 7799, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5893:3:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_128_by_1", - "typeString": "int_const 128" - }, - "value": "128" - }, - "src": "5879:17:33", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - } - ], - "id": 7801, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "5878:19:33", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<<", - "rightExpression": { - "hexValue": "3634", - "id": 7802, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5901:2:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_64_by_1", - "typeString": "int_const 64" - }, - "value": "64" - }, - "src": "5878:25:33", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "5863:40:33" - }, - { - "AST": { - "nodeType": "YulBlock", - "src": "5923:151:33", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "5937:24:33", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5946:3:33", - "type": "", - "value": "127" - }, - { - "arguments": [ - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "5955:1:33" - }, - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "5958:1:33" - } - ], - "functionName": { - "name": "mul", - "nodeType": "YulIdentifier", - "src": "5951:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "5951:9:33" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "5942:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "5942:19:33" - }, - "variableNames": [ - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "5937:1:33" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "5974:20:33", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "5987:3:33", - "type": "", - "value": "128" - }, - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "5992:1:33" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "5983:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "5983:11:33" - }, - "variables": [ - { - "name": "f", - "nodeType": "YulTypedName", - "src": "5978:1:33", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "6007:30:33", - "value": { - "arguments": [ - { - "name": "log_2", - "nodeType": "YulIdentifier", - "src": "6019:5:33" - }, - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6030:2:33", - "type": "", - "value": "63" - }, - { - "name": "f", - "nodeType": "YulIdentifier", - "src": "6034:1:33" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "6026:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "6026:10:33" - } - ], - "functionName": { - "name": "or", - "nodeType": "YulIdentifier", - "src": "6016:2:33" - }, - "nodeType": "YulFunctionCall", - "src": "6016:21:33" - }, - "variableNames": [ - { - "name": "log_2", - "nodeType": "YulIdentifier", - "src": "6007:5:33" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "6050:14:33", - "value": { - "arguments": [ - { - "name": "f", - "nodeType": "YulIdentifier", - "src": "6059:1:33" - }, - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "6062:1:33" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "6055:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "6055:9:33" - }, - "variableNames": [ - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "6050:1:33" - } - ] - } - ] - }, - "evmVersion": "berlin", - "externalReferences": [ - { - "declaration": 7794, - "isOffset": false, - "isSlot": false, - "src": "6007:5:33", - "valueSize": 1 - }, - { - "declaration": 7794, - "isOffset": false, - "isSlot": false, - "src": "6019:5:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "5937:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "5955:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "5958:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "5992:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "6050:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "6062:1:33", - "valueSize": 1 - } - ], - "id": 7805, - "nodeType": "InlineAssembly", - "src": "5914:160:33" - }, - { - "AST": { - "nodeType": "YulBlock", - "src": "6092:151:33", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "6106:24:33", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6115:3:33", - "type": "", - "value": "127" - }, - { - "arguments": [ - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "6124:1:33" - }, - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "6127:1:33" - } - ], - "functionName": { - "name": "mul", - "nodeType": "YulIdentifier", - "src": "6120:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "6120:9:33" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "6111:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "6111:19:33" - }, - "variableNames": [ - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "6106:1:33" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "6143:20:33", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6156:3:33", - "type": "", - "value": "128" - }, - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "6161:1:33" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "6152:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "6152:11:33" - }, - "variables": [ - { - "name": "f", - "nodeType": "YulTypedName", - "src": "6147:1:33", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "6176:30:33", - "value": { - "arguments": [ - { - "name": "log_2", - "nodeType": "YulIdentifier", - "src": "6188:5:33" - }, - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6199:2:33", - "type": "", - "value": "62" - }, - { - "name": "f", - "nodeType": "YulIdentifier", - "src": "6203:1:33" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "6195:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "6195:10:33" - } - ], - "functionName": { - "name": "or", - "nodeType": "YulIdentifier", - "src": "6185:2:33" - }, - "nodeType": "YulFunctionCall", - "src": "6185:21:33" - }, - "variableNames": [ - { - "name": "log_2", - "nodeType": "YulIdentifier", - "src": "6176:5:33" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "6219:14:33", - "value": { - "arguments": [ - { - "name": "f", - "nodeType": "YulIdentifier", - "src": "6228:1:33" - }, - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "6231:1:33" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "6224:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "6224:9:33" - }, - "variableNames": [ - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "6219:1:33" - } - ] - } - ] - }, - "evmVersion": "berlin", - "externalReferences": [ - { - "declaration": 7794, - "isOffset": false, - "isSlot": false, - "src": "6176:5:33", - "valueSize": 1 - }, - { - "declaration": 7794, - "isOffset": false, - "isSlot": false, - "src": "6188:5:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "6106:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "6124:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "6127:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "6161:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "6219:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "6231:1:33", - "valueSize": 1 - } - ], - "id": 7806, - "nodeType": "InlineAssembly", - "src": "6083:160:33" - }, - { - "AST": { - "nodeType": "YulBlock", - "src": "6261:151:33", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "6275:24:33", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6284:3:33", - "type": "", - "value": "127" - }, - { - "arguments": [ - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "6293:1:33" - }, - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "6296:1:33" - } - ], - "functionName": { - "name": "mul", - "nodeType": "YulIdentifier", - "src": "6289:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "6289:9:33" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "6280:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "6280:19:33" - }, - "variableNames": [ - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "6275:1:33" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "6312:20:33", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6325:3:33", - "type": "", - "value": "128" - }, - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "6330:1:33" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "6321:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "6321:11:33" - }, - "variables": [ - { - "name": "f", - "nodeType": "YulTypedName", - "src": "6316:1:33", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "6345:30:33", - "value": { - "arguments": [ - { - "name": "log_2", - "nodeType": "YulIdentifier", - "src": "6357:5:33" - }, - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6368:2:33", - "type": "", - "value": "61" - }, - { - "name": "f", - "nodeType": "YulIdentifier", - "src": "6372:1:33" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "6364:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "6364:10:33" - } - ], - "functionName": { - "name": "or", - "nodeType": "YulIdentifier", - "src": "6354:2:33" - }, - "nodeType": "YulFunctionCall", - "src": "6354:21:33" - }, - "variableNames": [ - { - "name": "log_2", - "nodeType": "YulIdentifier", - "src": "6345:5:33" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "6388:14:33", - "value": { - "arguments": [ - { - "name": "f", - "nodeType": "YulIdentifier", - "src": "6397:1:33" - }, - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "6400:1:33" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "6393:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "6393:9:33" - }, - "variableNames": [ - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "6388:1:33" - } - ] - } - ] - }, - "evmVersion": "berlin", - "externalReferences": [ - { - "declaration": 7794, - "isOffset": false, - "isSlot": false, - "src": "6345:5:33", - "valueSize": 1 - }, - { - "declaration": 7794, - "isOffset": false, - "isSlot": false, - "src": "6357:5:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "6275:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "6293:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "6296:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "6330:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "6388:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "6400:1:33", - "valueSize": 1 - } - ], - "id": 7807, - "nodeType": "InlineAssembly", - "src": "6252:160:33" - }, - { - "AST": { - "nodeType": "YulBlock", - "src": "6430:151:33", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "6444:24:33", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6453:3:33", - "type": "", - "value": "127" - }, - { - "arguments": [ - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "6462:1:33" - }, - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "6465:1:33" - } - ], - "functionName": { - "name": "mul", - "nodeType": "YulIdentifier", - "src": "6458:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "6458:9:33" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "6449:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "6449:19:33" - }, - "variableNames": [ - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "6444:1:33" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "6481:20:33", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6494:3:33", - "type": "", - "value": "128" - }, - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "6499:1:33" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "6490:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "6490:11:33" - }, - "variables": [ - { - "name": "f", - "nodeType": "YulTypedName", - "src": "6485:1:33", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "6514:30:33", - "value": { - "arguments": [ - { - "name": "log_2", - "nodeType": "YulIdentifier", - "src": "6526:5:33" - }, - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6537:2:33", - "type": "", - "value": "60" - }, - { - "name": "f", - "nodeType": "YulIdentifier", - "src": "6541:1:33" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "6533:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "6533:10:33" - } - ], - "functionName": { - "name": "or", - "nodeType": "YulIdentifier", - "src": "6523:2:33" - }, - "nodeType": "YulFunctionCall", - "src": "6523:21:33" - }, - "variableNames": [ - { - "name": "log_2", - "nodeType": "YulIdentifier", - "src": "6514:5:33" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "6557:14:33", - "value": { - "arguments": [ - { - "name": "f", - "nodeType": "YulIdentifier", - "src": "6566:1:33" - }, - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "6569:1:33" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "6562:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "6562:9:33" - }, - "variableNames": [ - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "6557:1:33" - } - ] - } - ] - }, - "evmVersion": "berlin", - "externalReferences": [ - { - "declaration": 7794, - "isOffset": false, - "isSlot": false, - "src": "6514:5:33", - "valueSize": 1 - }, - { - "declaration": 7794, - "isOffset": false, - "isSlot": false, - "src": "6526:5:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "6444:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "6462:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "6465:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "6499:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "6557:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "6569:1:33", - "valueSize": 1 - } - ], - "id": 7808, - "nodeType": "InlineAssembly", - "src": "6421:160:33" - }, - { - "AST": { - "nodeType": "YulBlock", - "src": "6599:151:33", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "6613:24:33", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6622:3:33", - "type": "", - "value": "127" - }, - { - "arguments": [ - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "6631:1:33" - }, - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "6634:1:33" - } - ], - "functionName": { - "name": "mul", - "nodeType": "YulIdentifier", - "src": "6627:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "6627:9:33" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "6618:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "6618:19:33" - }, - "variableNames": [ - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "6613:1:33" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "6650:20:33", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6663:3:33", - "type": "", - "value": "128" - }, - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "6668:1:33" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "6659:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "6659:11:33" - }, - "variables": [ - { - "name": "f", - "nodeType": "YulTypedName", - "src": "6654:1:33", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "6683:30:33", - "value": { - "arguments": [ - { - "name": "log_2", - "nodeType": "YulIdentifier", - "src": "6695:5:33" - }, - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6706:2:33", - "type": "", - "value": "59" - }, - { - "name": "f", - "nodeType": "YulIdentifier", - "src": "6710:1:33" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "6702:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "6702:10:33" - } - ], - "functionName": { - "name": "or", - "nodeType": "YulIdentifier", - "src": "6692:2:33" - }, - "nodeType": "YulFunctionCall", - "src": "6692:21:33" - }, - "variableNames": [ - { - "name": "log_2", - "nodeType": "YulIdentifier", - "src": "6683:5:33" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "6726:14:33", - "value": { - "arguments": [ - { - "name": "f", - "nodeType": "YulIdentifier", - "src": "6735:1:33" - }, - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "6738:1:33" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "6731:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "6731:9:33" - }, - "variableNames": [ - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "6726:1:33" - } - ] - } - ] - }, - "evmVersion": "berlin", - "externalReferences": [ - { - "declaration": 7794, - "isOffset": false, - "isSlot": false, - "src": "6683:5:33", - "valueSize": 1 - }, - { - "declaration": 7794, - "isOffset": false, - "isSlot": false, - "src": "6695:5:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "6613:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "6631:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "6634:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "6668:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "6726:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "6738:1:33", - "valueSize": 1 - } - ], - "id": 7809, - "nodeType": "InlineAssembly", - "src": "6590:160:33" - }, - { - "AST": { - "nodeType": "YulBlock", - "src": "6768:151:33", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "6782:24:33", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6791:3:33", - "type": "", - "value": "127" - }, - { - "arguments": [ - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "6800:1:33" - }, - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "6803:1:33" - } - ], - "functionName": { - "name": "mul", - "nodeType": "YulIdentifier", - "src": "6796:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "6796:9:33" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "6787:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "6787:19:33" - }, - "variableNames": [ - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "6782:1:33" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "6819:20:33", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6832:3:33", - "type": "", - "value": "128" - }, - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "6837:1:33" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "6828:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "6828:11:33" - }, - "variables": [ - { - "name": "f", - "nodeType": "YulTypedName", - "src": "6823:1:33", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "6852:30:33", - "value": { - "arguments": [ - { - "name": "log_2", - "nodeType": "YulIdentifier", - "src": "6864:5:33" - }, - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6875:2:33", - "type": "", - "value": "58" - }, - { - "name": "f", - "nodeType": "YulIdentifier", - "src": "6879:1:33" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "6871:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "6871:10:33" - } - ], - "functionName": { - "name": "or", - "nodeType": "YulIdentifier", - "src": "6861:2:33" - }, - "nodeType": "YulFunctionCall", - "src": "6861:21:33" - }, - "variableNames": [ - { - "name": "log_2", - "nodeType": "YulIdentifier", - "src": "6852:5:33" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "6895:14:33", - "value": { - "arguments": [ - { - "name": "f", - "nodeType": "YulIdentifier", - "src": "6904:1:33" - }, - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "6907:1:33" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "6900:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "6900:9:33" - }, - "variableNames": [ - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "6895:1:33" - } - ] - } - ] - }, - "evmVersion": "berlin", - "externalReferences": [ - { - "declaration": 7794, - "isOffset": false, - "isSlot": false, - "src": "6852:5:33", - "valueSize": 1 - }, - { - "declaration": 7794, - "isOffset": false, - "isSlot": false, - "src": "6864:5:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "6782:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "6800:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "6803:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "6837:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "6895:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "6907:1:33", - "valueSize": 1 - } - ], - "id": 7810, - "nodeType": "InlineAssembly", - "src": "6759:160:33" - }, - { - "AST": { - "nodeType": "YulBlock", - "src": "6937:151:33", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "6951:24:33", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "6960:3:33", - "type": "", - "value": "127" - }, - { - "arguments": [ - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "6969:1:33" - }, - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "6972:1:33" - } - ], - "functionName": { - "name": "mul", - "nodeType": "YulIdentifier", - "src": "6965:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "6965:9:33" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "6956:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "6956:19:33" - }, - "variableNames": [ - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "6951:1:33" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "6988:20:33", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7001:3:33", - "type": "", - "value": "128" - }, - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "7006:1:33" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "6997:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "6997:11:33" - }, - "variables": [ - { - "name": "f", - "nodeType": "YulTypedName", - "src": "6992:1:33", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "7021:30:33", - "value": { - "arguments": [ - { - "name": "log_2", - "nodeType": "YulIdentifier", - "src": "7033:5:33" - }, - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7044:2:33", - "type": "", - "value": "57" - }, - { - "name": "f", - "nodeType": "YulIdentifier", - "src": "7048:1:33" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "7040:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "7040:10:33" - } - ], - "functionName": { - "name": "or", - "nodeType": "YulIdentifier", - "src": "7030:2:33" - }, - "nodeType": "YulFunctionCall", - "src": "7030:21:33" - }, - "variableNames": [ - { - "name": "log_2", - "nodeType": "YulIdentifier", - "src": "7021:5:33" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "7064:14:33", - "value": { - "arguments": [ - { - "name": "f", - "nodeType": "YulIdentifier", - "src": "7073:1:33" - }, - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "7076:1:33" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "7069:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "7069:9:33" - }, - "variableNames": [ - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "7064:1:33" - } - ] - } - ] - }, - "evmVersion": "berlin", - "externalReferences": [ - { - "declaration": 7794, - "isOffset": false, - "isSlot": false, - "src": "7021:5:33", - "valueSize": 1 - }, - { - "declaration": 7794, - "isOffset": false, - "isSlot": false, - "src": "7033:5:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "6951:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "6969:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "6972:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "7006:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "7064:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "7076:1:33", - "valueSize": 1 - } - ], - "id": 7811, - "nodeType": "InlineAssembly", - "src": "6928:160:33" - }, - { - "AST": { - "nodeType": "YulBlock", - "src": "7106:151:33", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "7120:24:33", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7129:3:33", - "type": "", - "value": "127" - }, - { - "arguments": [ - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "7138:1:33" - }, - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "7141:1:33" - } - ], - "functionName": { - "name": "mul", - "nodeType": "YulIdentifier", - "src": "7134:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "7134:9:33" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "7125:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "7125:19:33" - }, - "variableNames": [ - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "7120:1:33" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "7157:20:33", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7170:3:33", - "type": "", - "value": "128" - }, - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "7175:1:33" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "7166:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "7166:11:33" - }, - "variables": [ - { - "name": "f", - "nodeType": "YulTypedName", - "src": "7161:1:33", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "7190:30:33", - "value": { - "arguments": [ - { - "name": "log_2", - "nodeType": "YulIdentifier", - "src": "7202:5:33" - }, - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7213:2:33", - "type": "", - "value": "56" - }, - { - "name": "f", - "nodeType": "YulIdentifier", - "src": "7217:1:33" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "7209:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "7209:10:33" - } - ], - "functionName": { - "name": "or", - "nodeType": "YulIdentifier", - "src": "7199:2:33" - }, - "nodeType": "YulFunctionCall", - "src": "7199:21:33" - }, - "variableNames": [ - { - "name": "log_2", - "nodeType": "YulIdentifier", - "src": "7190:5:33" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "7233:14:33", - "value": { - "arguments": [ - { - "name": "f", - "nodeType": "YulIdentifier", - "src": "7242:1:33" - }, - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "7245:1:33" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "7238:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "7238:9:33" - }, - "variableNames": [ - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "7233:1:33" - } - ] - } - ] - }, - "evmVersion": "berlin", - "externalReferences": [ - { - "declaration": 7794, - "isOffset": false, - "isSlot": false, - "src": "7190:5:33", - "valueSize": 1 - }, - { - "declaration": 7794, - "isOffset": false, - "isSlot": false, - "src": "7202:5:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "7120:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "7138:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "7141:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "7175:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "7233:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "7245:1:33", - "valueSize": 1 - } - ], - "id": 7812, - "nodeType": "InlineAssembly", - "src": "7097:160:33" - }, - { - "AST": { - "nodeType": "YulBlock", - "src": "7275:151:33", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "7289:24:33", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7298:3:33", - "type": "", - "value": "127" - }, - { - "arguments": [ - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "7307:1:33" - }, - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "7310:1:33" - } - ], - "functionName": { - "name": "mul", - "nodeType": "YulIdentifier", - "src": "7303:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "7303:9:33" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "7294:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "7294:19:33" - }, - "variableNames": [ - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "7289:1:33" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "7326:20:33", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7339:3:33", - "type": "", - "value": "128" - }, - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "7344:1:33" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "7335:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "7335:11:33" - }, - "variables": [ - { - "name": "f", - "nodeType": "YulTypedName", - "src": "7330:1:33", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "7359:30:33", - "value": { - "arguments": [ - { - "name": "log_2", - "nodeType": "YulIdentifier", - "src": "7371:5:33" - }, - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7382:2:33", - "type": "", - "value": "55" - }, - { - "name": "f", - "nodeType": "YulIdentifier", - "src": "7386:1:33" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "7378:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "7378:10:33" - } - ], - "functionName": { - "name": "or", - "nodeType": "YulIdentifier", - "src": "7368:2:33" - }, - "nodeType": "YulFunctionCall", - "src": "7368:21:33" - }, - "variableNames": [ - { - "name": "log_2", - "nodeType": "YulIdentifier", - "src": "7359:5:33" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "7402:14:33", - "value": { - "arguments": [ - { - "name": "f", - "nodeType": "YulIdentifier", - "src": "7411:1:33" - }, - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "7414:1:33" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "7407:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "7407:9:33" - }, - "variableNames": [ - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "7402:1:33" - } - ] - } - ] - }, - "evmVersion": "berlin", - "externalReferences": [ - { - "declaration": 7794, - "isOffset": false, - "isSlot": false, - "src": "7359:5:33", - "valueSize": 1 - }, - { - "declaration": 7794, - "isOffset": false, - "isSlot": false, - "src": "7371:5:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "7289:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "7307:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "7310:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "7344:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "7402:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "7414:1:33", - "valueSize": 1 - } - ], - "id": 7813, - "nodeType": "InlineAssembly", - "src": "7266:160:33" - }, - { - "AST": { - "nodeType": "YulBlock", - "src": "7444:151:33", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "7458:24:33", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7467:3:33", - "type": "", - "value": "127" - }, - { - "arguments": [ - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "7476:1:33" - }, - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "7479:1:33" - } - ], - "functionName": { - "name": "mul", - "nodeType": "YulIdentifier", - "src": "7472:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "7472:9:33" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "7463:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "7463:19:33" - }, - "variableNames": [ - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "7458:1:33" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "7495:20:33", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7508:3:33", - "type": "", - "value": "128" - }, - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "7513:1:33" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "7504:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "7504:11:33" - }, - "variables": [ - { - "name": "f", - "nodeType": "YulTypedName", - "src": "7499:1:33", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "7528:30:33", - "value": { - "arguments": [ - { - "name": "log_2", - "nodeType": "YulIdentifier", - "src": "7540:5:33" - }, - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7551:2:33", - "type": "", - "value": "54" - }, - { - "name": "f", - "nodeType": "YulIdentifier", - "src": "7555:1:33" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "7547:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "7547:10:33" - } - ], - "functionName": { - "name": "or", - "nodeType": "YulIdentifier", - "src": "7537:2:33" - }, - "nodeType": "YulFunctionCall", - "src": "7537:21:33" - }, - "variableNames": [ - { - "name": "log_2", - "nodeType": "YulIdentifier", - "src": "7528:5:33" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "7571:14:33", - "value": { - "arguments": [ - { - "name": "f", - "nodeType": "YulIdentifier", - "src": "7580:1:33" - }, - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "7583:1:33" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "7576:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "7576:9:33" - }, - "variableNames": [ - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "7571:1:33" - } - ] - } - ] - }, - "evmVersion": "berlin", - "externalReferences": [ - { - "declaration": 7794, - "isOffset": false, - "isSlot": false, - "src": "7528:5:33", - "valueSize": 1 - }, - { - "declaration": 7794, - "isOffset": false, - "isSlot": false, - "src": "7540:5:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "7458:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "7476:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "7479:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "7513:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "7571:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "7583:1:33", - "valueSize": 1 - } - ], - "id": 7814, - "nodeType": "InlineAssembly", - "src": "7435:160:33" - }, - { - "AST": { - "nodeType": "YulBlock", - "src": "7613:151:33", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "7627:24:33", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7636:3:33", - "type": "", - "value": "127" - }, - { - "arguments": [ - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "7645:1:33" - }, - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "7648:1:33" - } - ], - "functionName": { - "name": "mul", - "nodeType": "YulIdentifier", - "src": "7641:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "7641:9:33" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "7632:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "7632:19:33" - }, - "variableNames": [ - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "7627:1:33" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "7664:20:33", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7677:3:33", - "type": "", - "value": "128" - }, - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "7682:1:33" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "7673:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "7673:11:33" - }, - "variables": [ - { - "name": "f", - "nodeType": "YulTypedName", - "src": "7668:1:33", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "7697:30:33", - "value": { - "arguments": [ - { - "name": "log_2", - "nodeType": "YulIdentifier", - "src": "7709:5:33" - }, - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7720:2:33", - "type": "", - "value": "53" - }, - { - "name": "f", - "nodeType": "YulIdentifier", - "src": "7724:1:33" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "7716:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "7716:10:33" - } - ], - "functionName": { - "name": "or", - "nodeType": "YulIdentifier", - "src": "7706:2:33" - }, - "nodeType": "YulFunctionCall", - "src": "7706:21:33" - }, - "variableNames": [ - { - "name": "log_2", - "nodeType": "YulIdentifier", - "src": "7697:5:33" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "7740:14:33", - "value": { - "arguments": [ - { - "name": "f", - "nodeType": "YulIdentifier", - "src": "7749:1:33" - }, - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "7752:1:33" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "7745:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "7745:9:33" - }, - "variableNames": [ - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "7740:1:33" - } - ] - } - ] - }, - "evmVersion": "berlin", - "externalReferences": [ - { - "declaration": 7794, - "isOffset": false, - "isSlot": false, - "src": "7697:5:33", - "valueSize": 1 - }, - { - "declaration": 7794, - "isOffset": false, - "isSlot": false, - "src": "7709:5:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "7627:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "7645:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "7648:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "7682:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "7740:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "7752:1:33", - "valueSize": 1 - } - ], - "id": 7815, - "nodeType": "InlineAssembly", - "src": "7604:160:33" - }, - { - "AST": { - "nodeType": "YulBlock", - "src": "7782:151:33", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "7796:24:33", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7805:3:33", - "type": "", - "value": "127" - }, - { - "arguments": [ - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "7814:1:33" - }, - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "7817:1:33" - } - ], - "functionName": { - "name": "mul", - "nodeType": "YulIdentifier", - "src": "7810:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "7810:9:33" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "7801:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "7801:19:33" - }, - "variableNames": [ - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "7796:1:33" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "7833:20:33", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7846:3:33", - "type": "", - "value": "128" - }, - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "7851:1:33" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "7842:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "7842:11:33" - }, - "variables": [ - { - "name": "f", - "nodeType": "YulTypedName", - "src": "7837:1:33", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "7866:30:33", - "value": { - "arguments": [ - { - "name": "log_2", - "nodeType": "YulIdentifier", - "src": "7878:5:33" - }, - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7889:2:33", - "type": "", - "value": "52" - }, - { - "name": "f", - "nodeType": "YulIdentifier", - "src": "7893:1:33" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "7885:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "7885:10:33" - } - ], - "functionName": { - "name": "or", - "nodeType": "YulIdentifier", - "src": "7875:2:33" - }, - "nodeType": "YulFunctionCall", - "src": "7875:21:33" - }, - "variableNames": [ - { - "name": "log_2", - "nodeType": "YulIdentifier", - "src": "7866:5:33" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "7909:14:33", - "value": { - "arguments": [ - { - "name": "f", - "nodeType": "YulIdentifier", - "src": "7918:1:33" - }, - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "7921:1:33" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "7914:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "7914:9:33" - }, - "variableNames": [ - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "7909:1:33" - } - ] - } - ] - }, - "evmVersion": "berlin", - "externalReferences": [ - { - "declaration": 7794, - "isOffset": false, - "isSlot": false, - "src": "7866:5:33", - "valueSize": 1 - }, - { - "declaration": 7794, - "isOffset": false, - "isSlot": false, - "src": "7878:5:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "7796:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "7814:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "7817:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "7851:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "7909:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "7921:1:33", - "valueSize": 1 - } - ], - "id": 7816, - "nodeType": "InlineAssembly", - "src": "7773:160:33" - }, - { - "AST": { - "nodeType": "YulBlock", - "src": "7951:151:33", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "7965:24:33", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "7974:3:33", - "type": "", - "value": "127" - }, - { - "arguments": [ - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "7983:1:33" - }, - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "7986:1:33" - } - ], - "functionName": { - "name": "mul", - "nodeType": "YulIdentifier", - "src": "7979:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "7979:9:33" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "7970:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "7970:19:33" - }, - "variableNames": [ - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "7965:1:33" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "8002:20:33", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "8015:3:33", - "type": "", - "value": "128" - }, - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "8020:1:33" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "8011:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "8011:11:33" - }, - "variables": [ - { - "name": "f", - "nodeType": "YulTypedName", - "src": "8006:1:33", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "8035:30:33", - "value": { - "arguments": [ - { - "name": "log_2", - "nodeType": "YulIdentifier", - "src": "8047:5:33" - }, - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "8058:2:33", - "type": "", - "value": "51" - }, - { - "name": "f", - "nodeType": "YulIdentifier", - "src": "8062:1:33" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "8054:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "8054:10:33" - } - ], - "functionName": { - "name": "or", - "nodeType": "YulIdentifier", - "src": "8044:2:33" - }, - "nodeType": "YulFunctionCall", - "src": "8044:21:33" - }, - "variableNames": [ - { - "name": "log_2", - "nodeType": "YulIdentifier", - "src": "8035:5:33" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "8078:14:33", - "value": { - "arguments": [ - { - "name": "f", - "nodeType": "YulIdentifier", - "src": "8087:1:33" - }, - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "8090:1:33" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "8083:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "8083:9:33" - }, - "variableNames": [ - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "8078:1:33" - } - ] - } - ] - }, - "evmVersion": "berlin", - "externalReferences": [ - { - "declaration": 7794, - "isOffset": false, - "isSlot": false, - "src": "8035:5:33", - "valueSize": 1 - }, - { - "declaration": 7794, - "isOffset": false, - "isSlot": false, - "src": "8047:5:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "7965:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "7983:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "7986:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "8020:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "8078:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "8090:1:33", - "valueSize": 1 - } - ], - "id": 7817, - "nodeType": "InlineAssembly", - "src": "7942:160:33" - }, - { - "AST": { - "nodeType": "YulBlock", - "src": "8120:124:33", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "8134:24:33", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "8143:3:33", - "type": "", - "value": "127" - }, - { - "arguments": [ - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "8152:1:33" - }, - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "8155:1:33" - } - ], - "functionName": { - "name": "mul", - "nodeType": "YulIdentifier", - "src": "8148:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "8148:9:33" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "8139:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "8139:19:33" - }, - "variableNames": [ - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "8134:1:33" - } - ] - }, - { - "nodeType": "YulVariableDeclaration", - "src": "8171:20:33", - "value": { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "8184:3:33", - "type": "", - "value": "128" - }, - { - "name": "r", - "nodeType": "YulIdentifier", - "src": "8189:1:33" - } - ], - "functionName": { - "name": "shr", - "nodeType": "YulIdentifier", - "src": "8180:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "8180:11:33" - }, - "variables": [ - { - "name": "f", - "nodeType": "YulTypedName", - "src": "8175:1:33", - "type": "" - } - ] - }, - { - "nodeType": "YulAssignment", - "src": "8204:30:33", - "value": { - "arguments": [ - { - "name": "log_2", - "nodeType": "YulIdentifier", - "src": "8216:5:33" - }, - { - "arguments": [ - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "8227:2:33", - "type": "", - "value": "50" - }, - { - "name": "f", - "nodeType": "YulIdentifier", - "src": "8231:1:33" - } - ], - "functionName": { - "name": "shl", - "nodeType": "YulIdentifier", - "src": "8223:3:33" - }, - "nodeType": "YulFunctionCall", - "src": "8223:10:33" - } - ], - "functionName": { - "name": "or", - "nodeType": "YulIdentifier", - "src": "8213:2:33" - }, - "nodeType": "YulFunctionCall", - "src": "8213:21:33" - }, - "variableNames": [ - { - "name": "log_2", - "nodeType": "YulIdentifier", - "src": "8204:5:33" - } - ] - } - ] - }, - "evmVersion": "berlin", - "externalReferences": [ - { - "declaration": 7794, - "isOffset": false, - "isSlot": false, - "src": "8204:5:33", - "valueSize": 1 - }, - { - "declaration": 7794, - "isOffset": false, - "isSlot": false, - "src": "8216:5:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "8134:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "8152:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "8155:1:33", - "valueSize": 1 - }, - { - "declaration": 7756, - "isOffset": false, - "isSlot": false, - "src": "8189:1:33", - "valueSize": 1 - } - ], - "id": 7818, - "nodeType": "InlineAssembly", - "src": "8111:133:33" - }, - { - "assignments": [ - 7820 - ], - "declarations": [ - { - "constant": false, - "id": 7820, - "mutability": "mutable", - "name": "log_sqrt10001", - "nodeType": "VariableDeclaration", - "scope": 7865, - "src": "8254:20:33", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "typeName": { - "id": 7819, - "name": "int256", - "nodeType": "ElementaryTypeName", - "src": "8254:6:33", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "visibility": "internal" - } - ], - "id": 7824, - "initialValue": { - "commonType": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "id": 7823, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7821, - "name": "log_2", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7794, - "src": "8277:5:33", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "hexValue": "323535373338393538393939363033383236333437313431", - "id": 7822, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8285:24:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_255738958999603826347141_by_1", - "typeString": "int_const 255738958999603826347141" - }, - "value": "255738958999603826347141" - }, - "src": "8277:32:33", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "8254:55:33" - }, - { - "assignments": [ - 7826 - ], - "declarations": [ - { - "constant": false, - "id": 7826, - "mutability": "mutable", - "name": "tickLow", - "nodeType": "VariableDeclaration", - "scope": 7865, - "src": "8338:13:33", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 7825, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "8338:5:33", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - } - ], - "id": 7836, - "initialValue": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "id": 7834, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "id": 7831, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7829, - "name": "log_sqrt10001", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7820, - "src": "8361:13:33", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "hexValue": "33343032393932393536383039313332343138353936313430313030363630323437323130", - "id": 7830, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8377:37:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_3402992956809132418596140100660247210_by_1", - "typeString": "int_const 3402...(29 digits omitted)...7210" - }, - "value": "3402992956809132418596140100660247210" - }, - "src": "8361:53:33", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - } - ], - "id": 7832, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "8360:55:33", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">>", - "rightExpression": { - "hexValue": "313238", - "id": 7833, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8419:3:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_128_by_1", - "typeString": "int_const 128" - }, - "value": "128" - }, - "src": "8360:62:33", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - ], - "id": 7828, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "8354:5:33", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_int24_$", - "typeString": "type(int24)" - }, - "typeName": { - "id": 7827, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "8354:5:33", - "typeDescriptions": {} - } - }, - "id": 7835, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8354:69:33", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "8338:85:33" - }, - { - "assignments": [ - 7838 - ], - "declarations": [ - { - "constant": false, - "id": 7838, - "mutability": "mutable", - "name": "tickHi", - "nodeType": "VariableDeclaration", - "scope": 7865, - "src": "8433:12:33", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 7837, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "8433:5:33", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - } - ], - "id": 7848, - "initialValue": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "id": 7846, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "id": 7843, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7841, - "name": "log_sqrt10001", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7820, - "src": "8455:13:33", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "hexValue": "323931333339343634373731393839363232393037303237363231313533333938303838343935", - "id": 7842, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8471:39:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_291339464771989622907027621153398088495_by_1", - "typeString": "int_const 2913...(31 digits omitted)...8495" - }, - "value": "291339464771989622907027621153398088495" - }, - "src": "8455:55:33", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - } - ], - "id": 7844, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "8454:57:33", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">>", - "rightExpression": { - "hexValue": "313238", - "id": 7845, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8515:3:33", - "typeDescriptions": { - "typeIdentifier": "t_rational_128_by_1", - "typeString": "int_const 128" - }, - "value": "128" - }, - "src": "8454:64:33", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - ], - "id": 7840, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "8448:5:33", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_int24_$", - "typeString": "type(int24)" - }, - "typeName": { - "id": 7839, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "8448:5:33", - "typeDescriptions": {} - } - }, - "id": 7847, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8448:71:33", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "8433:86:33" - }, - { - "expression": { - "id": 7863, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 7849, - "name": "tick", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7733, - "src": "8530:4:33", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "condition": { - "commonType": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "id": 7852, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7850, - "name": "tickLow", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7826, - "src": "8537:7:33", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "id": 7851, - "name": "tickHi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7838, - "src": "8548:6:33", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "src": "8537:17:33", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseExpression": { - "condition": { - "commonType": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "id": 7858, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "arguments": [ - { - "id": 7855, - "name": "tickHi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7838, - "src": "8586:6:33", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - ], - "id": 7854, - "name": "getSqrtRatioAtTick", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7727, - "src": "8567:18:33", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_int24_$returns$_t_uint160_$", - "typeString": "function (int24) pure returns (uint160)" - } - }, - "id": 7856, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8567:26:33", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "id": 7857, - "name": "sqrtPriceX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7730, - "src": "8597:12:33", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "src": "8567:42:33", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseExpression": { - "id": 7860, - "name": "tickLow", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7826, - "src": "8621:7:33", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "id": 7861, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "Conditional", - "src": "8567:61:33", - "trueExpression": { - "id": 7859, - "name": "tickHi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7838, - "src": "8612:6:33", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "id": 7862, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "Conditional", - "src": "8537:91:33", - "trueExpression": { - "id": 7853, - "name": "tickLow", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7826, - "src": "8557:7:33", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "src": "8530:98:33", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "id": 7864, - "nodeType": "ExpressionStatement", - "src": "8530:98:33" - } - ] - }, - "documentation": { - "id": 7728, - "nodeType": "StructuredDocumentation", - "src": "3941:408:33", - "text": "@notice Calculates the greatest tick value such that getRatioAtTick(tick) <= ratio\n @dev Throws in case sqrtPriceX96 < MIN_SQRT_RATIO, as MIN_SQRT_RATIO is the lowest value getRatioAtTick may\n ever return.\n @param sqrtPriceX96 The sqrt ratio for which to compute the tick as a Q64.96\n @return tick The greatest tick for which the ratio is less than or equal to the input ratio" - }, - "id": 7866, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getTickAtSqrtRatio", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 7731, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 7730, - "mutability": "mutable", - "name": "sqrtPriceX96", - "nodeType": "VariableDeclaration", - "scope": 7866, - "src": "4382:20:33", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "typeName": { - "id": 7729, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "4382:7:33", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "visibility": "internal" - } - ], - "src": "4381:22:33" - }, - "returnParameters": { - "id": 7734, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 7733, - "mutability": "mutable", - "name": "tick", - "nodeType": "VariableDeclaration", - "scope": 7866, - "src": "4427:10:33", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - }, - "typeName": { - "id": 7732, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "4427:5:33", - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - }, - "visibility": "internal" - } - ], - "src": "4426:12:33" - }, - "scope": 7867, - "src": "4354:4281:33", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - } - ], - "scope": 7868, - "src": "306:8331:33" - } - ], - "src": "45:8593:33" - }, - "id": 33 - }, - "@uniswap/v3-core/contracts/libraries/TransferHelper.sol": { - "ast": { - "absolutePath": "@uniswap/v3-core/contracts/libraries/TransferHelper.sol", - "exportedSymbols": { - "IERC20Minimal": [ - 3633 - ], - "TransferHelper": [ - 7918 - ] - }, - "id": 7919, - "license": "GPL-2.0-or-later", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 7869, - "literals": [ - "solidity", - ">=", - "0.6", - ".0" - ], - "nodeType": "PragmaDirective", - "src": "45:24:34" - }, - { - "absolutePath": "@uniswap/v3-core/contracts/interfaces/IERC20Minimal.sol", - "file": "../interfaces/IERC20Minimal.sol", - "id": 7870, - "nodeType": "ImportDirective", - "scope": 7919, - "sourceUnit": 3634, - "src": "71:41:34", - "symbolAliases": [], - "unitAlias": "" - }, - { - "abstract": false, - "baseContracts": [], - "contractDependencies": [], - "contractKind": "library", - "documentation": { - "id": 7871, - "nodeType": "StructuredDocumentation", - "src": "114:139:34", - "text": "@title TransferHelper\n @notice Contains helper methods for interacting with ERC20 tokens that do not consistently return true/false" - }, - "fullyImplemented": true, - "id": 7918, - "linearizedBaseContracts": [ - 7918 - ], - "name": "TransferHelper", - "nodeType": "ContractDefinition", - "nodes": [ - { - "body": { - "id": 7916, - "nodeType": "Block", - "src": "705:225:34", - "statements": [ - { - "assignments": [ - 7882, - 7884 - ], - "declarations": [ - { - "constant": false, - "id": 7882, - "mutability": "mutable", - "name": "success", - "nodeType": "VariableDeclaration", - "scope": 7916, - "src": "716:12:34", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 7881, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "716:4:34", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 7884, - "mutability": "mutable", - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 7916, - "src": "730:17:34", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 7883, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "730:5:34", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "visibility": "internal" - } - ], - "id": 7896, - "initialValue": { - "arguments": [ - { - "arguments": [ - { - "expression": { - "expression": { - "id": 7889, - "name": "IERC20Minimal", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3633, - "src": "797:13:34", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IERC20Minimal_$3633_$", - "typeString": "type(contract IERC20Minimal)" - } - }, - "id": 7890, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "transfer", - "nodeType": "MemberAccess", - "referencedDeclaration": 3582, - "src": "797:22:34", - "typeDescriptions": { - "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", - "typeString": "function IERC20Minimal.transfer(address,uint256) returns (bool)" - } - }, - "id": 7891, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "selector", - "nodeType": "MemberAccess", - "src": "797:31:34", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - { - "id": 7892, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7876, - "src": "830:2:34", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "id": 7893, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7878, - "src": "834:5:34", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 7887, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -1, - "src": "774:3:34", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 7888, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "encodeWithSelector", - "nodeType": "MemberAccess", - "src": "774:22:34", - "typeDescriptions": { - "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", - "typeString": "function (bytes4) pure returns (bytes memory)" - } - }, - "id": 7894, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "774:66:34", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "expression": { - "id": 7885, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7874, - "src": "763:5:34", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 7886, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "call", - "nodeType": "MemberAccess", - "src": "763:10:34", - "typeDescriptions": { - "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", - "typeString": "function (bytes memory) payable returns (bool,bytes memory)" - } - }, - "id": 7895, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "763:78:34", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", - "typeString": "tuple(bool,bytes memory)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "715:126:34" - }, - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 7912, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 7898, - "name": "success", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7882, - "src": "859:7:34", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 7910, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 7902, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 7899, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7884, - "src": "871:4:34", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "id": 7900, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "src": "871:11:34", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 7901, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "886:1:34", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "871:16:34", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "arguments": [ - { - "id": 7905, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7884, - "src": "902:4:34", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "components": [ - { - "id": 7907, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "909:4:34", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bool_$", - "typeString": "type(bool)" - }, - "typeName": { - "id": 7906, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "909:4:34", - "typeDescriptions": {} - } - } - ], - "id": 7908, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "908:6:34", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bool_$", - "typeString": "type(bool)" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_type$_t_bool_$", - "typeString": "type(bool)" - } - ], - "expression": { - "id": 7903, - "name": "abi", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -1, - "src": "891:3:34", - "typeDescriptions": { - "typeIdentifier": "t_magic_abi", - "typeString": "abi" - } - }, - "id": 7904, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "decode", - "nodeType": "MemberAccess", - "src": "891:10:34", - "typeDescriptions": { - "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 7909, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "891:24:34", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "871:44:34", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "id": 7911, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "870:46:34", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "859:57:34", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "5446", - "id": 7913, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "918:4:34", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_cebb2b2e317200ffcf39e4291b6400d95f06e73adfd258bd495d227b7d846ff0", - "typeString": "literal_string \"TF\"" - }, - "value": "TF" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_cebb2b2e317200ffcf39e4291b6400d95f06e73adfd258bd495d227b7d846ff0", - "typeString": "literal_string \"TF\"" - } - ], - "id": 7897, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "851:7:34", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 7914, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "851:72:34", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 7915, - "nodeType": "ExpressionStatement", - "src": "851:72:34" - } - ] - }, - "documentation": { - "id": 7872, - "nodeType": "StructuredDocumentation", - "src": "282:315:34", - "text": "@notice Transfers tokens from msg.sender to a recipient\n @dev Calls transfer on token contract, errors with TF if transfer fails\n @param token The contract address of the token which will be transferred\n @param to The recipient of the transfer\n @param value The value of the transfer" - }, - "id": 7917, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "safeTransfer", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 7879, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 7874, - "mutability": "mutable", - "name": "token", - "nodeType": "VariableDeclaration", - "scope": 7917, - "src": "633:13:34", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 7873, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "633:7:34", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 7876, - "mutability": "mutable", - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 7917, - "src": "656:10:34", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 7875, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "656:7:34", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 7878, - "mutability": "mutable", - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 7917, - "src": "676:13:34", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 7877, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "676:7:34", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "623:72:34" - }, - "returnParameters": { - "id": 7880, - "nodeType": "ParameterList", - "parameters": [], - "src": "705:0:34" - }, - "scope": 7918, - "src": "602:328:34", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - } - ], - "scope": 7919, - "src": "253:679:34" - } - ], - "src": "45:888:34" - }, - "id": 34 - }, - "@uniswap/v3-core/contracts/libraries/UnsafeMath.sol": { - "ast": { - "absolutePath": "@uniswap/v3-core/contracts/libraries/UnsafeMath.sol", - "exportedSymbols": { - "UnsafeMath": [ - 7934 - ] - }, - "id": 7935, - "license": "GPL-2.0-or-later", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 7920, - "literals": [ - "solidity", - ">=", - "0.5", - ".0" - ], - "nodeType": "PragmaDirective", - "src": "45:24:35" - }, - { - "abstract": false, - "baseContracts": [], - "contractDependencies": [], - "contractKind": "library", - "documentation": { - "id": 7921, - "nodeType": "StructuredDocumentation", - "src": "71:173:35", - "text": "@title Math functions that do not check inputs or outputs\n @notice Contains methods that perform common math functions but do not do any overflow or underflow checks" - }, - "fullyImplemented": true, - "id": 7934, - "linearizedBaseContracts": [ - 7934 - ], - "name": "UnsafeMath", - "nodeType": "ContractDefinition", - "nodes": [ - { - "body": { - "id": 7932, - "nodeType": "Block", - "src": "571:86:35", - "statements": [ - { - "AST": { - "nodeType": "YulBlock", - "src": "590:61:35", - "statements": [ - { - "nodeType": "YulAssignment", - "src": "604:37:35", - "value": { - "arguments": [ - { - "arguments": [ - { - "name": "x", - "nodeType": "YulIdentifier", - "src": "617:1:35" - }, - { - "name": "y", - "nodeType": "YulIdentifier", - "src": "620:1:35" - } - ], - "functionName": { - "name": "div", - "nodeType": "YulIdentifier", - "src": "613:3:35" - }, - "nodeType": "YulFunctionCall", - "src": "613:9:35" - }, - { - "arguments": [ - { - "arguments": [ - { - "name": "x", - "nodeType": "YulIdentifier", - "src": "631:1:35" - }, - { - "name": "y", - "nodeType": "YulIdentifier", - "src": "634:1:35" - } - ], - "functionName": { - "name": "mod", - "nodeType": "YulIdentifier", - "src": "627:3:35" - }, - "nodeType": "YulFunctionCall", - "src": "627:9:35" - }, - { - "kind": "number", - "nodeType": "YulLiteral", - "src": "638:1:35", - "type": "", - "value": "0" - } - ], - "functionName": { - "name": "gt", - "nodeType": "YulIdentifier", - "src": "624:2:35" - }, - "nodeType": "YulFunctionCall", - "src": "624:16:35" - } - ], - "functionName": { - "name": "add", - "nodeType": "YulIdentifier", - "src": "609:3:35" - }, - "nodeType": "YulFunctionCall", - "src": "609:32:35" - }, - "variableNames": [ - { - "name": "z", - "nodeType": "YulIdentifier", - "src": "604:1:35" - } - ] - } - ] - }, - "evmVersion": "berlin", - "externalReferences": [ - { - "declaration": 7924, - "isOffset": false, - "isSlot": false, - "src": "617:1:35", - "valueSize": 1 - }, - { - "declaration": 7924, - "isOffset": false, - "isSlot": false, - "src": "631:1:35", - "valueSize": 1 - }, - { - "declaration": 7926, - "isOffset": false, - "isSlot": false, - "src": "620:1:35", - "valueSize": 1 - }, - { - "declaration": 7926, - "isOffset": false, - "isSlot": false, - "src": "634:1:35", - "valueSize": 1 - }, - { - "declaration": 7929, - "isOffset": false, - "isSlot": false, - "src": "604:1:35", - "valueSize": 1 - } - ], - "id": 7931, - "nodeType": "InlineAssembly", - "src": "581:70:35" - } - ] - }, - "documentation": { - "id": 7922, - "nodeType": "StructuredDocumentation", - "src": "269:218:35", - "text": "@notice Returns ceil(x / y)\n @dev division by 0 has unspecified behavior, and must be checked externally\n @param x The dividend\n @param y The divisor\n @return z The quotient, ceil(x / y)" - }, - "id": 7933, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "divRoundingUp", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 7927, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 7924, - "mutability": "mutable", - "name": "x", - "nodeType": "VariableDeclaration", - "scope": 7933, - "src": "515:9:35", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 7923, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "515:7:35", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 7926, - "mutability": "mutable", - "name": "y", - "nodeType": "VariableDeclaration", - "scope": 7933, - "src": "526:9:35", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 7925, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "526:7:35", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "514:22:35" - }, - "returnParameters": { - "id": 7930, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 7929, - "mutability": "mutable", - "name": "z", - "nodeType": "VariableDeclaration", - "scope": 7933, - "src": "560:9:35", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 7928, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "560:7:35", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "559:11:35" - }, - "scope": 7934, - "src": "492:165:35", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - } - ], - "scope": 7935, - "src": "244:415:35" - } - ], - "src": "45:615:35" - }, - "id": 35 - }, - "contracts/BandPriceFeed.sol": { - "ast": { - "absolutePath": "contracts/BandPriceFeed.sol", - "exportedSymbols": { - "Address": [ - 696 - ], - "BandPriceFeed": [ - 8129 - ], - "BlockContext": [ - 8636 - ], - "CachedTwap": [ - 9207 - ], - "IPriceFeed": [ - 8666 - ], - "IStdReference": [ - 8700 - ] - }, - "id": 8130, - "license": "MIT License", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 7936, - "literals": [ - "solidity", - "0.7", - ".6" - ], - "nodeType": "PragmaDirective", - "src": "40:22:36" - }, - { - "id": 7937, - "literals": [ - "experimental", - "ABIEncoderV2" - ], - "nodeType": "PragmaDirective", - "src": "63:33:36" - }, - { - "absolutePath": "@openzeppelin/contracts/utils/Address.sol", - "file": "@openzeppelin/contracts/utils/Address.sol", - "id": 7939, - "nodeType": "ImportDirective", - "scope": 8130, - "sourceUnit": 697, - "src": "98:68:36", - "symbolAliases": [ - { - "foreign": { - "id": 7938, - "name": "Address", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "src": "107:7:36", - "typeDescriptions": {} - } - } - ], - "unitAlias": "" - }, - { - "absolutePath": "contracts/base/BlockContext.sol", - "file": "./base/BlockContext.sol", - "id": 7941, - "nodeType": "ImportDirective", - "scope": 8130, - "sourceUnit": 8637, - "src": "167:55:36", - "symbolAliases": [ - { - "foreign": { - "id": 7940, - "name": "BlockContext", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "src": "176:12:36", - "typeDescriptions": {} - } - } - ], - "unitAlias": "" - }, - { - "absolutePath": "contracts/interface/IPriceFeed.sol", - "file": "./interface/IPriceFeed.sol", - "id": 7943, - "nodeType": "ImportDirective", - "scope": 8130, - "sourceUnit": 8667, - "src": "223:56:36", - "symbolAliases": [ - { - "foreign": { - "id": 7942, - "name": "IPriceFeed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "src": "232:10:36", - "typeDescriptions": {} - } - } - ], - "unitAlias": "" - }, - { - "absolutePath": "contracts/interface/bandProtocol/IStdReference.sol", - "file": "./interface/bandProtocol/IStdReference.sol", - "id": 7945, - "nodeType": "ImportDirective", - "scope": 8130, - "sourceUnit": 8701, - "src": "280:75:36", - "symbolAliases": [ - { - "foreign": { - "id": 7944, - "name": "IStdReference", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "src": "289:13:36", - "typeDescriptions": {} - } - } - ], - "unitAlias": "" - }, - { - "absolutePath": "contracts/twap/CachedTwap.sol", - "file": "./twap/CachedTwap.sol", - "id": 7947, - "nodeType": "ImportDirective", - "scope": 8130, - "sourceUnit": 9208, - "src": "356:51:36", - "symbolAliases": [ - { - "foreign": { - "id": 7946, - "name": "CachedTwap", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "src": "365:10:36", - "typeDescriptions": {} - } - } - ], - "unitAlias": "" - }, - { - "abstract": false, - "baseContracts": [ - { - "baseName": { - "id": 7948, - "name": "IPriceFeed", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 8666, - "src": "435:10:36", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPriceFeed_$8666", - "typeString": "contract IPriceFeed" - } - }, - "id": 7949, - "nodeType": "InheritanceSpecifier", - "src": "435:10:36" - }, - { - "baseName": { - "id": 7950, - "name": "BlockContext", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 8636, - "src": "447:12:36", - "typeDescriptions": { - "typeIdentifier": "t_contract$_BlockContext_$8636", - "typeString": "contract BlockContext" - } - }, - "id": 7951, - "nodeType": "InheritanceSpecifier", - "src": "447:12:36" - }, - { - "baseName": { - "id": 7952, - "name": "CachedTwap", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 9207, - "src": "461:10:36", - "typeDescriptions": { - "typeIdentifier": "t_contract$_CachedTwap_$9207", - "typeString": "contract CachedTwap" - } - }, - "id": 7953, - "nodeType": "InheritanceSpecifier", - "src": "461:10:36" - } - ], - "contractDependencies": [ - 8636, - 8666, - 9207, - 9592 - ], - "contractKind": "contract", - "fullyImplemented": true, - "id": 8129, - "linearizedBaseContracts": [ - 8129, - 9207, - 9592, - 8636, - 8666 - ], - "name": "BandPriceFeed", - "nodeType": "ContractDefinition", - "nodes": [ - { - "id": 7956, - "libraryName": { - "id": 7954, - "name": "Address", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 696, - "src": "484:7:36", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Address_$696", - "typeString": "library Address" - } - }, - "nodeType": "UsingForDirective", - "src": "478:26:36", - "typeName": { - "id": 7955, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "496:7:36", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "constant": true, - "functionSelector": "f06a1e13", - "id": 7959, - "mutability": "constant", - "name": "QUOTE_ASSET", - "nodeType": "VariableDeclaration", - "scope": 8129, - "src": "537:42:36", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" - }, - "typeName": { - "id": 7957, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "537:6:36", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "value": { - "hexValue": "555344", - "id": 7958, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "574:5:36", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_c4ae21aac0c6549d71dd96035b7e0bdb6c79ebdba8891b666115bc976d16a29e", - "typeString": "literal_string \"USD\"" - }, - "value": "USD" - }, - "visibility": "public" - }, - { - "constant": false, - "functionSelector": "cdf456e1", - "id": 7961, - "mutability": "mutable", - "name": "baseAsset", - "nodeType": "VariableDeclaration", - "scope": 8129, - "src": "586:23:36", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_string_storage", - "typeString": "string" - }, - "typeName": { - "id": 7960, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "586:6:36", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "visibility": "public" - }, - { - "constant": false, - "functionSelector": "5368945b", - "id": 7963, - "mutability": "mutable", - "name": "stdRef", - "nodeType": "VariableDeclaration", - "scope": 8129, - "src": "615:27:36", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IStdReference_$8700", - "typeString": "contract IStdReference" - }, - "typeName": { - "id": 7962, - "name": "IStdReference", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 8700, - "src": "615:13:36", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IStdReference_$8700", - "typeString": "contract IStdReference" - } - }, - "visibility": "public" - }, - { - "body": { - "id": 7993, - "nodeType": "Block", - "src": "840:185:36", - "statements": [ - { - "expression": { - "arguments": [ - { - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "arguments": [ - { - "id": 7978, - "name": "stdRefArg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7965, - "src": "920:9:36", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IStdReference_$8700", - "typeString": "contract IStdReference" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_IStdReference_$8700", - "typeString": "contract IStdReference" - } - ], - "id": 7977, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "912:7:36", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 7976, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "912:7:36", - "typeDescriptions": {} - } - }, - "id": 7979, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "912:18:36", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 7980, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "isContract", - "nodeType": "MemberAccess", - "referencedDeclaration": 420, - "src": "912:29:36", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$", - "typeString": "function (address) view returns (bool)" - } - }, - "id": 7981, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "912:31:36", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "4250465f414e43", - "id": 7982, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "945:9:36", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_389ba6bc7ff950c9e36738df1520afe7e8caaea6a3e4f73225c7bbf0e556a20f", - "typeString": "literal_string \"BPF_ANC\"" - }, - "value": "BPF_ANC" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_389ba6bc7ff950c9e36738df1520afe7e8caaea6a3e4f73225c7bbf0e556a20f", - "typeString": "literal_string \"BPF_ANC\"" - } - ], - "id": 7975, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "904:7:36", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 7983, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "904:51:36", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 7984, - "nodeType": "ExpressionStatement", - "src": "904:51:36" - }, - { - "expression": { - "id": 7987, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 7985, - "name": "stdRef", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7963, - "src": "966:6:36", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IStdReference_$8700", - "typeString": "contract IStdReference" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 7986, - "name": "stdRefArg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7965, - "src": "975:9:36", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IStdReference_$8700", - "typeString": "contract IStdReference" - } - }, - "src": "966:18:36", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IStdReference_$8700", - "typeString": "contract IStdReference" - } - }, - "id": 7988, - "nodeType": "ExpressionStatement", - "src": "966:18:36" - }, - { - "expression": { - "id": 7991, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 7989, - "name": "baseAsset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7961, - "src": "994:9:36", - "typeDescriptions": { - "typeIdentifier": "t_string_storage", - "typeString": "string storage ref" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 7990, - "name": "baseAssetArg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7967, - "src": "1006:12:36", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - }, - "src": "994:24:36", - "typeDescriptions": { - "typeIdentifier": "t_string_storage", - "typeString": "string storage ref" - } - }, - "id": 7992, - "nodeType": "ExpressionStatement", - "src": "994:24:36" - } - ] - }, - "id": 7994, - "implemented": true, - "kind": "constructor", - "modifiers": [ - { - "arguments": [ - { - "id": 7972, - "name": "cacheTwapInterval", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7969, - "src": "821:17:36", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - } - ], - "id": 7973, - "modifierName": { - "id": 7971, - "name": "CachedTwap", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9207, - "src": "810:10:36", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_CachedTwap_$9207_$", - "typeString": "type(contract CachedTwap)" - } - }, - "nodeType": "ModifierInvocation", - "src": "810:29:36" - } - ], - "name": "", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 7970, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 7965, - "mutability": "mutable", - "name": "stdRefArg", - "nodeType": "VariableDeclaration", - "scope": 7994, - "src": "710:23:36", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IStdReference_$8700", - "typeString": "contract IStdReference" - }, - "typeName": { - "id": 7964, - "name": "IStdReference", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 8700, - "src": "710:13:36", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IStdReference_$8700", - "typeString": "contract IStdReference" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 7967, - "mutability": "mutable", - "name": "baseAssetArg", - "nodeType": "VariableDeclaration", - "scope": 7994, - "src": "743:26:36", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" - }, - "typeName": { - "id": 7966, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "743:6:36", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 7969, - "mutability": "mutable", - "name": "cacheTwapInterval", - "nodeType": "VariableDeclaration", - "scope": 7994, - "src": "779:24:36", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - }, - "typeName": { - "id": 7968, - "name": "uint80", - "nodeType": "ElementaryTypeName", - "src": "779:6:36", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - }, - "visibility": "internal" - } - ], - "src": "700:109:36" - }, - "returnParameters": { - "id": 7974, - "nodeType": "ParameterList", - "parameters": [], - "src": "840:0:36" - }, - "scope": 8129, - "src": "689:336:36", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - { - "body": { - "id": 8012, - "nodeType": "Block", - "src": "1098:140:36", - "statements": [ - { - "assignments": [ - 8001 - ], - "declarations": [ - { - "constant": false, - "id": 8001, - "mutability": "mutable", - "name": "bandData", - "nodeType": "VariableDeclaration", - "scope": 8012, - "src": "1108:43:36", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ReferenceData_$8676_memory_ptr", - "typeString": "struct IStdReference.ReferenceData" - }, - "typeName": { - "id": 8000, - "name": "IStdReference.ReferenceData", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 8676, - "src": "1108:27:36", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ReferenceData_$8676_storage_ptr", - "typeString": "struct IStdReference.ReferenceData" - } - }, - "visibility": "internal" - } - ], - "id": 8004, - "initialValue": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 8002, - "name": "_getReferenceData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8128, - "src": "1154:17:36", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_struct$_ReferenceData_$8676_memory_ptr_$", - "typeString": "function () view returns (struct IStdReference.ReferenceData memory)" - } - }, - "id": 8003, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1154:19:36", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_struct$_ReferenceData_$8676_memory_ptr", - "typeString": "struct IStdReference.ReferenceData memory" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1108:65:36" - }, - { - "expression": { - "arguments": [ - { - "expression": { - "id": 8006, - "name": "bandData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8001, - "src": "1191:8:36", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ReferenceData_$8676_memory_ptr", - "typeString": "struct IStdReference.ReferenceData memory" - } - }, - "id": 8007, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "rate", - "nodeType": "MemberAccess", - "referencedDeclaration": 8671, - "src": "1191:13:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "expression": { - "id": 8008, - "name": "bandData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8001, - "src": "1206:8:36", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ReferenceData_$8676_memory_ptr", - "typeString": "struct IStdReference.ReferenceData memory" - } - }, - "id": 8009, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "lastUpdatedBase", - "nodeType": "MemberAccess", - "referencedDeclaration": 8673, - "src": "1206:24:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 8005, - "name": "_update", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9324, - "src": "1183:7:36", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$", - "typeString": "function (uint256,uint256)" - } - }, - "id": 8010, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1183:48:36", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 8011, - "nodeType": "ExpressionStatement", - "src": "1183:48:36" - } - ] - }, - "documentation": { - "id": 7995, - "nodeType": "StructuredDocumentation", - "src": "1031:35:36", - "text": "@dev anyone can help update it." - }, - "functionSelector": "a2e62045", - "id": 8013, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "update", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 7996, - "nodeType": "ParameterList", - "parameters": [], - "src": "1086:2:36" - }, - "returnParameters": { - "id": 7997, - "nodeType": "ParameterList", - "parameters": [], - "src": "1098:0:36" - }, - "scope": 8129, - "src": "1071:167:36", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "baseFunctions": [ - 8652 - ], - "body": { - "id": 8044, - "nodeType": "Block", - "src": "1317:257:36", - "statements": [ - { - "assignments": [ - 8024 - ], - "declarations": [ - { - "constant": false, - "id": 8024, - "mutability": "mutable", - "name": "latestBandData", - "nodeType": "VariableDeclaration", - "scope": 8044, - "src": "1327:49:36", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ReferenceData_$8676_memory_ptr", - "typeString": "struct IStdReference.ReferenceData" - }, - "typeName": { - "id": 8023, - "name": "IStdReference.ReferenceData", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 8676, - "src": "1327:27:36", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ReferenceData_$8676_storage_ptr", - "typeString": "struct IStdReference.ReferenceData" - } - }, - "visibility": "internal" - } - ], - "id": 8027, - "initialValue": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 8025, - "name": "_getReferenceData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8128, - "src": "1379:17:36", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_struct$_ReferenceData_$8676_memory_ptr_$", - "typeString": "function () view returns (struct IStdReference.ReferenceData memory)" - } - }, - "id": 8026, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1379:19:36", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_struct$_ReferenceData_$8676_memory_ptr", - "typeString": "struct IStdReference.ReferenceData memory" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1327:71:36" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 8030, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 8028, - "name": "interval", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8015, - "src": "1412:8:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 8029, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1424:1:36", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1412:13:36", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 8035, - "nodeType": "IfStatement", - "src": "1408:70:36", - "trueBody": { - "id": 8034, - "nodeType": "Block", - "src": "1427:51:36", - "statements": [ - { - "expression": { - "expression": { - "id": 8031, - "name": "latestBandData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8024, - "src": "1448:14:36", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ReferenceData_$8676_memory_ptr", - "typeString": "struct IStdReference.ReferenceData memory" - } - }, - "id": 8032, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "rate", - "nodeType": "MemberAccess", - "referencedDeclaration": 8671, - "src": "1448:19:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 8020, - "id": 8033, - "nodeType": "Return", - "src": "1441:26:36" - } - ] - } - }, - { - "expression": { - "arguments": [ - { - "id": 8037, - "name": "interval", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8015, - "src": "1505:8:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "expression": { - "id": 8038, - "name": "latestBandData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8024, - "src": "1515:14:36", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ReferenceData_$8676_memory_ptr", - "typeString": "struct IStdReference.ReferenceData memory" - } - }, - "id": 8039, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "rate", - "nodeType": "MemberAccess", - "referencedDeclaration": 8671, - "src": "1515:19:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "expression": { - "id": 8040, - "name": "latestBandData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8024, - "src": "1536:14:36", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ReferenceData_$8676_memory_ptr", - "typeString": "struct IStdReference.ReferenceData memory" - } - }, - "id": 8041, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "lastUpdatedBase", - "nodeType": "MemberAccess", - "referencedDeclaration": 8673, - "src": "1536:30:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 8036, - "name": "_cacheTwap", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9180, - "src": "1494:10:36", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) returns (uint256)" - } - }, - "id": 8042, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1494:73:36", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 8020, - "id": 8043, - "nodeType": "Return", - "src": "1487:80:36" - } - ] - }, - "functionSelector": "1d1a111a", - "id": 8045, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "cacheTwap", - "nodeType": "FunctionDefinition", - "overrides": { - "id": 8017, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "1290:8:36" - }, - "parameters": { - "id": 8016, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 8015, - "mutability": "mutable", - "name": "interval", - "nodeType": "VariableDeclaration", - "scope": 8045, - "src": "1263:16:36", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 8014, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1263:7:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "1262:18:36" - }, - "returnParameters": { - "id": 8020, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 8019, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 8045, - "src": "1308:7:36", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 8018, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1308:7:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "1307:9:36" - }, - "scope": 8129, - "src": "1244:330:36", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "baseFunctions": [ - 8665 - ], - "body": { - "id": 8076, - "nodeType": "Block", - "src": "1691:261:36", - "statements": [ - { - "assignments": [ - 8056 - ], - "declarations": [ - { - "constant": false, - "id": 8056, - "mutability": "mutable", - "name": "latestBandData", - "nodeType": "VariableDeclaration", - "scope": 8076, - "src": "1701:49:36", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ReferenceData_$8676_memory_ptr", - "typeString": "struct IStdReference.ReferenceData" - }, - "typeName": { - "id": 8055, - "name": "IStdReference.ReferenceData", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 8676, - "src": "1701:27:36", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ReferenceData_$8676_storage_ptr", - "typeString": "struct IStdReference.ReferenceData" - } - }, - "visibility": "internal" - } - ], - "id": 8059, - "initialValue": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 8057, - "name": "_getReferenceData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8128, - "src": "1753:17:36", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_struct$_ReferenceData_$8676_memory_ptr_$", - "typeString": "function () view returns (struct IStdReference.ReferenceData memory)" - } - }, - "id": 8058, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1753:19:36", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_struct$_ReferenceData_$8676_memory_ptr", - "typeString": "struct IStdReference.ReferenceData memory" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1701:71:36" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 8062, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 8060, - "name": "interval", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8047, - "src": "1786:8:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 8061, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1798:1:36", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1786:13:36", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 8067, - "nodeType": "IfStatement", - "src": "1782:70:36", - "trueBody": { - "id": 8066, - "nodeType": "Block", - "src": "1801:51:36", - "statements": [ - { - "expression": { - "expression": { - "id": 8063, - "name": "latestBandData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8056, - "src": "1822:14:36", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ReferenceData_$8676_memory_ptr", - "typeString": "struct IStdReference.ReferenceData memory" - } - }, - "id": 8064, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "rate", - "nodeType": "MemberAccess", - "referencedDeclaration": 8671, - "src": "1822:19:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 8052, - "id": 8065, - "nodeType": "Return", - "src": "1815:26:36" - } - ] - } - }, - { - "expression": { - "arguments": [ - { - "id": 8069, - "name": "interval", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8047, - "src": "1883:8:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "expression": { - "id": 8070, - "name": "latestBandData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8056, - "src": "1893:14:36", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ReferenceData_$8676_memory_ptr", - "typeString": "struct IStdReference.ReferenceData memory" - } - }, - "id": 8071, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "rate", - "nodeType": "MemberAccess", - "referencedDeclaration": 8671, - "src": "1893:19:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "expression": { - "id": 8072, - "name": "latestBandData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8056, - "src": "1914:14:36", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ReferenceData_$8676_memory_ptr", - "typeString": "struct IStdReference.ReferenceData memory" - } - }, - "id": 8073, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "lastUpdatedBase", - "nodeType": "MemberAccess", - "referencedDeclaration": 8673, - "src": "1914:30:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 8068, - "name": "_getCachedTwap", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9206, - "src": "1868:14:36", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) view returns (uint256)" - } - }, - "id": 8074, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1868:77:36", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 8052, - "id": 8075, - "nodeType": "Return", - "src": "1861:84:36" - } - ] - }, - "functionSelector": "e7572230", - "id": 8077, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getPrice", - "nodeType": "FunctionDefinition", - "overrides": { - "id": 8049, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "1664:8:36" - }, - "parameters": { - "id": 8048, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 8047, - "mutability": "mutable", - "name": "interval", - "nodeType": "VariableDeclaration", - "scope": 8077, - "src": "1634:16:36", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 8046, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1634:7:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "1633:18:36" - }, - "returnParameters": { - "id": 8052, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 8051, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 8077, - "src": "1682:7:36", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 8050, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1682:7:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "1681:9:36" - }, - "scope": 8129, - "src": "1616:336:36", - "stateMutability": "view", - "virtual": false, - "visibility": "public" - }, - { - "baseFunctions": [ - 8657 - ], - "body": { - "id": 8085, - "nodeType": "Block", - "src": "2053:191:36", - "statements": [ - { - "expression": { - "hexValue": "3138", - "id": 8083, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2235:2:36", - "typeDescriptions": { - "typeIdentifier": "t_rational_18_by_1", - "typeString": "int_const 18" - }, - "value": "18" - }, - "functionReturnParameters": 8082, - "id": 8084, - "nodeType": "Return", - "src": "2228:9:36" - } - ] - }, - "functionSelector": "313ce567", - "id": 8086, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "decimals", - "nodeType": "FunctionDefinition", - "overrides": { - "id": 8079, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "2028:8:36" - }, - "parameters": { - "id": 8078, - "nodeType": "ParameterList", - "parameters": [], - "src": "2011:2:36" - }, - "returnParameters": { - "id": 8082, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 8081, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 8086, - "src": "2046:5:36", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 8080, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "2046:5:36", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "visibility": "internal" - } - ], - "src": "2045:7:36" - }, - "scope": 8129, - "src": "1994:250:36", - "stateMutability": "pure", - "virtual": false, - "visibility": "external" - }, - { - "body": { - "id": 8127, - "nodeType": "Block", - "src": "2374:427:36", - "statements": [ - { - "assignments": [ - 8094 - ], - "declarations": [ - { - "constant": false, - "id": 8094, - "mutability": "mutable", - "name": "bandData", - "nodeType": "VariableDeclaration", - "scope": 8127, - "src": "2384:43:36", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ReferenceData_$8676_memory_ptr", - "typeString": "struct IStdReference.ReferenceData" - }, - "typeName": { - "id": 8093, - "name": "IStdReference.ReferenceData", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 8676, - "src": "2384:27:36", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ReferenceData_$8676_storage_ptr", - "typeString": "struct IStdReference.ReferenceData" - } - }, - "visibility": "internal" - } - ], - "id": 8100, - "initialValue": { - "arguments": [ - { - "id": 8097, - "name": "baseAsset", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7961, - "src": "2454:9:36", - "typeDescriptions": { - "typeIdentifier": "t_string_storage", - "typeString": "string storage ref" - } - }, - { - "id": 8098, - "name": "QUOTE_ASSET", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7959, - "src": "2465:11:36", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_storage", - "typeString": "string storage ref" - }, - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - ], - "expression": { - "id": 8095, - "name": "stdRef", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7963, - "src": "2430:6:36", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IStdReference_$8700", - "typeString": "contract IStdReference" - } - }, - "id": 8096, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "getReferenceData", - "nodeType": "MemberAccess", - "referencedDeclaration": 8686, - "src": "2430:23:36", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_struct$_ReferenceData_$8676_memory_ptr_$", - "typeString": "function (string memory,string memory) view external returns (struct IStdReference.ReferenceData memory)" - } - }, - "id": 8099, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2430:47:36", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_struct$_ReferenceData_$8676_memory_ptr", - "typeString": "struct IStdReference.ReferenceData memory" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2384:93:36" - }, - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 8105, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 8102, - "name": "bandData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8094, - "src": "2543:8:36", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ReferenceData_$8676_memory_ptr", - "typeString": "struct IStdReference.ReferenceData memory" - } - }, - "id": 8103, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "lastUpdatedQuote", - "nodeType": "MemberAccess", - "referencedDeclaration": 8675, - "src": "2543:25:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 8104, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2571:1:36", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2543:29:36", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "4250465f54515a", - "id": 8106, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2574:9:36", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_7007881aea3035103c726ad6de23cff58710f02840346b45d710ea567cec464e", - "typeString": "literal_string \"BPF_TQZ\"" - }, - "value": "BPF_TQZ" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_7007881aea3035103c726ad6de23cff58710f02840346b45d710ea567cec464e", - "typeString": "literal_string \"BPF_TQZ\"" - } - ], - "id": 8101, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "2535:7:36", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 8107, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2535:49:36", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 8108, - "nodeType": "ExpressionStatement", - "src": "2535:49:36" - }, - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 8113, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 8110, - "name": "bandData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8094, - "src": "2649:8:36", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ReferenceData_$8676_memory_ptr", - "typeString": "struct IStdReference.ReferenceData memory" - } - }, - "id": 8111, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "lastUpdatedBase", - "nodeType": "MemberAccess", - "referencedDeclaration": 8673, - "src": "2649:24:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 8112, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2676:1:36", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2649:28:36", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "4250465f54425a", - "id": 8114, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2679:9:36", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_78abdc1dd325317e1a3b236dcd21ae6f586aa48c5af52ad53924ac4068a35a88", - "typeString": "literal_string \"BPF_TBZ\"" - }, - "value": "BPF_TBZ" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_78abdc1dd325317e1a3b236dcd21ae6f586aa48c5af52ad53924ac4068a35a88", - "typeString": "literal_string \"BPF_TBZ\"" - } - ], - "id": 8109, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "2641:7:36", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 8115, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2641:48:36", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 8116, - "nodeType": "ExpressionStatement", - "src": "2641:48:36" - }, - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 8121, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 8118, - "name": "bandData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8094, - "src": "2740:8:36", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ReferenceData_$8676_memory_ptr", - "typeString": "struct IStdReference.ReferenceData memory" - } - }, - "id": 8119, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "rate", - "nodeType": "MemberAccess", - "referencedDeclaration": 8671, - "src": "2740:13:36", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 8120, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2756:1:36", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2740:17:36", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "4250465f4950", - "id": 8122, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2759:8:36", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_76dba96b4bef71a0739a205f75fa3ce7f5d7f60125954e29b5c40229e8718c49", - "typeString": "literal_string \"BPF_IP\"" - }, - "value": "BPF_IP" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_76dba96b4bef71a0739a205f75fa3ce7f5d7f60125954e29b5c40229e8718c49", - "typeString": "literal_string \"BPF_IP\"" - } - ], - "id": 8117, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "2732:7:36", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 8123, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2732:36:36", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 8124, - "nodeType": "ExpressionStatement", - "src": "2732:36:36" - }, - { - "expression": { - "id": 8125, - "name": "bandData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8094, - "src": "2786:8:36", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ReferenceData_$8676_memory_ptr", - "typeString": "struct IStdReference.ReferenceData memory" - } - }, - "functionReturnParameters": 8090, - "id": 8126, - "nodeType": "Return", - "src": "2779:15:36" - } - ] - }, - "id": 8128, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_getReferenceData", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 8087, - "nodeType": "ParameterList", - "parameters": [], - "src": "2312:2:36" - }, - "returnParameters": { - "id": 8090, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 8089, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 8128, - "src": "2338:34:36", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ReferenceData_$8676_memory_ptr", - "typeString": "struct IStdReference.ReferenceData" - }, - "typeName": { - "id": 8088, - "name": "IStdReference.ReferenceData", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 8676, - "src": "2338:27:36", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ReferenceData_$8676_storage_ptr", - "typeString": "struct IStdReference.ReferenceData" - } - }, - "visibility": "internal" - } - ], - "src": "2337:36:36" - }, - "scope": 8129, - "src": "2286:515:36", - "stateMutability": "view", - "virtual": false, - "visibility": "internal" - } - ], - "scope": 8130, - "src": "409:2394:36" - } - ], - "src": "40:2764:36" - }, - "id": 36 - }, - "contracts/ChainlinkPriceFeed.sol": { - "ast": { - "absolutePath": "contracts/ChainlinkPriceFeed.sol", - "exportedSymbols": { - "Address": [ - 696 - ], - "AggregatorV3Interface": [ - 45 - ], - "BlockContext": [ - 8636 - ], - "CachedTwap": [ - 9207 - ], - "ChainlinkPriceFeed": [ - 8396 - ], - "IPriceFeed": [ - 8666 - ] - }, - "id": 8397, - "license": "MIT License", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 8131, - "literals": [ - "solidity", - "0.7", - ".6" - ], - "nodeType": "PragmaDirective", - "src": "40:22:37" - }, - { - "absolutePath": "@openzeppelin/contracts/utils/Address.sol", - "file": "@openzeppelin/contracts/utils/Address.sol", - "id": 8133, - "nodeType": "ImportDirective", - "scope": 8397, - "sourceUnit": 697, - "src": "64:68:37", - "symbolAliases": [ - { - "foreign": { - "id": 8132, - "name": "Address", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "src": "73:7:37", - "typeDescriptions": {} - } - } - ], - "unitAlias": "" - }, - { - "absolutePath": "@chainlink/contracts/src/v0.6/interfaces/AggregatorV3Interface.sol", - "file": "@chainlink/contracts/src/v0.6/interfaces/AggregatorV3Interface.sol", - "id": 8135, - "nodeType": "ImportDirective", - "scope": 8397, - "sourceUnit": 46, - "src": "133:107:37", - "symbolAliases": [ - { - "foreign": { - "id": 8134, - "name": "AggregatorV3Interface", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "src": "142:21:37", - "typeDescriptions": {} - } - } - ], - "unitAlias": "" - }, - { - "absolutePath": "contracts/interface/IPriceFeed.sol", - "file": "./interface/IPriceFeed.sol", - "id": 8137, - "nodeType": "ImportDirective", - "scope": 8397, - "sourceUnit": 8667, - "src": "241:56:37", - "symbolAliases": [ - { - "foreign": { - "id": 8136, - "name": "IPriceFeed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "src": "250:10:37", - "typeDescriptions": {} - } - } - ], - "unitAlias": "" - }, - { - "absolutePath": "contracts/base/BlockContext.sol", - "file": "./base/BlockContext.sol", - "id": 8139, - "nodeType": "ImportDirective", - "scope": 8397, - "sourceUnit": 8637, - "src": "298:55:37", - "symbolAliases": [ - { - "foreign": { - "id": 8138, - "name": "BlockContext", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "src": "307:12:37", - "typeDescriptions": {} - } - } - ], - "unitAlias": "" - }, - { - "absolutePath": "contracts/twap/CachedTwap.sol", - "file": "./twap/CachedTwap.sol", - "id": 8141, - "nodeType": "ImportDirective", - "scope": 8397, - "sourceUnit": 9208, - "src": "354:51:37", - "symbolAliases": [ - { - "foreign": { - "id": 8140, - "name": "CachedTwap", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "src": "363:10:37", - "typeDescriptions": {} - } - } - ], - "unitAlias": "" - }, - { - "abstract": false, - "baseContracts": [ - { - "baseName": { - "id": 8142, - "name": "IPriceFeed", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 8666, - "src": "438:10:37", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPriceFeed_$8666", - "typeString": "contract IPriceFeed" - } - }, - "id": 8143, - "nodeType": "InheritanceSpecifier", - "src": "438:10:37" - }, - { - "baseName": { - "id": 8144, - "name": "BlockContext", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 8636, - "src": "450:12:37", - "typeDescriptions": { - "typeIdentifier": "t_contract$_BlockContext_$8636", - "typeString": "contract BlockContext" - } - }, - "id": 8145, - "nodeType": "InheritanceSpecifier", - "src": "450:12:37" - }, - { - "baseName": { - "id": 8146, - "name": "CachedTwap", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 9207, - "src": "464:10:37", - "typeDescriptions": { - "typeIdentifier": "t_contract$_CachedTwap_$9207", - "typeString": "contract CachedTwap" - } - }, - "id": 8147, - "nodeType": "InheritanceSpecifier", - "src": "464:10:37" - } - ], - "contractDependencies": [ - 8636, - 8666, - 9207, - 9592 - ], - "contractKind": "contract", - "fullyImplemented": true, - "id": 8396, - "linearizedBaseContracts": [ - 8396, - 9207, - 9592, - 8636, - 8666 - ], - "name": "ChainlinkPriceFeed", - "nodeType": "ContractDefinition", - "nodes": [ - { - "id": 8150, - "libraryName": { - "id": 8148, - "name": "Address", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 696, - "src": "487:7:37", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Address_$696", - "typeString": "library Address" - } - }, - "nodeType": "UsingForDirective", - "src": "481:26:37", - "typeName": { - "id": 8149, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "499:7:37", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "constant": false, - "id": 8152, - "mutability": "immutable", - "name": "_aggregator", - "nodeType": "VariableDeclaration", - "scope": 8396, - "src": "513:51:37", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_AggregatorV3Interface_$45", - "typeString": "contract AggregatorV3Interface" - }, - "typeName": { - "id": 8151, - "name": "AggregatorV3Interface", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 45, - "src": "513:21:37", - "typeDescriptions": { - "typeIdentifier": "t_contract$_AggregatorV3Interface_$45", - "typeString": "contract AggregatorV3Interface" - } - }, - "visibility": "private" - }, - { - "body": { - "id": 8176, - "nodeType": "Block", - "src": "673:159:37", - "statements": [ - { - "expression": { - "arguments": [ - { - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "arguments": [ - { - "id": 8165, - "name": "aggregator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8154, - "src": "754:10:37", - "typeDescriptions": { - "typeIdentifier": "t_contract$_AggregatorV3Interface_$45", - "typeString": "contract AggregatorV3Interface" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_AggregatorV3Interface_$45", - "typeString": "contract AggregatorV3Interface" - } - ], - "id": 8164, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "746:7:37", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 8163, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "746:7:37", - "typeDescriptions": {} - } - }, - "id": 8166, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "746:19:37", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 8167, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "isContract", - "nodeType": "MemberAccess", - "referencedDeclaration": 420, - "src": "746:30:37", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$", - "typeString": "function (address) view returns (bool)" - } - }, - "id": 8168, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "746:32:37", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "4350465f414e43", - "id": 8169, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "780:9:37", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_eaba60f29ed8c738621a13d91457209a620927c649c3e1a00e7e8b220fcbbe76", - "typeString": "literal_string \"CPF_ANC\"" - }, - "value": "CPF_ANC" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_eaba60f29ed8c738621a13d91457209a620927c649c3e1a00e7e8b220fcbbe76", - "typeString": "literal_string \"CPF_ANC\"" - } - ], - "id": 8162, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "738:7:37", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 8170, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "738:52:37", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 8171, - "nodeType": "ExpressionStatement", - "src": "738:52:37" - }, - { - "expression": { - "id": 8174, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 8172, - "name": "_aggregator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8152, - "src": "801:11:37", - "typeDescriptions": { - "typeIdentifier": "t_contract$_AggregatorV3Interface_$45", - "typeString": "contract AggregatorV3Interface" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 8173, - "name": "aggregator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8154, - "src": "815:10:37", - "typeDescriptions": { - "typeIdentifier": "t_contract$_AggregatorV3Interface_$45", - "typeString": "contract AggregatorV3Interface" - } - }, - "src": "801:24:37", - "typeDescriptions": { - "typeIdentifier": "t_contract$_AggregatorV3Interface_$45", - "typeString": "contract AggregatorV3Interface" - } - }, - "id": 8175, - "nodeType": "ExpressionStatement", - "src": "801:24:37" - } - ] - }, - "id": 8177, - "implemented": true, - "kind": "constructor", - "modifiers": [ - { - "arguments": [ - { - "id": 8159, - "name": "cacheTwapInterval", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8156, - "src": "654:17:37", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - } - ], - "id": 8160, - "modifierName": { - "id": 8158, - "name": "CachedTwap", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9207, - "src": "643:10:37", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_CachedTwap_$9207_$", - "typeString": "type(contract CachedTwap)" - } - }, - "nodeType": "ModifierInvocation", - "src": "643:29:37" - } - ], - "name": "", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 8157, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 8154, - "mutability": "mutable", - "name": "aggregator", - "nodeType": "VariableDeclaration", - "scope": 8177, - "src": "583:32:37", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_AggregatorV3Interface_$45", - "typeString": "contract AggregatorV3Interface" - }, - "typeName": { - "id": 8153, - "name": "AggregatorV3Interface", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 45, - "src": "583:21:37", - "typeDescriptions": { - "typeIdentifier": "t_contract$_AggregatorV3Interface_$45", - "typeString": "contract AggregatorV3Interface" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 8156, - "mutability": "mutable", - "name": "cacheTwapInterval", - "nodeType": "VariableDeclaration", - "scope": 8177, - "src": "617:24:37", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - }, - "typeName": { - "id": 8155, - "name": "uint80", - "nodeType": "ElementaryTypeName", - "src": "617:6:37", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - }, - "visibility": "internal" - } - ], - "src": "582:60:37" - }, - "returnParameters": { - "id": 8161, - "nodeType": "ParameterList", - "parameters": [], - "src": "673:0:37" - }, - "scope": 8396, - "src": "571:261:37", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - { - "body": { - "id": 8193, - "nodeType": "Block", - "src": "905:137:37", - "statements": [ - { - "assignments": [ - null, - 8182, - 8184 - ], - "declarations": [ - null, - { - "constant": false, - "id": 8182, - "mutability": "mutable", - "name": "latestPrice", - "nodeType": "VariableDeclaration", - "scope": 8193, - "src": "918:19:37", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 8181, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "918:7:37", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 8184, - "mutability": "mutable", - "name": "latestTimestamp", - "nodeType": "VariableDeclaration", - "scope": 8193, - "src": "939:23:37", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 8183, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "939:7:37", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 8187, - "initialValue": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 8185, - "name": "_getLatestRoundData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8327, - "src": "966:19:37", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_uint80_$_t_uint256_$_t_uint256_$", - "typeString": "function () view returns (uint80,uint256,uint256)" - } - }, - "id": 8186, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "966:21:37", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint80_$_t_uint256_$_t_uint256_$", - "typeString": "tuple(uint80,uint256,uint256)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "915:72:37" - }, - { - "expression": { - "arguments": [ - { - "id": 8189, - "name": "latestPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8182, - "src": "1006:11:37", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 8190, - "name": "latestTimestamp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8184, - "src": "1019:15:37", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 8188, - "name": "_update", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9324, - "src": "998:7:37", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$", - "typeString": "function (uint256,uint256)" - } - }, - "id": 8191, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "998:37:37", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 8192, - "nodeType": "ExpressionStatement", - "src": "998:37:37" - } - ] - }, - "documentation": { - "id": 8178, - "nodeType": "StructuredDocumentation", - "src": "838:35:37", - "text": "@dev anyone can help update it." - }, - "functionSelector": "a2e62045", - "id": 8194, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "update", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 8179, - "nodeType": "ParameterList", - "parameters": [], - "src": "893:2:37" - }, - "returnParameters": { - "id": 8180, - "nodeType": "ParameterList", - "parameters": [], - "src": "905:0:37" - }, - "scope": 8396, - "src": "878:164:37", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "baseFunctions": [ - 8652 - ], - "body": { - "id": 8228, - "nodeType": "Block", - "src": "1121:254:37", - "statements": [ - { - "assignments": [ - 8203, - 8205, - 8207 - ], - "declarations": [ - { - "constant": false, - "id": 8203, - "mutability": "mutable", - "name": "round", - "nodeType": "VariableDeclaration", - "scope": 8228, - "src": "1132:12:37", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - }, - "typeName": { - "id": 8202, - "name": "uint80", - "nodeType": "ElementaryTypeName", - "src": "1132:6:37", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 8205, - "mutability": "mutable", - "name": "latestPrice", - "nodeType": "VariableDeclaration", - "scope": 8228, - "src": "1146:19:37", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 8204, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1146:7:37", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 8207, - "mutability": "mutable", - "name": "latestTimestamp", - "nodeType": "VariableDeclaration", - "scope": 8228, - "src": "1167:23:37", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 8206, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1167:7:37", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 8210, - "initialValue": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 8208, - "name": "_getLatestRoundData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8327, - "src": "1194:19:37", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_uint80_$_t_uint256_$_t_uint256_$", - "typeString": "function () view returns (uint80,uint256,uint256)" - } - }, - "id": 8209, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1194:21:37", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint80_$_t_uint256_$_t_uint256_$", - "typeString": "tuple(uint80,uint256,uint256)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1131:84:37" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 8217, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 8213, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 8211, - "name": "interval", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8196, - "src": "1230:8:37", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 8212, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1242:1:37", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1230:13:37", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - }, - "id": 8216, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 8214, - "name": "round", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8203, - "src": "1247:5:37", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 8215, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1256:1:37", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1247:10:37", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "1230:27:37", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 8221, - "nodeType": "IfStatement", - "src": "1226:76:37", - "trueBody": { - "id": 8220, - "nodeType": "Block", - "src": "1259:43:37", - "statements": [ - { - "expression": { - "id": 8218, - "name": "latestPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8205, - "src": "1280:11:37", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 8201, - "id": 8219, - "nodeType": "Return", - "src": "1273:18:37" - } - ] - } - }, - { - "expression": { - "arguments": [ - { - "id": 8223, - "name": "interval", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8196, - "src": "1329:8:37", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 8224, - "name": "latestPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8205, - "src": "1339:11:37", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 8225, - "name": "latestTimestamp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8207, - "src": "1352:15:37", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 8222, - "name": "_cacheTwap", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9180, - "src": "1318:10:37", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) returns (uint256)" - } - }, - "id": 8226, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1318:50:37", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 8201, - "id": 8227, - "nodeType": "Return", - "src": "1311:57:37" - } - ] - }, - "functionSelector": "1d1a111a", - "id": 8229, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "cacheTwap", - "nodeType": "FunctionDefinition", - "overrides": { - "id": 8198, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "1094:8:37" - }, - "parameters": { - "id": 8197, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 8196, - "mutability": "mutable", - "name": "interval", - "nodeType": "VariableDeclaration", - "scope": 8229, - "src": "1067:16:37", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 8195, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1067:7:37", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "1066:18:37" - }, - "returnParameters": { - "id": 8201, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 8200, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 8229, - "src": "1112:7:37", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 8199, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1112:7:37", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "1111:9:37" - }, - "scope": 8396, - "src": "1048:327:37", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "baseFunctions": [ - 8657 - ], - "body": { - "id": 8239, - "nodeType": "Block", - "src": "1440:46:37", - "statements": [ - { - "expression": { - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "id": 8235, - "name": "_aggregator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8152, - "src": "1457:11:37", - "typeDescriptions": { - "typeIdentifier": "t_contract$_AggregatorV3Interface_$45", - "typeString": "contract AggregatorV3Interface" - } - }, - "id": 8236, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "decimals", - "nodeType": "MemberAccess", - "referencedDeclaration": 6, - "src": "1457:20:37", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", - "typeString": "function () view external returns (uint8)" - } - }, - "id": 8237, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1457:22:37", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "functionReturnParameters": 8234, - "id": 8238, - "nodeType": "Return", - "src": "1450:29:37" - } - ] - }, - "functionSelector": "313ce567", - "id": 8240, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "decimals", - "nodeType": "FunctionDefinition", - "overrides": { - "id": 8231, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "1415:8:37" - }, - "parameters": { - "id": 8230, - "nodeType": "ParameterList", - "parameters": [], - "src": "1398:2:37" - }, - "returnParameters": { - "id": 8234, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 8233, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 8240, - "src": "1433:5:37", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 8232, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "1433:5:37", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "visibility": "internal" - } - ], - "src": "1432:7:37" - }, - "scope": 8396, - "src": "1381:105:37", - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "baseFunctions": [ - 8665 - ], - "body": { - "id": 8274, - "nodeType": "Block", - "src": "1569:259:37", - "statements": [ - { - "assignments": [ - 8249, - 8251, - 8253 - ], - "declarations": [ - { - "constant": false, - "id": 8249, - "mutability": "mutable", - "name": "round", - "nodeType": "VariableDeclaration", - "scope": 8274, - "src": "1580:12:37", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - }, - "typeName": { - "id": 8248, - "name": "uint80", - "nodeType": "ElementaryTypeName", - "src": "1580:6:37", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 8251, - "mutability": "mutable", - "name": "latestPrice", - "nodeType": "VariableDeclaration", - "scope": 8274, - "src": "1594:19:37", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 8250, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1594:7:37", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 8253, - "mutability": "mutable", - "name": "latestTimestamp", - "nodeType": "VariableDeclaration", - "scope": 8274, - "src": "1615:23:37", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 8252, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1615:7:37", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 8256, - "initialValue": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 8254, - "name": "_getLatestRoundData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8327, - "src": "1642:19:37", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_uint80_$_t_uint256_$_t_uint256_$", - "typeString": "function () view returns (uint80,uint256,uint256)" - } - }, - "id": 8255, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1642:21:37", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint80_$_t_uint256_$_t_uint256_$", - "typeString": "tuple(uint80,uint256,uint256)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1579:84:37" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 8263, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 8259, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 8257, - "name": "interval", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8242, - "src": "1678:8:37", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 8258, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1690:1:37", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1678:13:37", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - }, - "id": 8262, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 8260, - "name": "round", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8249, - "src": "1695:5:37", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 8261, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1704:1:37", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1695:10:37", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "1678:27:37", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 8267, - "nodeType": "IfStatement", - "src": "1674:76:37", - "trueBody": { - "id": 8266, - "nodeType": "Block", - "src": "1707:43:37", - "statements": [ - { - "expression": { - "id": 8264, - "name": "latestPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8251, - "src": "1728:11:37", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 8247, - "id": 8265, - "nodeType": "Return", - "src": "1721:18:37" - } - ] - } - }, - { - "expression": { - "arguments": [ - { - "id": 8269, - "name": "interval", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8242, - "src": "1782:8:37", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 8270, - "name": "latestPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8251, - "src": "1792:11:37", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 8271, - "name": "latestTimestamp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8253, - "src": "1805:15:37", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 8268, - "name": "_getCachedTwap", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9206, - "src": "1767:14:37", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) view returns (uint256)" - } - }, - "id": 8272, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1767:54:37", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 8247, - "id": 8273, - "nodeType": "Return", - "src": "1760:61:37" - } - ] - }, - "functionSelector": "e7572230", - "id": 8275, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getPrice", - "nodeType": "FunctionDefinition", - "overrides": { - "id": 8244, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "1542:8:37" - }, - "parameters": { - "id": 8243, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 8242, - "mutability": "mutable", - "name": "interval", - "nodeType": "VariableDeclaration", - "scope": 8275, - "src": "1510:16:37", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 8241, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1510:7:37", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "1509:18:37" - }, - "returnParameters": { - "id": 8247, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 8246, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 8275, - "src": "1560:7:37", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 8245, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1560:7:37", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "1559:9:37" - }, - "scope": 8396, - "src": "1492:336:37", - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "body": { - "id": 8326, - "nodeType": "Block", - "src": "1998:368:37", - "statements": [ - { - "assignments": [ - 8285, - 8287, - null, - 8289, - null - ], - "declarations": [ - { - "constant": false, - "id": 8285, - "mutability": "mutable", - "name": "round", - "nodeType": "VariableDeclaration", - "scope": 8326, - "src": "2009:12:37", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - }, - "typeName": { - "id": 8284, - "name": "uint80", - "nodeType": "ElementaryTypeName", - "src": "2009:6:37", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 8287, - "mutability": "mutable", - "name": "latestPrice", - "nodeType": "VariableDeclaration", - "scope": 8326, - "src": "2023:18:37", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "typeName": { - "id": 8286, - "name": "int256", - "nodeType": "ElementaryTypeName", - "src": "2023:6:37", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "visibility": "internal" - }, - null, - { - "constant": false, - "id": 8289, - "mutability": "mutable", - "name": "latestTimestamp", - "nodeType": "VariableDeclaration", - "scope": 8326, - "src": "2045:23:37", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 8288, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2045:7:37", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - null - ], - "id": 8293, - "initialValue": { - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "id": 8290, - "name": "_aggregator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8152, - "src": "2074:11:37", - "typeDescriptions": { - "typeIdentifier": "t_contract$_AggregatorV3Interface_$45", - "typeString": "contract AggregatorV3Interface" - } - }, - "id": 8291, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "latestRoundData", - "nodeType": "MemberAccess", - "referencedDeclaration": 44, - "src": "2074:27:37", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$__$returns$_t_uint80_$_t_int256_$_t_uint256_$_t_uint256_$_t_uint80_$", - "typeString": "function () view external returns (uint80,int256,uint256,uint256,uint80)" - } - }, - "id": 8292, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2074:29:37", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint80_$_t_int256_$_t_uint256_$_t_uint256_$_t_uint80_$", - "typeString": "tuple(uint80,int256,uint256,uint256,uint80)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2008:95:37" - }, - { - "expression": { - "id": 8299, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 8294, - "name": "finalPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8280, - "src": "2113:10:37", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 8297, - "name": "latestPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8287, - "src": "2134:11:37", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - ], - "id": 8296, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2126:7:37", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 8295, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2126:7:37", - "typeDescriptions": {} - } - }, - "id": 8298, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2126:20:37", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2113:33:37", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 8300, - "nodeType": "ExpressionStatement", - "src": "2113:33:37" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "id": 8303, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 8301, - "name": "latestPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8287, - "src": "2160:11:37", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "hexValue": "30", - "id": 8302, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2174:1:37", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2160:15:37", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 8320, - "nodeType": "IfStatement", - "src": "2156:151:37", - "trueBody": { - "id": 8319, - "nodeType": "Block", - "src": "2177:130:37", - "statements": [ - { - "expression": { - "arguments": [ - { - "id": 8305, - "name": "round", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8285, - "src": "2213:5:37", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - ], - "id": 8304, - "name": "_requireEnoughHistory", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8395, - "src": "2191:21:37", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint80_$returns$__$", - "typeString": "function (uint80) pure" - } - }, - "id": 8306, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2191:28:37", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 8307, - "nodeType": "ExpressionStatement", - "src": "2191:28:37" - }, - { - "expression": { - "id": 8317, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "components": [ - { - "id": 8308, - "name": "round", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8285, - "src": "2234:5:37", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - }, - { - "id": 8309, - "name": "finalPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8280, - "src": "2241:10:37", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 8310, - "name": "latestTimestamp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8289, - "src": "2253:15:37", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 8311, - "isConstant": false, - "isInlineArray": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "TupleExpression", - "src": "2233:36:37", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint80_$_t_uint256_$_t_uint256_$", - "typeString": "tuple(uint80,uint256,uint256)" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - }, - "id": 8315, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 8313, - "name": "round", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8285, - "src": "2286:5:37", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "hexValue": "31", - "id": 8314, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2294:1:37", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "2286:9:37", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - ], - "id": 8312, - "name": "_getRoundData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8382, - "src": "2272:13:37", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_uint80_$returns$_t_uint80_$_t_uint256_$_t_uint256_$", - "typeString": "function (uint80) view returns (uint80,uint256,uint256)" - } - }, - "id": 8316, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2272:24:37", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint80_$_t_uint256_$_t_uint256_$", - "typeString": "tuple(uint80,uint256,uint256)" - } - }, - "src": "2233:63:37", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 8318, - "nodeType": "ExpressionStatement", - "src": "2233:63:37" - } - ] - } - }, - { - "expression": { - "components": [ - { - "id": 8321, - "name": "round", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8285, - "src": "2324:5:37", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - }, - { - "id": 8322, - "name": "finalPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8280, - "src": "2331:10:37", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 8323, - "name": "latestTimestamp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8289, - "src": "2343:15:37", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 8324, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "2323:36:37", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint80_$_t_uint256_$_t_uint256_$", - "typeString": "tuple(uint80,uint256,uint256)" - } - }, - "functionReturnParameters": 8283, - "id": 8325, - "nodeType": "Return", - "src": "2316:43:37" - } - ] - }, - "id": 8327, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_getLatestRoundData", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 8276, - "nodeType": "ParameterList", - "parameters": [], - "src": "1862:2:37" - }, - "returnParameters": { - "id": 8283, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 8278, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 8327, - "src": "1924:6:37", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - }, - "typeName": { - "id": 8277, - "name": "uint80", - "nodeType": "ElementaryTypeName", - "src": "1924:6:37", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 8280, - "mutability": "mutable", - "name": "finalPrice", - "nodeType": "VariableDeclaration", - "scope": 8327, - "src": "1944:18:37", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 8279, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1944:7:37", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 8282, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 8327, - "src": "1976:7:37", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 8281, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1976:7:37", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "1910:83:37" - }, - "scope": 8396, - "src": "1834:532:37", - "stateMutability": "view", - "virtual": false, - "visibility": "private" - }, - { - "body": { - "id": 8381, - "nodeType": "Block", - "src": "2532:379:37", - "statements": [ - { - "assignments": [ - 8339, - 8341, - null, - 8343, - null - ], - "declarations": [ - { - "constant": false, - "id": 8339, - "mutability": "mutable", - "name": "round", - "nodeType": "VariableDeclaration", - "scope": 8381, - "src": "2543:12:37", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - }, - "typeName": { - "id": 8338, - "name": "uint80", - "nodeType": "ElementaryTypeName", - "src": "2543:6:37", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 8341, - "mutability": "mutable", - "name": "latestPrice", - "nodeType": "VariableDeclaration", - "scope": 8381, - "src": "2557:18:37", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "typeName": { - "id": 8340, - "name": "int256", - "nodeType": "ElementaryTypeName", - "src": "2557:6:37", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "visibility": "internal" - }, - null, - { - "constant": false, - "id": 8343, - "mutability": "mutable", - "name": "latestTimestamp", - "nodeType": "VariableDeclaration", - "scope": 8381, - "src": "2579:23:37", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 8342, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2579:7:37", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - null - ], - "id": 8348, - "initialValue": { - "arguments": [ - { - "id": 8346, - "name": "_round", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8329, - "src": "2633:6:37", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - ], - "expression": { - "id": 8344, - "name": "_aggregator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8152, - "src": "2608:11:37", - "typeDescriptions": { - "typeIdentifier": "t_contract$_AggregatorV3Interface_$45", - "typeString": "contract AggregatorV3Interface" - } - }, - "id": 8345, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "getRoundData", - "nodeType": "MemberAccess", - "referencedDeclaration": 31, - "src": "2608:24:37", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_uint80_$returns$_t_uint80_$_t_int256_$_t_uint256_$_t_uint256_$_t_uint80_$", - "typeString": "function (uint80) view external returns (uint80,int256,uint256,uint256,uint80)" - } - }, - "id": 8347, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2608:32:37", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint80_$_t_int256_$_t_uint256_$_t_uint256_$_t_uint80_$", - "typeString": "tuple(uint80,int256,uint256,uint256,uint80)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2542:98:37" - }, - { - "body": { - "id": 8371, - "nodeType": "Block", - "src": "2674:168:37", - "statements": [ - { - "expression": { - "arguments": [ - { - "id": 8353, - "name": "round", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8339, - "src": "2710:5:37", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - ], - "id": 8352, - "name": "_requireEnoughHistory", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8395, - "src": "2688:21:37", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint80_$returns$__$", - "typeString": "function (uint80) pure" - } - }, - "id": 8354, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2688:28:37", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 8355, - "nodeType": "ExpressionStatement", - "src": "2688:28:37" - }, - { - "expression": { - "id": 8360, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 8356, - "name": "round", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8339, - "src": "2730:5:37", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - }, - "id": 8359, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 8357, - "name": "round", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8339, - "src": "2738:5:37", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "hexValue": "31", - "id": 8358, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2746:1:37", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "2738:9:37", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - }, - "src": "2730:17:37", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - }, - "id": 8361, - "nodeType": "ExpressionStatement", - "src": "2730:17:37" - }, - { - "expression": { - "id": 8369, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "components": [ - null, - { - "id": 8362, - "name": "latestPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8341, - "src": "2764:11:37", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - null, - { - "id": 8363, - "name": "latestTimestamp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8343, - "src": "2779:15:37", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - null - ], - "id": 8364, - "isConstant": false, - "isInlineArray": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "TupleExpression", - "src": "2761:36:37", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$_t_int256_$__$_t_uint256_$__$", - "typeString": "tuple(,int256,,uint256,)" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 8367, - "name": "round", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8339, - "src": "2825:5:37", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - ], - "expression": { - "id": 8365, - "name": "_aggregator", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8152, - "src": "2800:11:37", - "typeDescriptions": { - "typeIdentifier": "t_contract$_AggregatorV3Interface_$45", - "typeString": "contract AggregatorV3Interface" - } - }, - "id": 8366, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "getRoundData", - "nodeType": "MemberAccess", - "referencedDeclaration": 31, - "src": "2800:24:37", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_uint80_$returns$_t_uint80_$_t_int256_$_t_uint256_$_t_uint256_$_t_uint80_$", - "typeString": "function (uint80) view external returns (uint80,int256,uint256,uint256,uint80)" - } - }, - "id": 8368, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2800:31:37", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint80_$_t_int256_$_t_uint256_$_t_uint256_$_t_uint80_$", - "typeString": "tuple(uint80,int256,uint256,uint256,uint80)" - } - }, - "src": "2761:70:37", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 8370, - "nodeType": "ExpressionStatement", - "src": "2761:70:37" - } - ] - }, - "condition": { - "commonType": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "id": 8351, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 8349, - "name": "latestPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8341, - "src": "2657:11:37", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "hexValue": "30", - "id": 8350, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2671:1:37", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2657:15:37", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 8372, - "nodeType": "WhileStatement", - "src": "2650:192:37" - }, - { - "expression": { - "components": [ - { - "id": 8373, - "name": "round", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8339, - "src": "2859:5:37", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - }, - { - "arguments": [ - { - "id": 8376, - "name": "latestPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8341, - "src": "2874:11:37", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - ], - "id": 8375, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2866:7:37", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint256_$", - "typeString": "type(uint256)" - }, - "typeName": { - "id": 8374, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2866:7:37", - "typeDescriptions": {} - } - }, - "id": 8377, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2866:20:37", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 8378, - "name": "latestTimestamp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8343, - "src": "2888:15:37", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 8379, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "2858:46:37", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint80_$_t_uint256_$_t_uint256_$", - "typeString": "tuple(uint80,uint256,uint256)" - } - }, - "functionReturnParameters": 8337, - "id": 8380, - "nodeType": "Return", - "src": "2851:53:37" - } - ] - }, - "id": 8382, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_getRoundData", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 8330, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 8329, - "mutability": "mutable", - "name": "_round", - "nodeType": "VariableDeclaration", - "scope": 8382, - "src": "2395:13:37", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - }, - "typeName": { - "id": 8328, - "name": "uint80", - "nodeType": "ElementaryTypeName", - "src": "2395:6:37", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - }, - "visibility": "internal" - } - ], - "src": "2394:15:37" - }, - "returnParameters": { - "id": 8337, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 8332, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 8382, - "src": "2469:6:37", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - }, - "typeName": { - "id": 8331, - "name": "uint80", - "nodeType": "ElementaryTypeName", - "src": "2469:6:37", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 8334, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 8382, - "src": "2489:7:37", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 8333, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2489:7:37", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 8336, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 8382, - "src": "2510:7:37", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 8335, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2510:7:37", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "2455:72:37" - }, - "scope": 8396, - "src": "2372:539:37", - "stateMutability": "view", - "virtual": false, - "visibility": "private" - }, - { - "body": { - "id": 8394, - "nodeType": "Block", - "src": "2976:85:37", - "statements": [ - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - }, - "id": 8390, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 8388, - "name": "_round", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8384, - "src": "3032:6:37", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "hexValue": "30", - "id": 8389, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3041:1:37", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3032:10:37", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "4350465f4e4548", - "id": 8391, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3044:9:37", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_f75a53e4e93210b0162d174cf8500c736ba5be0179f1d406ef4c8a182d8fe707", - "typeString": "literal_string \"CPF_NEH\"" - }, - "value": "CPF_NEH" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_f75a53e4e93210b0162d174cf8500c736ba5be0179f1d406ef4c8a182d8fe707", - "typeString": "literal_string \"CPF_NEH\"" - } - ], - "id": 8387, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "3024:7:37", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 8392, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3024:30:37", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 8393, - "nodeType": "ExpressionStatement", - "src": "3024:30:37" - } - ] - }, - "id": 8395, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_requireEnoughHistory", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 8385, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 8384, - "mutability": "mutable", - "name": "_round", - "nodeType": "VariableDeclaration", - "scope": 8395, - "src": "2948:13:37", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - }, - "typeName": { - "id": 8383, - "name": "uint80", - "nodeType": "ElementaryTypeName", - "src": "2948:6:37", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - }, - "visibility": "internal" - } - ], - "src": "2947:15:37" - }, - "returnParameters": { - "id": 8386, - "nodeType": "ParameterList", - "parameters": [], - "src": "2976:0:37" - }, - "scope": 8396, - "src": "2917:144:37", - "stateMutability": "pure", - "virtual": false, - "visibility": "private" - } - ], - "scope": 8397, - "src": "407:2656:37" - } - ], - "src": "40:3024:37" - }, - "id": 37 - }, - "contracts/EmergencyPriceFeed.sol": { - "ast": { - "absolutePath": "contracts/EmergencyPriceFeed.sol", - "exportedSymbols": { - "Address": [ - 696 - ], - "BlockContext": [ - 8636 - ], - "EmergencyPriceFeed": [ - 8615 - ], - "FixedPoint96": [ - 4514 - ], - "FullMath": [ - 4687 - ], - "IPriceFeed": [ - 8666 - ], - "IUniswapV3Pool": [ - 3738 - ], - "TickMath": [ - 7867 - ] - }, - "id": 8616, - "license": "MIT License", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 8398, - "literals": [ - "solidity", - "0.7", - ".6" - ], - "nodeType": "PragmaDirective", - "src": "40:22:38" - }, - { - "id": 8399, - "literals": [ - "experimental", - "ABIEncoderV2" - ], - "nodeType": "PragmaDirective", - "src": "63:33:38" - }, - { - "absolutePath": "@openzeppelin/contracts/utils/Address.sol", - "file": "@openzeppelin/contracts/utils/Address.sol", - "id": 8401, - "nodeType": "ImportDirective", - "scope": 8616, - "sourceUnit": 697, - "src": "98:68:38", - "symbolAliases": [ - { - "foreign": { - "id": 8400, - "name": "Address", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "src": "107:7:38", - "typeDescriptions": {} - } - } - ], - "unitAlias": "" - }, - { - "absolutePath": "@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol", - "file": "@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol", - "id": 8403, - "nodeType": "ImportDirective", - "scope": 8616, - "sourceUnit": 3739, - "src": "167:90:38", - "symbolAliases": [ - { - "foreign": { - "id": 8402, - "name": "IUniswapV3Pool", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "src": "176:14:38", - "typeDescriptions": {} - } - } - ], - "unitAlias": "" - }, - { - "absolutePath": "@uniswap/v3-core/contracts/libraries/FixedPoint96.sol", - "file": "@uniswap/v3-core/contracts/libraries/FixedPoint96.sol", - "id": 8405, - "nodeType": "ImportDirective", - "scope": 8616, - "sourceUnit": 4515, - "src": "258:85:38", - "symbolAliases": [ - { - "foreign": { - "id": 8404, - "name": "FixedPoint96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "src": "267:12:38", - "typeDescriptions": {} - } - } - ], - "unitAlias": "" - }, - { - "absolutePath": "@uniswap/v3-core/contracts/libraries/FullMath.sol", - "file": "@uniswap/v3-core/contracts/libraries/FullMath.sol", - "id": 8407, - "nodeType": "ImportDirective", - "scope": 8616, - "sourceUnit": 4688, - "src": "344:77:38", - "symbolAliases": [ - { - "foreign": { - "id": 8406, - "name": "FullMath", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "src": "353:8:38", - "typeDescriptions": {} - } - } - ], - "unitAlias": "" - }, - { - "absolutePath": "@uniswap/v3-core/contracts/libraries/TickMath.sol", - "file": "@uniswap/v3-core/contracts/libraries/TickMath.sol", - "id": 8409, - "nodeType": "ImportDirective", - "scope": 8616, - "sourceUnit": 7868, - "src": "422:77:38", - "symbolAliases": [ - { - "foreign": { - "id": 8408, - "name": "TickMath", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "src": "431:8:38", - "typeDescriptions": {} - } - } - ], - "unitAlias": "" - }, - { - "absolutePath": "contracts/interface/IPriceFeed.sol", - "file": "./interface/IPriceFeed.sol", - "id": 8411, - "nodeType": "ImportDirective", - "scope": 8616, - "sourceUnit": 8667, - "src": "500:56:38", - "symbolAliases": [ - { - "foreign": { - "id": 8410, - "name": "IPriceFeed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "src": "509:10:38", - "typeDescriptions": {} - } - } - ], - "unitAlias": "" - }, - { - "absolutePath": "contracts/base/BlockContext.sol", - "file": "./base/BlockContext.sol", - "id": 8413, - "nodeType": "ImportDirective", - "scope": 8616, - "sourceUnit": 8637, - "src": "557:55:38", - "symbolAliases": [ - { - "foreign": { - "id": 8412, - "name": "BlockContext", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "src": "566:12:38", - "typeDescriptions": {} - } - } - ], - "unitAlias": "" - }, - { - "abstract": false, - "baseContracts": [ - { - "baseName": { - "id": 8414, - "name": "IPriceFeed", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 8666, - "src": "645:10:38", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPriceFeed_$8666", - "typeString": "contract IPriceFeed" - } - }, - "id": 8415, - "nodeType": "InheritanceSpecifier", - "src": "645:10:38" - }, - { - "baseName": { - "id": 8416, - "name": "BlockContext", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 8636, - "src": "657:12:38", - "typeDescriptions": { - "typeIdentifier": "t_contract$_BlockContext_$8636", - "typeString": "contract BlockContext" - } - }, - "id": 8417, - "nodeType": "InheritanceSpecifier", - "src": "657:12:38" - } - ], - "contractDependencies": [ - 8636, - 8666 - ], - "contractKind": "contract", - "fullyImplemented": true, - "id": 8615, - "linearizedBaseContracts": [ - 8615, - 8636, - 8666 - ], - "name": "EmergencyPriceFeed", - "nodeType": "ContractDefinition", - "nodes": [ - { - "id": 8420, - "libraryName": { - "id": 8418, - "name": "Address", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 696, - "src": "682:7:38", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Address_$696", - "typeString": "library Address" - } - }, - "nodeType": "UsingForDirective", - "src": "676:26:38", - "typeName": { - "id": 8419, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "694:7:38", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - }, - { - "constant": false, - "functionSelector": "16f0115b", - "id": 8422, - "mutability": "mutable", - "name": "pool", - "nodeType": "VariableDeclaration", - "scope": 8615, - "src": "736:19:38", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 8421, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "736:7:38", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "public" - }, - { - "body": { - "id": 8441, - "nodeType": "Block", - "src": "831:142:38", - "statements": [ - { - "expression": { - "arguments": [ - { - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "arguments": [ - { - "id": 8430, - "name": "poolArg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8424, - "src": "907:7:38", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 8429, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "899:7:38", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": { - "id": 8428, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "899:7:38", - "typeDescriptions": {} - } - }, - "id": 8431, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "899:16:38", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 8432, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "isContract", - "nodeType": "MemberAccess", - "referencedDeclaration": 420, - "src": "899:27:38", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$", - "typeString": "function (address) view returns (bool)" - } - }, - "id": 8433, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "899:29:38", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "4550465f45414e43", - "id": 8434, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "930:10:38", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_447492cad80d8a0cb85741c2e8b9f696f44a5554c155d021135870315881a1cd", - "typeString": "literal_string \"EPF_EANC\"" - }, - "value": "EPF_EANC" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_447492cad80d8a0cb85741c2e8b9f696f44a5554c155d021135870315881a1cd", - "typeString": "literal_string \"EPF_EANC\"" - } - ], - "id": 8427, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "891:7:38", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 8435, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "891:50:38", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 8436, - "nodeType": "ExpressionStatement", - "src": "891:50:38" - }, - { - "expression": { - "id": 8439, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 8437, - "name": "pool", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8422, - "src": "952:4:38", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 8438, - "name": "poolArg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8424, - "src": "959:7:38", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "952:14:38", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 8440, - "nodeType": "ExpressionStatement", - "src": "952:14:38" - } - ] - }, - "id": 8442, - "implemented": true, - "kind": "constructor", - "modifiers": [], - "name": "", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 8425, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 8424, - "mutability": "mutable", - "name": "poolArg", - "nodeType": "VariableDeclaration", - "scope": 8442, - "src": "814:15:38", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 8423, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "814:7:38", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "813:17:38" - }, - "returnParameters": { - "id": 8426, - "nodeType": "ParameterList", - "parameters": [], - "src": "831:0:38" - }, - "scope": 8615, - "src": "802:171:38", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - { - "baseFunctions": [ - 8652 - ], - "body": { - "id": 8450, - "nodeType": "Block", - "src": "1052:2:38", - "statements": [] - }, - "functionSelector": "1d1a111a", - "id": 8451, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "cacheTwap", - "nodeType": "FunctionDefinition", - "overrides": { - "id": 8446, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "1025:8:38" - }, - "parameters": { - "id": 8445, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 8444, - "mutability": "mutable", - "name": "interval", - "nodeType": "VariableDeclaration", - "scope": 8451, - "src": "998:16:38", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 8443, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "998:7:38", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "997:18:38" - }, - "returnParameters": { - "id": 8449, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 8448, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 8451, - "src": "1043:7:38", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 8447, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1043:7:38", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "1042:9:38" - }, - "scope": 8615, - "src": "979:75:38", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "baseFunctions": [ - 8665 - ], - "body": { - "id": 8473, - "nodeType": "Block", - "src": "1173:158:38", - "statements": [ - { - "assignments": [ - 8460 - ], - "declarations": [ - { - "constant": false, - "id": 8460, - "mutability": "mutable", - "name": "markTwapX96", - "nodeType": "VariableDeclaration", - "scope": 8473, - "src": "1183:19:38", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 8459, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1183:7:38", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 8468, - "initialValue": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "id": 8464, - "name": "interval", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8453, - "src": "1265:8:38", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 8463, - "name": "_toUint32", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8582, - "src": "1255:9:38", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint32_$", - "typeString": "function (uint256) pure returns (uint32)" - } - }, - "id": 8465, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1255:19:38", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - ], - "id": 8462, - "name": "_getSqrtMarkTwapX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8559, - "src": "1235:19:38", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_uint32_$returns$_t_uint160_$", - "typeString": "function (uint32) view returns (uint160)" - } - }, - "id": 8466, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1235:40:38", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - ], - "id": 8461, - "name": "_formatSqrtPriceX96ToPriceX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8598, - "src": "1205:29:38", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint160_$returns$_t_uint256_$", - "typeString": "function (uint160) pure returns (uint256)" - } - }, - "id": 8467, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1205:71:38", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1183:93:38" - }, - { - "expression": { - "arguments": [ - { - "id": 8470, - "name": "markTwapX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8460, - "src": "1312:11:38", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 8469, - "name": "_formatX96ToX10_18", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8614, - "src": "1293:18:38", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256) pure returns (uint256)" - } - }, - "id": 8471, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1293:31:38", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 8458, - "id": 8472, - "nodeType": "Return", - "src": "1286:38:38" - } - ] - }, - "functionSelector": "e7572230", - "id": 8474, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getPrice", - "nodeType": "FunctionDefinition", - "overrides": { - "id": 8455, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "1146:8:38" - }, - "parameters": { - "id": 8454, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 8453, - "mutability": "mutable", - "name": "interval", - "nodeType": "VariableDeclaration", - "scope": 8474, - "src": "1114:16:38", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 8452, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1114:7:38", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "1113:18:38" - }, - "returnParameters": { - "id": 8458, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 8457, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 8474, - "src": "1164:7:38", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 8456, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1164:7:38", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "1163:9:38" - }, - "scope": 8615, - "src": "1096:235:38", - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "baseFunctions": [ - 8657 - ], - "body": { - "id": 8482, - "nodeType": "Block", - "src": "1432:26:38", - "statements": [ - { - "expression": { - "hexValue": "3138", - "id": 8480, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1449:2:38", - "typeDescriptions": { - "typeIdentifier": "t_rational_18_by_1", - "typeString": "int_const 18" - }, - "value": "18" - }, - "functionReturnParameters": 8479, - "id": 8481, - "nodeType": "Return", - "src": "1442:9:38" - } - ] - }, - "functionSelector": "313ce567", - "id": 8483, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "decimals", - "nodeType": "FunctionDefinition", - "overrides": { - "id": 8476, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "1407:8:38" - }, - "parameters": { - "id": 8475, - "nodeType": "ParameterList", - "parameters": [], - "src": "1390:2:38" - }, - "returnParameters": { - "id": 8479, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 8478, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 8483, - "src": "1425:5:38", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 8477, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "1425:5:38", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "visibility": "internal" - } - ], - "src": "1424:7:38" - }, - "scope": 8615, - "src": "1373:85:38", - "stateMutability": "pure", - "virtual": false, - "visibility": "external" - }, - { - "body": { - "id": 8558, - "nodeType": "Block", - "src": "1754:672:38", - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "id": 8493, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 8491, - "name": "twapInterval", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8486, - "src": "1846:12:38", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "hexValue": "3130", - "id": 8492, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1861:2:38", - "typeDescriptions": { - "typeIdentifier": "t_rational_10_by_1", - "typeString": "int_const 10" - }, - "value": "10" - }, - "src": "1846:17:38", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 8505, - "nodeType": "IfStatement", - "src": "1842:148:38", - "trueBody": { - "id": 8504, - "nodeType": "Block", - "src": "1865:125:38", - "statements": [ - { - "assignments": [ - 8495, - null, - null, - null, - null, - null, - null - ], - "declarations": [ - { - "constant": false, - "id": 8495, - "mutability": "mutable", - "name": "sqrtMarkPrice", - "nodeType": "VariableDeclaration", - "scope": 8504, - "src": "1880:21:38", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "typeName": { - "id": 8494, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "1880:7:38", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "visibility": "internal" - }, - null, - null, - null, - null, - null, - null - ], - "id": 8501, - "initialValue": { - "arguments": [], - "expression": { - "argumentTypes": [], - "expression": { - "arguments": [ - { - "id": 8497, - "name": "pool", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8422, - "src": "1932:4:38", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 8496, - "name": "IUniswapV3Pool", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3738, - "src": "1917:14:38", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IUniswapV3Pool_$3738_$", - "typeString": "type(contract IUniswapV3Pool)" - } - }, - "id": 8498, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1917:20:38", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_IUniswapV3Pool_$3738", - "typeString": "contract IUniswapV3Pool" - } - }, - "id": 8499, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "slot0", - "nodeType": "MemberAccess", - "referencedDeclaration": 4131, - "src": "1917:26:38", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$__$returns$_t_uint160_$_t_int24_$_t_uint16_$_t_uint16_$_t_uint16_$_t_uint8_$_t_bool_$", - "typeString": "function () view external returns (uint160,int24,uint16,uint16,uint16,uint8,bool)" - } - }, - "id": 8500, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1917:28:38", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint160_$_t_int24_$_t_uint16_$_t_uint16_$_t_uint16_$_t_uint8_$_t_bool_$", - "typeString": "tuple(uint160,int24,uint16,uint16,uint16,uint8,bool)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1879:66:38" - }, - { - "expression": { - "id": 8502, - "name": "sqrtMarkPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8495, - "src": "1966:13:38", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "functionReturnParameters": 8490, - "id": 8503, - "nodeType": "Return", - "src": "1959:20:38" - } - ] - } - }, - { - "assignments": [ - 8510 - ], - "declarations": [ - { - "constant": false, - "id": 8510, - "mutability": "mutable", - "name": "secondsAgos", - "nodeType": "VariableDeclaration", - "scope": 8558, - "src": "1999:27:38", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr", - "typeString": "uint32[]" - }, - "typeName": { - "baseType": { - "id": 8508, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "1999:6:38", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "id": 8509, - "nodeType": "ArrayTypeName", - "src": "1999:8:38", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint32_$dyn_storage_ptr", - "typeString": "uint32[]" - } - }, - "visibility": "internal" - } - ], - "id": 8516, - "initialValue": { - "arguments": [ - { - "hexValue": "32", - "id": 8514, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2042:1:38", - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - } - ], - "id": 8513, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "NewExpression", - "src": "2029:12:38", - "typeDescriptions": { - "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint32_$dyn_memory_ptr_$", - "typeString": "function (uint256) pure returns (uint32[] memory)" - }, - "typeName": { - "baseType": { - "id": 8511, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "2033:6:38", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "id": 8512, - "nodeType": "ArrayTypeName", - "src": "2033:8:38", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint32_$dyn_storage_ptr", - "typeString": "uint32[]" - } - } - }, - "id": 8515, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2029:15:38", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr", - "typeString": "uint32[] memory" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1999:45:38" - }, - { - "expression": { - "id": 8521, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "id": 8517, - "name": "secondsAgos", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8510, - "src": "2109:11:38", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr", - "typeString": "uint32[] memory" - } - }, - "id": 8519, - "indexExpression": { - "hexValue": "30", - "id": 8518, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2121:1:38", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "2109:14:38", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 8520, - "name": "twapInterval", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8486, - "src": "2126:12:38", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "src": "2109:29:38", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "id": 8522, - "nodeType": "ExpressionStatement", - "src": "2109:29:38" - }, - { - "expression": { - "id": 8527, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "id": 8523, - "name": "secondsAgos", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8510, - "src": "2148:11:38", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr", - "typeString": "uint32[] memory" - } - }, - "id": 8525, - "indexExpression": { - "hexValue": "31", - "id": 8524, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2160:1:38", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "2148:14:38", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "30", - "id": 8526, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2165:1:38", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2148:18:38", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "id": 8528, - "nodeType": "ExpressionStatement", - "src": "2148:18:38" - }, - { - "assignments": [ - 8533, - null - ], - "declarations": [ - { - "constant": false, - "id": 8533, - "mutability": "mutable", - "name": "tickCumulatives", - "nodeType": "VariableDeclaration", - "scope": 8558, - "src": "2177:30:38", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_int56_$dyn_memory_ptr", - "typeString": "int56[]" - }, - "typeName": { - "baseType": { - "id": 8531, - "name": "int56", - "nodeType": "ElementaryTypeName", - "src": "2177:5:38", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - } - }, - "id": 8532, - "nodeType": "ArrayTypeName", - "src": "2177:7:38", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_int56_$dyn_storage_ptr", - "typeString": "int56[]" - } - }, - "visibility": "internal" - }, - null - ], - "id": 8540, - "initialValue": { - "arguments": [ - { - "id": 8538, - "name": "secondsAgos", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8510, - "src": "2242:11:38", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr", - "typeString": "uint32[] memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_uint32_$dyn_memory_ptr", - "typeString": "uint32[] memory" - } - ], - "expression": { - "arguments": [ - { - "id": 8535, - "name": "pool", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8422, - "src": "2228:4:38", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 8534, - "name": "IUniswapV3Pool", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 3738, - "src": "2213:14:38", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IUniswapV3Pool_$3738_$", - "typeString": "type(contract IUniswapV3Pool)" - } - }, - "id": 8536, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2213:20:38", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_IUniswapV3Pool_$3738", - "typeString": "contract IUniswapV3Pool" - } - }, - "id": 8537, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "observe", - "nodeType": "MemberAccess", - "referencedDeclaration": 3910, - "src": "2213:28:38", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_array$_t_uint32_$dyn_memory_ptr_$returns$_t_array$_t_int56_$dyn_memory_ptr_$_t_array$_t_uint160_$dyn_memory_ptr_$", - "typeString": "function (uint32[] memory) view external returns (int56[] memory,uint160[] memory)" - } - }, - "id": 8539, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2213:41:38", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_array$_t_int56_$dyn_memory_ptr_$_t_array$_t_uint160_$dyn_memory_ptr_$", - "typeString": "tuple(int56[] memory,uint160[] memory)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2176:78:38" - }, - { - "expression": { - "arguments": [ - { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_int56", - "typeString": "int56" - }, - "id": 8554, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_int56", - "typeString": "int56" - }, - "id": 8551, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "baseExpression": { - "id": 8545, - "name": "tickCumulatives", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8533, - "src": "2362:15:38", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_int56_$dyn_memory_ptr", - "typeString": "int56[] memory" - } - }, - "id": 8547, - "indexExpression": { - "hexValue": "31", - "id": 8546, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2378:1:38", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2362:18:38", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "baseExpression": { - "id": 8548, - "name": "tickCumulatives", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8533, - "src": "2383:15:38", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_int56_$dyn_memory_ptr", - "typeString": "int56[] memory" - } - }, - "id": 8550, - "indexExpression": { - "hexValue": "30", - "id": 8549, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2399:1:38", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2383:18:38", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - } - }, - "src": "2362:39:38", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - } - } - ], - "id": 8552, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "2361:41:38", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - } - }, - "nodeType": "BinaryOperation", - "operator": "/", - "rightExpression": { - "id": 8553, - "name": "twapInterval", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8486, - "src": "2405:12:38", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "src": "2361:56:38", - "typeDescriptions": { - "typeIdentifier": "t_int56", - "typeString": "int56" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int56", - "typeString": "int56" - } - ], - "id": 8544, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2355:5:38", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_int24_$", - "typeString": "type(int24)" - }, - "typeName": { - "id": 8543, - "name": "int24", - "nodeType": "ElementaryTypeName", - "src": "2355:5:38", - "typeDescriptions": {} - } - }, - "id": 8555, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2355:63:38", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int24", - "typeString": "int24" - } - ], - "expression": { - "id": 8541, - "name": "TickMath", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 7867, - "src": "2327:8:38", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_TickMath_$7867_$", - "typeString": "type(library TickMath)" - } - }, - "id": 8542, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "getSqrtRatioAtTick", - "nodeType": "MemberAccess", - "referencedDeclaration": 7727, - "src": "2327:27:38", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_int24_$returns$_t_uint160_$", - "typeString": "function (int24) pure returns (uint160)" - } - }, - "id": 8556, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2327:92:38", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "functionReturnParameters": 8490, - "id": 8557, - "nodeType": "Return", - "src": "2320:99:38" - } - ] - }, - "documentation": { - "id": 8484, - "nodeType": "StructuredDocumentation", - "src": "1464:203:38", - "text": "@dev if twapInterval < 10 (should be less than 1 block), return mark price without twap directly,\n as twapInterval is too short and makes getting twap over such a short period meaningless" - }, - "id": 8559, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_getSqrtMarkTwapX96", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 8487, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 8486, - "mutability": "mutable", - "name": "twapInterval", - "nodeType": "VariableDeclaration", - "scope": 8559, - "src": "1701:19:38", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 8485, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "1701:6:38", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "visibility": "internal" - } - ], - "src": "1700:21:38" - }, - "returnParameters": { - "id": 8490, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 8489, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 8559, - "src": "1745:7:38", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "typeName": { - "id": 8488, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "1745:7:38", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "visibility": "internal" - } - ], - "src": "1744:9:38" - }, - "scope": 8615, - "src": "1672:754:38", - "stateMutability": "view", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 8581, - "nodeType": "Block", - "src": "2790:108:38", - "statements": [ - { - "expression": { - "arguments": [ - { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 8576, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "components": [ - { - "id": 8573, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 8568, - "name": "returnValue", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8565, - "src": "2810:11:38", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 8571, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8562, - "src": "2831:5:38", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 8570, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2824:6:38", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint32_$", - "typeString": "type(uint32)" - }, - "typeName": { - "id": 8569, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "2824:6:38", - "typeDescriptions": {} - } - }, - "id": 8572, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2824:13:38", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "src": "2810:27:38", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - } - ], - "id": 8574, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "2809:29:38", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "id": 8575, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8562, - "src": "2842:5:38", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2809:38:38", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "id": 8577, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "2808:40:38", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "53616665436173743a2076616c756520646f65736e27742066697420696e2033322062697473", - "id": 8578, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2850:40:38", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_c907489dafcfb622d3b83f2657a14d6da2f59e0de3116af0d6a80554c1a7cb19", - "typeString": "literal_string \"SafeCast: value doesn't fit in 32 bits\"" - }, - "value": "SafeCast: value doesn't fit in 32 bits" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_c907489dafcfb622d3b83f2657a14d6da2f59e0de3116af0d6a80554c1a7cb19", - "typeString": "literal_string \"SafeCast: value doesn't fit in 32 bits\"" - } - ], - "id": 8567, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "2800:7:38", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 8579, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2800:91:38", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 8580, - "nodeType": "ExpressionStatement", - "src": "2800:91:38" - } - ] - }, - "documentation": { - "id": 8560, - "nodeType": "StructuredDocumentation", - "src": "2432:276:38", - "text": " @dev Returns the downcasted uint32 from uint256, reverting on\n overflow (when the input is greater than largest uint32).\n Counterpart to Solidity's `uint32` operator.\n Requirements:\n - input must fit into 32 bits" - }, - "id": 8582, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_toUint32", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 8563, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 8562, - "mutability": "mutable", - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 8582, - "src": "2732:13:38", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 8561, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2732:7:38", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "2731:15:38" - }, - "returnParameters": { - "id": 8566, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 8565, - "mutability": "mutable", - "name": "returnValue", - "nodeType": "VariableDeclaration", - "scope": 8582, - "src": "2770:18:38", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - }, - "typeName": { - "id": 8564, - "name": "uint32", - "nodeType": "ElementaryTypeName", - "src": "2770:6:38", - "typeDescriptions": { - "typeIdentifier": "t_uint32", - "typeString": "uint32" - } - }, - "visibility": "internal" - } - ], - "src": "2769:20:38" - }, - "scope": 8615, - "src": "2713:185:38", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 8597, - "nodeType": "Block", - "src": "2997:85:38", - "statements": [ - { - "expression": { - "arguments": [ - { - "id": 8591, - "name": "sqrtPriceX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8584, - "src": "3030:12:38", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - { - "id": 8592, - "name": "sqrtPriceX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8584, - "src": "3044:12:38", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - { - "expression": { - "id": 8593, - "name": "FixedPoint96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4514, - "src": "3058:12:38", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_FixedPoint96_$4514_$", - "typeString": "type(library FixedPoint96)" - } - }, - "id": 8594, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "Q96", - "nodeType": "MemberAccess", - "referencedDeclaration": 4513, - "src": "3058:16:38", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 8589, - "name": "FullMath", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4687, - "src": "3014:8:38", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_FullMath_$4687_$", - "typeString": "type(library FullMath)" - } - }, - "id": 8590, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "mulDiv", - "nodeType": "MemberAccess", - "referencedDeclaration": 4643, - "src": "3014:15:38", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 8595, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3014:61:38", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 8588, - "id": 8596, - "nodeType": "Return", - "src": "3007:68:38" - } - ] - }, - "id": 8598, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_formatSqrtPriceX96ToPriceX96", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 8585, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 8584, - "mutability": "mutable", - "name": "sqrtPriceX96", - "nodeType": "VariableDeclaration", - "scope": 8598, - "src": "2943:20:38", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "typeName": { - "id": 8583, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "2943:7:38", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "visibility": "internal" - } - ], - "src": "2942:22:38" - }, - "returnParameters": { - "id": 8588, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 8587, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 8598, - "src": "2988:7:38", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 8586, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2988:7:38", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "2987:9:38" - }, - "scope": 8615, - "src": "2904:178:38", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 8613, - "nodeType": "Block", - "src": "3166:73:38", - "statements": [ - { - "expression": { - "arguments": [ - { - "id": 8607, - "name": "valueX96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8600, - "src": "3199:8:38", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "hexValue": "31653138", - "id": 8608, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3209:4:38", - "typeDescriptions": { - "typeIdentifier": "t_rational_1000000000000000000_by_1", - "typeString": "int_const 1000000000000000000" - }, - "value": "1e18" - }, - { - "expression": { - "id": 8609, - "name": "FixedPoint96", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4514, - "src": "3215:12:38", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_FixedPoint96_$4514_$", - "typeString": "type(library FixedPoint96)" - } - }, - "id": 8610, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "Q96", - "nodeType": "MemberAccess", - "referencedDeclaration": 4513, - "src": "3215:16:38", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_rational_1000000000000000000_by_1", - "typeString": "int_const 1000000000000000000" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 8605, - "name": "FullMath", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 4687, - "src": "3183:8:38", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_FullMath_$4687_$", - "typeString": "type(library FullMath)" - } - }, - "id": 8606, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "mulDiv", - "nodeType": "MemberAccess", - "referencedDeclaration": 4643, - "src": "3183:15:38", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" - } - }, - "id": 8611, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3183:49:38", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 8604, - "id": 8612, - "nodeType": "Return", - "src": "3176:56:38" - } - ] - }, - "id": 8614, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_formatX96ToX10_18", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 8601, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 8600, - "mutability": "mutable", - "name": "valueX96", - "nodeType": "VariableDeclaration", - "scope": 8614, - "src": "3116:16:38", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 8599, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3116:7:38", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "3115:18:38" - }, - "returnParameters": { - "id": 8604, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 8603, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 8614, - "src": "3157:7:38", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 8602, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3157:7:38", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "3156:9:38" - }, - "scope": 8615, - "src": "3088:151:38", - "stateMutability": "pure", - "virtual": false, - "visibility": "internal" - } - ], - "scope": 8616, - "src": "614:2627:38" - } - ], - "src": "40:3202:38" - }, - "id": 38 - }, - "contracts/base/BlockContext.sol": { - "ast": { - "absolutePath": "contracts/base/BlockContext.sol", - "exportedSymbols": { - "BlockContext": [ - 8636 - ] - }, - "id": 8637, - "license": "MIT License", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 8617, - "literals": [ - "solidity", - "0.7", - ".6" - ], - "nodeType": "PragmaDirective", - "src": "40:22:39" - }, - { - "abstract": true, - "baseContracts": [], - "contractDependencies": [], - "contractKind": "contract", - "fullyImplemented": true, - "id": 8636, - "linearizedBaseContracts": [ - 8636 - ], - "name": "BlockContext", - "nodeType": "ContractDefinition", - "nodes": [ - { - "body": { - "id": 8625, - "nodeType": "Block", - "src": "168:234:39", - "statements": [ - { - "expression": { - "expression": { - "id": 8622, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -4, - "src": "380:5:39", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 8623, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "timestamp", - "nodeType": "MemberAccess", - "src": "380:15:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 8621, - "id": 8624, - "nodeType": "Return", - "src": "373:22:39" - } - ] - }, - "id": 8626, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_blockTimestamp", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 8618, - "nodeType": "ParameterList", - "parameters": [], - "src": "125:2:39" - }, - "returnParameters": { - "id": 8621, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 8620, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 8626, - "src": "159:7:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 8619, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "159:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "158:9:39" - }, - "scope": 8636, - "src": "101:301:39", - "stateMutability": "view", - "virtual": true, - "visibility": "internal" - }, - { - "body": { - "id": 8634, - "nodeType": "Block", - "src": "472:36:39", - "statements": [ - { - "expression": { - "expression": { - "id": 8631, - "name": "block", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": -4, - "src": "489:5:39", - "typeDescriptions": { - "typeIdentifier": "t_magic_block", - "typeString": "block" - } - }, - "id": 8632, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "number", - "nodeType": "MemberAccess", - "src": "489:12:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 8630, - "id": 8633, - "nodeType": "Return", - "src": "482:19:39" - } - ] - }, - "id": 8635, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_blockNumber", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 8627, - "nodeType": "ParameterList", - "parameters": [], - "src": "429:2:39" - }, - "returnParameters": { - "id": 8630, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 8629, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 8635, - "src": "463:7:39", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 8628, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "463:7:39", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "462:9:39" - }, - "scope": 8636, - "src": "408:100:39", - "stateMutability": "view", - "virtual": true, - "visibility": "internal" - } - ], - "scope": 8637, - "src": "64:446:39" - } - ], - "src": "40:471:39" - }, - "id": 39 - }, - "contracts/hardhat-dependency-compiler/@uniswap/v3-core/contracts/UniswapV3Factory.sol": { - "ast": { - "absolutePath": "contracts/hardhat-dependency-compiler/@uniswap/v3-core/contracts/UniswapV3Factory.sol", - "exportedSymbols": { - "BitMath": [ - 4497 - ], - "FixedPoint128": [ - 4504 - ], - "FixedPoint96": [ - 4514 - ], - "FullMath": [ - 4687 - ], - "IERC20Minimal": [ - 3633 - ], - "IUniswapV3Factory": [ - 3716 - ], - "IUniswapV3FlashCallback": [ - 3770 - ], - "IUniswapV3MintCallback": [ - 3784 - ], - "IUniswapV3Pool": [ - 3738 - ], - "IUniswapV3PoolActions": [ - 3894 - ], - "IUniswapV3PoolDeployer": [ - 3756 - ], - "IUniswapV3PoolDerivedState": [ - 3925 - ], - "IUniswapV3PoolEvents": [ - 4044 - ], - "IUniswapV3PoolImmutables": [ - 4084 - ], - "IUniswapV3PoolOwnerActions": [ - 4110 - ], - "IUniswapV3PoolState": [ - 4218 - ], - "IUniswapV3SwapCallback": [ - 3798 - ], - "LiquidityMath": [ - 4739 - ], - "LowGasSafeMath": [ - 4869 - ], - "NoDelegateCall": [ - 736 - ], - "Oracle": [ - 5604 - ], - "Position": [ - 5777 - ], - "SafeCast": [ - 5847 - ], - "SqrtPriceMath": [ - 6363 - ], - "SwapMath": [ - 6624 - ], - "Tick": [ - 7076 - ], - "TickBitmap": [ - 7332 - ], - "TickMath": [ - 7867 - ], - "TransferHelper": [ - 7918 - ], - "UniswapV3Factory": [ - 1011 - ], - "UniswapV3Pool": [ - 3491 - ], - "UniswapV3PoolDeployer": [ - 3561 - ], - "UnsafeMath": [ - 7934 - ] - }, - "id": 8640, - "license": "UNLICENSED", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 8638, - "literals": [ - "solidity", - ">", - "0.0", - ".0" - ], - "nodeType": "PragmaDirective", - "src": "39:23:40" - }, - { - "absolutePath": "@uniswap/v3-core/contracts/UniswapV3Factory.sol", - "file": "@uniswap/v3-core/contracts/UniswapV3Factory.sol", - "id": 8639, - "nodeType": "ImportDirective", - "scope": 8640, - "sourceUnit": 1012, - "src": "63:57:40", - "symbolAliases": [], - "unitAlias": "" - } - ], - "src": "39:82:40" - }, - "id": 40 - }, - "contracts/hardhat-dependency-compiler/@uniswap/v3-core/contracts/UniswapV3Pool.sol": { - "ast": { - "absolutePath": "contracts/hardhat-dependency-compiler/@uniswap/v3-core/contracts/UniswapV3Pool.sol", - "exportedSymbols": { - "BitMath": [ - 4497 - ], - "FixedPoint128": [ - 4504 - ], - "FixedPoint96": [ - 4514 - ], - "FullMath": [ - 4687 - ], - "IERC20Minimal": [ - 3633 - ], - "IUniswapV3Factory": [ - 3716 - ], - "IUniswapV3FlashCallback": [ - 3770 - ], - "IUniswapV3MintCallback": [ - 3784 - ], - "IUniswapV3Pool": [ - 3738 - ], - "IUniswapV3PoolActions": [ - 3894 - ], - "IUniswapV3PoolDeployer": [ - 3756 - ], - "IUniswapV3PoolDerivedState": [ - 3925 - ], - "IUniswapV3PoolEvents": [ - 4044 - ], - "IUniswapV3PoolImmutables": [ - 4084 - ], - "IUniswapV3PoolOwnerActions": [ - 4110 - ], - "IUniswapV3PoolState": [ - 4218 - ], - "IUniswapV3SwapCallback": [ - 3798 - ], - "LiquidityMath": [ - 4739 - ], - "LowGasSafeMath": [ - 4869 - ], - "NoDelegateCall": [ - 736 - ], - "Oracle": [ - 5604 - ], - "Position": [ - 5777 - ], - "SafeCast": [ - 5847 - ], - "SqrtPriceMath": [ - 6363 - ], - "SwapMath": [ - 6624 - ], - "Tick": [ - 7076 - ], - "TickBitmap": [ - 7332 - ], - "TickMath": [ - 7867 - ], - "TransferHelper": [ - 7918 - ], - "UniswapV3Pool": [ - 3491 - ], - "UnsafeMath": [ - 7934 - ] - }, - "id": 8643, - "license": "UNLICENSED", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 8641, - "literals": [ - "solidity", - ">", - "0.0", - ".0" - ], - "nodeType": "PragmaDirective", - "src": "39:23:41" - }, - { - "absolutePath": "@uniswap/v3-core/contracts/UniswapV3Pool.sol", - "file": "@uniswap/v3-core/contracts/UniswapV3Pool.sol", - "id": 8642, - "nodeType": "ImportDirective", - "scope": 8643, - "sourceUnit": 3492, - "src": "63:54:41", - "symbolAliases": [], - "unitAlias": "" - } - ], - "src": "39:79:41" - }, - "id": 41 - }, - "contracts/interface/IPriceFeed.sol": { - "ast": { - "absolutePath": "contracts/interface/IPriceFeed.sol", - "exportedSymbols": { - "IPriceFeed": [ - 8666 - ] - }, - "id": 8667, - "license": "MIT License", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 8644, - "literals": [ - "solidity", - "0.7", - ".6" - ], - "nodeType": "PragmaDirective", - "src": "40:22:42" - }, - { - "abstract": false, - "baseContracts": [], - "contractDependencies": [], - "contractKind": "interface", - "fullyImplemented": false, - "id": 8666, - "linearizedBaseContracts": [ - 8666 - ], - "name": "IPriceFeed", - "nodeType": "ContractDefinition", - "nodes": [ - { - "documentation": { - "id": 8645, - "nodeType": "StructuredDocumentation", - "src": "91:116:42", - "text": "@dev Returns the cached index price of the token.\n @param interval The interval represents twap interval." - }, - "functionSelector": "1d1a111a", - "id": 8652, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "cacheTwap", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 8648, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 8647, - "mutability": "mutable", - "name": "interval", - "nodeType": "VariableDeclaration", - "scope": 8652, - "src": "231:16:42", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 8646, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "231:7:42", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "230:18:42" - }, - "returnParameters": { - "id": 8651, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 8650, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 8652, - "src": "267:7:42", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 8649, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "267:7:42", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "266:9:42" - }, - "scope": 8666, - "src": "212:64:42", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "functionSelector": "313ce567", - "id": 8657, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "decimals", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 8653, - "nodeType": "ParameterList", - "parameters": [], - "src": "299:2:42" - }, - "returnParameters": { - "id": 8656, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 8655, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 8657, - "src": "325:5:42", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 8654, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "325:5:42", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "visibility": "internal" - } - ], - "src": "324:7:42" - }, - "scope": 8666, - "src": "282:50:42", - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "documentation": { - "id": 8658, - "nodeType": "StructuredDocumentation", - "src": "338:109:42", - "text": "@dev Returns the index price of the token.\n @param interval The interval represents twap interval." - }, - "functionSelector": "e7572230", - "id": 8665, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "getPrice", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 8661, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 8660, - "mutability": "mutable", - "name": "interval", - "nodeType": "VariableDeclaration", - "scope": 8665, - "src": "470:16:42", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 8659, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "470:7:42", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "469:18:42" - }, - "returnParameters": { - "id": 8664, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 8663, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 8665, - "src": "511:7:42", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 8662, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "511:7:42", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "510:9:42" - }, - "scope": 8666, - "src": "452:68:42", - "stateMutability": "view", - "virtual": false, - "visibility": "external" - } - ], - "scope": 8667, - "src": "64:458:42" - } - ], - "src": "40:483:42" - }, - "id": 42 - }, - "contracts/interface/bandProtocol/IStdReference.sol": { - "ast": { - "absolutePath": "contracts/interface/bandProtocol/IStdReference.sol", - "exportedSymbols": { - "IStdReference": [ - 8700 - ] - }, - "id": 8701, - "license": "MIT License", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 8668, - "literals": [ - "solidity", - "0.7", - ".6" - ], - "nodeType": "PragmaDirective", - "src": "40:22:43" - }, - { - "id": 8669, - "literals": [ - "experimental", - "ABIEncoderV2" - ], - "nodeType": "PragmaDirective", - "src": "63:33:43" - }, - { - "abstract": false, - "baseContracts": [], - "contractDependencies": [], - "contractKind": "interface", - "fullyImplemented": false, - "id": 8700, - "linearizedBaseContracts": [ - 8700 - ], - "name": "IStdReference", - "nodeType": "ContractDefinition", - "nodes": [ - { - "canonicalName": "IStdReference.ReferenceData", - "id": 8676, - "members": [ - { - "constant": false, - "id": 8671, - "mutability": "mutable", - "name": "rate", - "nodeType": "VariableDeclaration", - "scope": 8676, - "src": "352:12:43", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 8670, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "352:7:43", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 8673, - "mutability": "mutable", - "name": "lastUpdatedBase", - "nodeType": "VariableDeclaration", - "scope": 8676, - "src": "423:23:43", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 8672, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "423:7:43", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 8675, - "mutability": "mutable", - "name": "lastUpdatedQuote", - "nodeType": "VariableDeclaration", - "scope": 8676, - "src": "517:24:43", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 8674, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "517:7:43", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "name": "ReferenceData", - "nodeType": "StructDefinition", - "scope": 8700, - "src": "321:289:43", - "visibility": "public" - }, - { - "documentation": { - "id": 8677, - "nodeType": "StructuredDocumentation", - "src": "616:82:43", - "text": "Returns the price data for the given base/quote pair. Revert if not available." - }, - "functionSelector": "65555bcc", - "id": 8686, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "getReferenceData", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 8682, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 8679, - "mutability": "mutable", - "name": "_base", - "nodeType": "VariableDeclaration", - "scope": 8686, - "src": "729:19:43", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" - }, - "typeName": { - "id": 8678, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "729:6:43", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 8681, - "mutability": "mutable", - "name": "_quote", - "nodeType": "VariableDeclaration", - "scope": 8686, - "src": "750:20:43", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" - }, - "typeName": { - "id": 8680, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "750:6:43", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "visibility": "internal" - } - ], - "src": "728:43:43" - }, - "returnParameters": { - "id": 8685, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 8684, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 8686, - "src": "795:20:43", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ReferenceData_$8676_memory_ptr", - "typeString": "struct IStdReference.ReferenceData" - }, - "typeName": { - "id": 8683, - "name": "ReferenceData", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 8676, - "src": "795:13:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ReferenceData_$8676_storage_ptr", - "typeString": "struct IStdReference.ReferenceData" - } - }, - "visibility": "internal" - } - ], - "src": "794:22:43" - }, - "scope": 8700, - "src": "703:114:43", - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "documentation": { - "id": 8687, - "nodeType": "StructuredDocumentation", - "src": "823:76:43", - "text": "Similar to getReferenceData, but with multiple base/quote pairs at once." - }, - "functionSelector": "e42a071b", - "id": 8699, - "implemented": false, - "kind": "function", - "modifiers": [], - "name": "getReferenceDataBulk", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 8694, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 8690, - "mutability": "mutable", - "name": "_bases", - "nodeType": "VariableDeclaration", - "scope": 8699, - "src": "934:22:43", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", - "typeString": "string[]" - }, - "typeName": { - "baseType": { - "id": 8688, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "934:6:43", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "id": 8689, - "nodeType": "ArrayTypeName", - "src": "934:8:43", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", - "typeString": "string[]" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 8693, - "mutability": "mutable", - "name": "_quotes", - "nodeType": "VariableDeclaration", - "scope": 8699, - "src": "958:23:43", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", - "typeString": "string[]" - }, - "typeName": { - "baseType": { - "id": 8691, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "958:6:43", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "id": 8692, - "nodeType": "ArrayTypeName", - "src": "958:8:43", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", - "typeString": "string[]" - } - }, - "visibility": "internal" - } - ], - "src": "933:49:43" - }, - "returnParameters": { - "id": 8698, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 8697, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 8699, - "src": "1030:22:43", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_ReferenceData_$8676_memory_ptr_$dyn_memory_ptr", - "typeString": "struct IStdReference.ReferenceData[]" - }, - "typeName": { - "baseType": { - "id": 8695, - "name": "ReferenceData", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 8676, - "src": "1030:13:43", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ReferenceData_$8676_storage_ptr", - "typeString": "struct IStdReference.ReferenceData" - } - }, - "id": 8696, - "nodeType": "ArrayTypeName", - "src": "1030:15:43", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_ReferenceData_$8676_storage_$dyn_storage_ptr", - "typeString": "struct IStdReference.ReferenceData[]" - } - }, - "visibility": "internal" - } - ], - "src": "1029:24:43" - }, - "scope": 8700, - "src": "904:150:43", - "stateMutability": "view", - "virtual": false, - "visibility": "external" - } - ], - "scope": 8701, - "src": "207:849:43" - } - ], - "src": "40:1017:43" - }, - "id": 43 - }, - "contracts/test/TestAggregatorV3.sol": { - "ast": { - "absolutePath": "contracts/test/TestAggregatorV3.sol", - "exportedSymbols": { - "AggregatorV3Interface": [ - 45 - ], - "TestAggregatorV3": [ - 8854 - ] - }, - "id": 8855, - "license": "GPL-2.0-or-later", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 8702, - "literals": [ - "solidity", - "0.7", - ".6" - ], - "nodeType": "PragmaDirective", - "src": "45:22:44" - }, - { - "absolutePath": "@chainlink/contracts/src/v0.6/interfaces/AggregatorV3Interface.sol", - "file": "@chainlink/contracts/src/v0.6/interfaces/AggregatorV3Interface.sol", - "id": 8704, - "nodeType": "ImportDirective", - "scope": 8855, - "sourceUnit": 46, - "src": "69:107:44", - "symbolAliases": [ - { - "foreign": { - "id": 8703, - "name": "AggregatorV3Interface", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "src": "78:21:44", - "typeDescriptions": {} - } - } - ], - "unitAlias": "" - }, - { - "abstract": false, - "baseContracts": [ - { - "baseName": { - "id": 8705, - "name": "AggregatorV3Interface", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 45, - "src": "207:21:44", - "typeDescriptions": { - "typeIdentifier": "t_contract$_AggregatorV3Interface_$45", - "typeString": "contract AggregatorV3Interface" - } - }, - "id": 8706, - "nodeType": "InheritanceSpecifier", - "src": "207:21:44" - } - ], - "contractDependencies": [ - 45 - ], - "contractKind": "contract", - "fullyImplemented": true, - "id": 8854, - "linearizedBaseContracts": [ - 8854, - 45 - ], - "name": "TestAggregatorV3", - "nodeType": "ContractDefinition", - "nodes": [ - { - "canonicalName": "TestAggregatorV3.RoundData", - "id": 8715, - "members": [ - { - "constant": false, - "id": 8708, - "mutability": "mutable", - "name": "answer", - "nodeType": "VariableDeclaration", - "scope": 8715, - "src": "262:13:44", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "typeName": { - "id": 8707, - "name": "int256", - "nodeType": "ElementaryTypeName", - "src": "262:6:44", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 8710, - "mutability": "mutable", - "name": "startedAt", - "nodeType": "VariableDeclaration", - "scope": 8715, - "src": "285:17:44", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 8709, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "285:7:44", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 8712, - "mutability": "mutable", - "name": "updatedAt", - "nodeType": "VariableDeclaration", - "scope": 8715, - "src": "312:17:44", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 8711, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "312:7:44", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 8714, - "mutability": "mutable", - "name": "answeredInRound", - "nodeType": "VariableDeclaration", - "scope": 8715, - "src": "339:22:44", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - }, - "typeName": { - "id": 8713, - "name": "uint80", - "nodeType": "ElementaryTypeName", - "src": "339:6:44", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - }, - "visibility": "internal" - } - ], - "name": "RoundData", - "nodeType": "StructDefinition", - "scope": 8854, - "src": "235:133:44", - "visibility": "public" - }, - { - "constant": false, - "functionSelector": "bc81bae8", - "id": 8719, - "mutability": "mutable", - "name": "roundData", - "nodeType": "VariableDeclaration", - "scope": 8854, - "src": "373:45:44", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint80_$_t_struct$_RoundData_$8715_storage_$", - "typeString": "mapping(uint80 => struct TestAggregatorV3.RoundData)" - }, - "typeName": { - "id": 8718, - "keyType": { - "id": 8716, - "name": "uint80", - "nodeType": "ElementaryTypeName", - "src": "381:6:44", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - }, - "nodeType": "Mapping", - "src": "373:28:44", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint80_$_t_struct$_RoundData_$8715_storage_$", - "typeString": "mapping(uint80 => struct TestAggregatorV3.RoundData)" - }, - "valueType": { - "id": 8717, - "name": "RoundData", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 8715, - "src": "391:9:44", - "typeDescriptions": { - "typeIdentifier": "t_struct$_RoundData_$8715_storage_ptr", - "typeString": "struct TestAggregatorV3.RoundData" - } - } - }, - "visibility": "public" - }, - { - "constant": false, - "functionSelector": "668a0f02", - "id": 8721, - "mutability": "mutable", - "name": "latestRound", - "nodeType": "VariableDeclaration", - "scope": 8854, - "src": "424:25:44", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - }, - "typeName": { - "id": 8720, - "name": "uint80", - "nodeType": "ElementaryTypeName", - "src": "424:6:44", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - }, - "visibility": "public" - }, - { - "body": { - "id": 8724, - "nodeType": "Block", - "src": "470:2:44", - "statements": [] - }, - "id": 8725, - "implemented": true, - "kind": "constructor", - "modifiers": [], - "name": "", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 8722, - "nodeType": "ParameterList", - "parameters": [], - "src": "467:2:44" - }, - "returnParameters": { - "id": 8723, - "nodeType": "ParameterList", - "parameters": [], - "src": "470:0:44" - }, - "scope": 8854, - "src": "456:16:44", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - { - "body": { - "id": 8753, - "nodeType": "Block", - "src": "648:232:44", - "statements": [ - { - "expression": { - "id": 8747, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "id": 8738, - "name": "roundData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8719, - "src": "658:9:44", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint80_$_t_struct$_RoundData_$8715_storage_$", - "typeString": "mapping(uint80 => struct TestAggregatorV3.RoundData storage ref)" - } - }, - "id": 8740, - "indexExpression": { - "id": 8739, - "name": "roundId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8727, - "src": "668:7:44", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "658:18:44", - "typeDescriptions": { - "typeIdentifier": "t_struct$_RoundData_$8715_storage", - "typeString": "struct TestAggregatorV3.RoundData storage ref" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 8742, - "name": "answer", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8729, - "src": "711:6:44", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - { - "id": 8743, - "name": "startedAt", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8731, - "src": "742:9:44", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 8744, - "name": "updatedAt", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8733, - "src": "776:9:44", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 8745, - "name": "answeredInRound", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8735, - "src": "816:15:44", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - ], - "id": 8741, - "name": "RoundData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8715, - "src": "679:9:44", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_RoundData_$8715_storage_ptr_$", - "typeString": "type(struct TestAggregatorV3.RoundData storage pointer)" - } - }, - "id": 8746, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "structConstructorCall", - "lValueRequested": false, - "names": [ - "answer", - "startedAt", - "updatedAt", - "answeredInRound" - ], - "nodeType": "FunctionCall", - "src": "679:163:44", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_struct$_RoundData_$8715_memory_ptr", - "typeString": "struct TestAggregatorV3.RoundData memory" - } - }, - "src": "658:184:44", - "typeDescriptions": { - "typeIdentifier": "t_struct$_RoundData_$8715_storage", - "typeString": "struct TestAggregatorV3.RoundData storage ref" - } - }, - "id": 8748, - "nodeType": "ExpressionStatement", - "src": "658:184:44" - }, - { - "expression": { - "id": 8751, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 8749, - "name": "latestRound", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8721, - "src": "852:11:44", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 8750, - "name": "roundId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8727, - "src": "866:7:44", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - }, - "src": "852:21:44", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - }, - "id": 8752, - "nodeType": "ExpressionStatement", - "src": "852:21:44" - } - ] - }, - "functionSelector": "1c12940a", - "id": 8754, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "setRoundData", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 8736, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 8727, - "mutability": "mutable", - "name": "roundId", - "nodeType": "VariableDeclaration", - "scope": 8754, - "src": "509:14:44", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - }, - "typeName": { - "id": 8726, - "name": "uint80", - "nodeType": "ElementaryTypeName", - "src": "509:6:44", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 8729, - "mutability": "mutable", - "name": "answer", - "nodeType": "VariableDeclaration", - "scope": 8754, - "src": "533:13:44", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "typeName": { - "id": 8728, - "name": "int256", - "nodeType": "ElementaryTypeName", - "src": "533:6:44", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 8731, - "mutability": "mutable", - "name": "startedAt", - "nodeType": "VariableDeclaration", - "scope": 8754, - "src": "556:17:44", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 8730, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "556:7:44", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 8733, - "mutability": "mutable", - "name": "updatedAt", - "nodeType": "VariableDeclaration", - "scope": 8754, - "src": "583:17:44", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 8732, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "583:7:44", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 8735, - "mutability": "mutable", - "name": "answeredInRound", - "nodeType": "VariableDeclaration", - "scope": 8754, - "src": "610:22:44", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - }, - "typeName": { - "id": 8734, - "name": "uint80", - "nodeType": "ElementaryTypeName", - "src": "610:6:44", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - }, - "visibility": "internal" - } - ], - "src": "499:139:44" - }, - "returnParameters": { - "id": 8737, - "nodeType": "ParameterList", - "parameters": [], - "src": "648:0:44" - }, - "scope": 8854, - "src": "478:402:44", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "baseFunctions": [ - 6 - ], - "body": { - "id": 8762, - "nodeType": "Block", - "src": "945:19:44", - "statements": [ - { - "expression": { - "hexValue": "3138", - "id": 8760, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "955:2:44", - "typeDescriptions": { - "typeIdentifier": "t_rational_18_by_1", - "typeString": "int_const 18" - }, - "value": "18" - }, - "id": 8761, - "nodeType": "ExpressionStatement", - "src": "955:2:44" - } - ] - }, - "functionSelector": "313ce567", - "id": 8763, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "decimals", - "nodeType": "FunctionDefinition", - "overrides": { - "id": 8756, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "920:8:44" - }, - "parameters": { - "id": 8755, - "nodeType": "ParameterList", - "parameters": [], - "src": "903:2:44" - }, - "returnParameters": { - "id": 8759, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 8758, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 8763, - "src": "938:5:44", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 8757, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "938:5:44", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "visibility": "internal" - } - ], - "src": "937:7:44" - }, - "scope": 8854, - "src": "886:78:44", - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "baseFunctions": [ - 11 - ], - "body": { - "id": 8772, - "nodeType": "Block", - "src": "1040:25:44", - "statements": [ - { - "expression": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 8769, - "name": "revert", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -19, - -19 - ], - "referencedDeclaration": -19, - "src": "1050:6:44", - "typeDescriptions": { - "typeIdentifier": "t_function_revert_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 8770, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1050:8:44", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 8771, - "nodeType": "ExpressionStatement", - "src": "1050:8:44" - } - ] - }, - "functionSelector": "7284e416", - "id": 8773, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "description", - "nodeType": "FunctionDefinition", - "overrides": { - "id": 8765, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "1007:8:44" - }, - "parameters": { - "id": 8764, - "nodeType": "ParameterList", - "parameters": [], - "src": "990:2:44" - }, - "returnParameters": { - "id": 8768, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 8767, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 8773, - "src": "1025:13:44", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" - }, - "typeName": { - "id": 8766, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "1025:6:44", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "visibility": "internal" - } - ], - "src": "1024:15:44" - }, - "scope": 8854, - "src": "970:95:44", - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "baseFunctions": [ - 16 - ], - "body": { - "id": 8782, - "nodeType": "Block", - "src": "1131:25:44", - "statements": [ - { - "expression": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 8779, - "name": "revert", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -19, - -19 - ], - "referencedDeclaration": -19, - "src": "1141:6:44", - "typeDescriptions": { - "typeIdentifier": "t_function_revert_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 8780, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1141:8:44", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 8781, - "nodeType": "ExpressionStatement", - "src": "1141:8:44" - } - ] - }, - "functionSelector": "54fd4d50", - "id": 8783, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "version", - "nodeType": "FunctionDefinition", - "overrides": { - "id": 8775, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "1104:8:44" - }, - "parameters": { - "id": 8774, - "nodeType": "ParameterList", - "parameters": [], - "src": "1087:2:44" - }, - "returnParameters": { - "id": 8778, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 8777, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 8783, - "src": "1122:7:44", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 8776, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1122:7:44", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "1121:9:44" - }, - "scope": 8854, - "src": "1071:85:44", - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "baseFunctions": [ - 31 - ], - "body": { - "id": 8818, - "nodeType": "Block", - "src": "1432:231:44", - "statements": [ - { - "expression": { - "components": [ - { - "id": 8799, - "name": "_roundId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8785, - "src": "1463:8:44", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - }, - { - "expression": { - "baseExpression": { - "id": 8800, - "name": "roundData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8719, - "src": "1485:9:44", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint80_$_t_struct$_RoundData_$8715_storage_$", - "typeString": "mapping(uint80 => struct TestAggregatorV3.RoundData storage ref)" - } - }, - "id": 8802, - "indexExpression": { - "id": 8801, - "name": "_roundId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8785, - "src": "1495:8:44", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1485:19:44", - "typeDescriptions": { - "typeIdentifier": "t_struct$_RoundData_$8715_storage", - "typeString": "struct TestAggregatorV3.RoundData storage ref" - } - }, - "id": 8803, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "answer", - "nodeType": "MemberAccess", - "referencedDeclaration": 8708, - "src": "1485:26:44", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - { - "expression": { - "baseExpression": { - "id": 8804, - "name": "roundData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8719, - "src": "1525:9:44", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint80_$_t_struct$_RoundData_$8715_storage_$", - "typeString": "mapping(uint80 => struct TestAggregatorV3.RoundData storage ref)" - } - }, - "id": 8806, - "indexExpression": { - "id": 8805, - "name": "_roundId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8785, - "src": "1535:8:44", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1525:19:44", - "typeDescriptions": { - "typeIdentifier": "t_struct$_RoundData_$8715_storage", - "typeString": "struct TestAggregatorV3.RoundData storage ref" - } - }, - "id": 8807, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "startedAt", - "nodeType": "MemberAccess", - "referencedDeclaration": 8710, - "src": "1525:29:44", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "expression": { - "baseExpression": { - "id": 8808, - "name": "roundData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8719, - "src": "1568:9:44", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint80_$_t_struct$_RoundData_$8715_storage_$", - "typeString": "mapping(uint80 => struct TestAggregatorV3.RoundData storage ref)" - } - }, - "id": 8810, - "indexExpression": { - "id": 8809, - "name": "_roundId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8785, - "src": "1578:8:44", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1568:19:44", - "typeDescriptions": { - "typeIdentifier": "t_struct$_RoundData_$8715_storage", - "typeString": "struct TestAggregatorV3.RoundData storage ref" - } - }, - "id": 8811, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "updatedAt", - "nodeType": "MemberAccess", - "referencedDeclaration": 8712, - "src": "1568:29:44", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "expression": { - "baseExpression": { - "id": 8812, - "name": "roundData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8719, - "src": "1611:9:44", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint80_$_t_struct$_RoundData_$8715_storage_$", - "typeString": "mapping(uint80 => struct TestAggregatorV3.RoundData storage ref)" - } - }, - "id": 8814, - "indexExpression": { - "id": 8813, - "name": "_roundId", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8785, - "src": "1621:8:44", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1611:19:44", - "typeDescriptions": { - "typeIdentifier": "t_struct$_RoundData_$8715_storage", - "typeString": "struct TestAggregatorV3.RoundData storage ref" - } - }, - "id": 8815, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "answeredInRound", - "nodeType": "MemberAccess", - "referencedDeclaration": 8714, - "src": "1611:35:44", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - } - ], - "id": 8816, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "1449:207:44", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint80_$_t_int256_$_t_uint256_$_t_uint256_$_t_uint80_$", - "typeString": "tuple(uint80,int256,uint256,uint256,uint80)" - } - }, - "functionReturnParameters": 8798, - "id": 8817, - "nodeType": "Return", - "src": "1442:214:44" - } - ] - }, - "functionSelector": "9a6fc8f5", - "id": 8819, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getRoundData", - "nodeType": "FunctionDefinition", - "overrides": { - "id": 8787, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "1239:8:44" - }, - "parameters": { - "id": 8786, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 8785, - "mutability": "mutable", - "name": "_roundId", - "nodeType": "VariableDeclaration", - "scope": 8819, - "src": "1184:15:44", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - }, - "typeName": { - "id": 8784, - "name": "uint80", - "nodeType": "ElementaryTypeName", - "src": "1184:6:44", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - }, - "visibility": "internal" - } - ], - "src": "1183:17:44" - }, - "returnParameters": { - "id": 8798, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 8789, - "mutability": "mutable", - "name": "roundId", - "nodeType": "VariableDeclaration", - "scope": 8819, - "src": "1278:14:44", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - }, - "typeName": { - "id": 8788, - "name": "uint80", - "nodeType": "ElementaryTypeName", - "src": "1278:6:44", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 8791, - "mutability": "mutable", - "name": "answer", - "nodeType": "VariableDeclaration", - "scope": 8819, - "src": "1306:13:44", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "typeName": { - "id": 8790, - "name": "int256", - "nodeType": "ElementaryTypeName", - "src": "1306:6:44", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 8793, - "mutability": "mutable", - "name": "startedAt", - "nodeType": "VariableDeclaration", - "scope": 8819, - "src": "1333:17:44", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 8792, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1333:7:44", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 8795, - "mutability": "mutable", - "name": "updatedAt", - "nodeType": "VariableDeclaration", - "scope": 8819, - "src": "1364:17:44", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 8794, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1364:7:44", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 8797, - "mutability": "mutable", - "name": "answeredInRound", - "nodeType": "VariableDeclaration", - "scope": 8819, - "src": "1395:22:44", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - }, - "typeName": { - "id": 8796, - "name": "uint80", - "nodeType": "ElementaryTypeName", - "src": "1395:6:44", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - }, - "visibility": "internal" - } - ], - "src": "1264:163:44" - }, - "scope": 8854, - "src": "1162:501:44", - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "baseFunctions": [ - 44 - ], - "body": { - "id": 8852, - "nodeType": "Block", - "src": "1927:246:44", - "statements": [ - { - "expression": { - "components": [ - { - "id": 8833, - "name": "latestRound", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8721, - "src": "1958:11:44", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - }, - { - "expression": { - "baseExpression": { - "id": 8834, - "name": "roundData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8719, - "src": "1983:9:44", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint80_$_t_struct$_RoundData_$8715_storage_$", - "typeString": "mapping(uint80 => struct TestAggregatorV3.RoundData storage ref)" - } - }, - "id": 8836, - "indexExpression": { - "id": 8835, - "name": "latestRound", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8721, - "src": "1993:11:44", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1983:22:44", - "typeDescriptions": { - "typeIdentifier": "t_struct$_RoundData_$8715_storage", - "typeString": "struct TestAggregatorV3.RoundData storage ref" - } - }, - "id": 8837, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "answer", - "nodeType": "MemberAccess", - "referencedDeclaration": 8708, - "src": "1983:29:44", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - { - "expression": { - "baseExpression": { - "id": 8838, - "name": "roundData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8719, - "src": "2026:9:44", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint80_$_t_struct$_RoundData_$8715_storage_$", - "typeString": "mapping(uint80 => struct TestAggregatorV3.RoundData storage ref)" - } - }, - "id": 8840, - "indexExpression": { - "id": 8839, - "name": "latestRound", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8721, - "src": "2036:11:44", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2026:22:44", - "typeDescriptions": { - "typeIdentifier": "t_struct$_RoundData_$8715_storage", - "typeString": "struct TestAggregatorV3.RoundData storage ref" - } - }, - "id": 8841, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "startedAt", - "nodeType": "MemberAccess", - "referencedDeclaration": 8710, - "src": "2026:32:44", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "expression": { - "baseExpression": { - "id": 8842, - "name": "roundData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8719, - "src": "2072:9:44", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint80_$_t_struct$_RoundData_$8715_storage_$", - "typeString": "mapping(uint80 => struct TestAggregatorV3.RoundData storage ref)" - } - }, - "id": 8844, - "indexExpression": { - "id": 8843, - "name": "latestRound", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8721, - "src": "2082:11:44", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2072:22:44", - "typeDescriptions": { - "typeIdentifier": "t_struct$_RoundData_$8715_storage", - "typeString": "struct TestAggregatorV3.RoundData storage ref" - } - }, - "id": 8845, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "updatedAt", - "nodeType": "MemberAccess", - "referencedDeclaration": 8712, - "src": "2072:32:44", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "expression": { - "baseExpression": { - "id": 8846, - "name": "roundData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8719, - "src": "2118:9:44", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_uint80_$_t_struct$_RoundData_$8715_storage_$", - "typeString": "mapping(uint80 => struct TestAggregatorV3.RoundData storage ref)" - } - }, - "id": 8848, - "indexExpression": { - "id": 8847, - "name": "latestRound", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8721, - "src": "2128:11:44", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2118:22:44", - "typeDescriptions": { - "typeIdentifier": "t_struct$_RoundData_$8715_storage", - "typeString": "struct TestAggregatorV3.RoundData storage ref" - } - }, - "id": 8849, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "answeredInRound", - "nodeType": "MemberAccess", - "referencedDeclaration": 8714, - "src": "2118:38:44", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - } - ], - "id": 8850, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "1944:222:44", - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_uint80_$_t_int256_$_t_uint256_$_t_uint256_$_t_uint80_$", - "typeString": "tuple(uint80,int256,uint256,uint256,uint80)" - } - }, - "functionReturnParameters": 8832, - "id": 8851, - "nodeType": "Return", - "src": "1937:229:44" - } - ] - }, - "functionSelector": "feaf968c", - "id": 8853, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "latestRoundData", - "nodeType": "FunctionDefinition", - "overrides": { - "id": 8821, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "1734:8:44" - }, - "parameters": { - "id": 8820, - "nodeType": "ParameterList", - "parameters": [], - "src": "1693:2:44" - }, - "returnParameters": { - "id": 8832, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 8823, - "mutability": "mutable", - "name": "roundId", - "nodeType": "VariableDeclaration", - "scope": 8853, - "src": "1773:14:44", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - }, - "typeName": { - "id": 8822, - "name": "uint80", - "nodeType": "ElementaryTypeName", - "src": "1773:6:44", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 8825, - "mutability": "mutable", - "name": "answer", - "nodeType": "VariableDeclaration", - "scope": 8853, - "src": "1801:13:44", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - }, - "typeName": { - "id": 8824, - "name": "int256", - "nodeType": "ElementaryTypeName", - "src": "1801:6:44", - "typeDescriptions": { - "typeIdentifier": "t_int256", - "typeString": "int256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 8827, - "mutability": "mutable", - "name": "startedAt", - "nodeType": "VariableDeclaration", - "scope": 8853, - "src": "1828:17:44", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 8826, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1828:7:44", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 8829, - "mutability": "mutable", - "name": "updatedAt", - "nodeType": "VariableDeclaration", - "scope": 8853, - "src": "1859:17:44", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 8828, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1859:7:44", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 8831, - "mutability": "mutable", - "name": "answeredInRound", - "nodeType": "VariableDeclaration", - "scope": 8853, - "src": "1890:22:44", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - }, - "typeName": { - "id": 8830, - "name": "uint80", - "nodeType": "ElementaryTypeName", - "src": "1890:6:44", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - }, - "visibility": "internal" - } - ], - "src": "1759:163:44" - }, - "scope": 8854, - "src": "1669:504:44", - "stateMutability": "view", - "virtual": false, - "visibility": "external" - } - ], - "scope": 8855, - "src": "178:1997:44" - } - ], - "src": "45:2131:44" - }, - "id": 44 - }, - "contracts/test/TestPriceFeed.sol": { - "ast": { - "absolutePath": "contracts/test/TestPriceFeed.sol", - "exportedSymbols": { - "IPriceFeed": [ - 8666 - ], - "TestPriceFeed": [ - 9049 - ] - }, - "id": 9050, - "license": "MIT License", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 8856, - "literals": [ - "solidity", - "0.7", - ".6" - ], - "nodeType": "PragmaDirective", - "src": "40:22:45" - }, - { - "absolutePath": "contracts/interface/IPriceFeed.sol", - "file": "../interface/IPriceFeed.sol", - "id": 8858, - "nodeType": "ImportDirective", - "scope": 9050, - "sourceUnit": 8667, - "src": "64:57:45", - "symbolAliases": [ - { - "foreign": { - "id": 8857, - "name": "IPriceFeed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "src": "73:10:45", - "typeDescriptions": {} - } - } - ], - "unitAlias": "" - }, - { - "abstract": false, - "baseContracts": [], - "contractDependencies": [], - "contractKind": "contract", - "fullyImplemented": true, - "id": 9049, - "linearizedBaseContracts": [ - 9049 - ], - "name": "TestPriceFeed", - "nodeType": "ContractDefinition", - "nodes": [ - { - "constant": false, - "functionSelector": "9c3feeb7", - "id": 8860, - "mutability": "mutable", - "name": "chainlink", - "nodeType": "VariableDeclaration", - "scope": 9049, - "src": "152:24:45", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 8859, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "152:7:45", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "public" - }, - { - "constant": false, - "functionSelector": "6fea6b1c", - "id": 8862, - "mutability": "mutable", - "name": "bandProtocol", - "nodeType": "VariableDeclaration", - "scope": 9049, - "src": "182:27:45", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 8861, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "182:7:45", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "public" - }, - { - "constant": false, - "functionSelector": "9d1b464a", - "id": 8864, - "mutability": "mutable", - "name": "currentPrice", - "nodeType": "VariableDeclaration", - "scope": 9049, - "src": "216:27:45", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 8863, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "216:7:45", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "public" - }, - { - "body": { - "id": 8883, - "nodeType": "Block", - "src": "305:104:45", - "statements": [ - { - "expression": { - "id": 8873, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 8871, - "name": "chainlink", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8860, - "src": "315:9:45", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 8872, - "name": "_chainlink", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8866, - "src": "327:10:45", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "315:22:45", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 8874, - "nodeType": "ExpressionStatement", - "src": "315:22:45" - }, - { - "expression": { - "id": 8877, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 8875, - "name": "bandProtocol", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8862, - "src": "347:12:45", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 8876, - "name": "_bandProtocol", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8868, - "src": "362:13:45", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "347:28:45", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 8878, - "nodeType": "ExpressionStatement", - "src": "347:28:45" - }, - { - "expression": { - "id": 8881, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 8879, - "name": "currentPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8864, - "src": "385:12:45", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "3130", - "id": 8880, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "400:2:45", - "typeDescriptions": { - "typeIdentifier": "t_rational_10_by_1", - "typeString": "int_const 10" - }, - "value": "10" - }, - "src": "385:17:45", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 8882, - "nodeType": "ExpressionStatement", - "src": "385:17:45" - } - ] - }, - "id": 8884, - "implemented": true, - "kind": "constructor", - "modifiers": [], - "name": "", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 8869, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 8866, - "mutability": "mutable", - "name": "_chainlink", - "nodeType": "VariableDeclaration", - "scope": 8884, - "src": "262:18:45", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 8865, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "262:7:45", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 8868, - "mutability": "mutable", - "name": "_bandProtocol", - "nodeType": "VariableDeclaration", - "scope": 8884, - "src": "282:21:45", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 8867, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "282:7:45", - "stateMutability": "nonpayable", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "visibility": "internal" - } - ], - "src": "261:43:45" - }, - "returnParameters": { - "id": 8870, - "nodeType": "ParameterList", - "parameters": [], - "src": "305:0:45" - }, - "scope": 9049, - "src": "250:159:45", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - { - "body": { - "id": 8917, - "nodeType": "Block", - "src": "514:179:45", - "statements": [ - { - "body": { - "id": 8906, - "nodeType": "Block", - "src": "557:65:45", - "statements": [ - { - "expression": { - "arguments": [ - { - "id": 8903, - "name": "interval", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8886, - "src": "602:8:45", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "arguments": [ - { - "id": 8900, - "name": "chainlink", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8860, - "src": "582:9:45", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 8899, - "name": "IPriceFeed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8666, - "src": "571:10:45", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IPriceFeed_$8666_$", - "typeString": "type(contract IPriceFeed)" - } - }, - "id": 8901, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "571:21:45", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPriceFeed_$8666", - "typeString": "contract IPriceFeed" - } - }, - "id": 8902, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "getPrice", - "nodeType": "MemberAccess", - "referencedDeclaration": 8665, - "src": "571:30:45", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256) view external returns (uint256)" - } - }, - "id": 8904, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "571:40:45", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 8905, - "nodeType": "ExpressionStatement", - "src": "571:40:45" - } - ] - }, - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 8895, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 8893, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8890, - "src": "544:1:45", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "hexValue": "3137", - "id": 8894, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "548:2:45", - "typeDescriptions": { - "typeIdentifier": "t_rational_17_by_1", - "typeString": "int_const 17" - }, - "value": "17" - }, - "src": "544:6:45", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 8907, - "initializationExpression": { - "assignments": [ - 8890 - ], - "declarations": [ - { - "constant": false, - "id": 8890, - "mutability": "mutable", - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 8907, - "src": "529:9:45", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 8889, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "529:7:45", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 8892, - "initialValue": { - "hexValue": "30", - "id": 8891, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "541:1:45", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "529:13:45" - }, - "loopExpression": { - "expression": { - "id": 8897, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "552:3:45", - "subExpression": { - "id": 8896, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8890, - "src": "552:1:45", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 8898, - "nodeType": "ExpressionStatement", - "src": "552:3:45" - }, - "nodeType": "ForStatement", - "src": "524:98:45" - }, - { - "expression": { - "id": 8915, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 8908, - "name": "currentPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8864, - "src": "631:12:45", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 8913, - "name": "interval", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8886, - "src": "677:8:45", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "arguments": [ - { - "id": 8910, - "name": "chainlink", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8860, - "src": "657:9:45", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 8909, - "name": "IPriceFeed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8666, - "src": "646:10:45", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IPriceFeed_$8666_$", - "typeString": "type(contract IPriceFeed)" - } - }, - "id": 8911, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "646:21:45", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPriceFeed_$8666", - "typeString": "contract IPriceFeed" - } - }, - "id": 8912, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "getPrice", - "nodeType": "MemberAccess", - "referencedDeclaration": 8665, - "src": "646:30:45", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256) view external returns (uint256)" - } - }, - "id": 8914, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "646:40:45", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "631:55:45", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 8916, - "nodeType": "ExpressionStatement", - "src": "631:55:45" - } - ] - }, - "functionSelector": "0b2729c1", - "id": 8918, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "fetchChainlinkPrice", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 8887, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 8886, - "mutability": "mutable", - "name": "interval", - "nodeType": "VariableDeclaration", - "scope": 8918, - "src": "487:16:45", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 8885, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "487:7:45", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "486:18:45" - }, - "returnParameters": { - "id": 8888, - "nodeType": "ParameterList", - "parameters": [], - "src": "514:0:45" - }, - "scope": 9049, - "src": "458:235:45", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "body": { - "id": 8951, - "nodeType": "Block", - "src": "758:185:45", - "statements": [ - { - "body": { - "id": 8940, - "nodeType": "Block", - "src": "801:68:45", - "statements": [ - { - "expression": { - "arguments": [ - { - "id": 8937, - "name": "interval", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8920, - "src": "849:8:45", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "arguments": [ - { - "id": 8934, - "name": "bandProtocol", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8862, - "src": "826:12:45", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 8933, - "name": "IPriceFeed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8666, - "src": "815:10:45", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IPriceFeed_$8666_$", - "typeString": "type(contract IPriceFeed)" - } - }, - "id": 8935, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "815:24:45", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPriceFeed_$8666", - "typeString": "contract IPriceFeed" - } - }, - "id": 8936, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "getPrice", - "nodeType": "MemberAccess", - "referencedDeclaration": 8665, - "src": "815:33:45", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256) view external returns (uint256)" - } - }, - "id": 8938, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "815:43:45", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 8939, - "nodeType": "ExpressionStatement", - "src": "815:43:45" - } - ] - }, - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 8929, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 8927, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8924, - "src": "788:1:45", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "hexValue": "3137", - "id": 8928, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "792:2:45", - "typeDescriptions": { - "typeIdentifier": "t_rational_17_by_1", - "typeString": "int_const 17" - }, - "value": "17" - }, - "src": "788:6:45", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 8941, - "initializationExpression": { - "assignments": [ - 8924 - ], - "declarations": [ - { - "constant": false, - "id": 8924, - "mutability": "mutable", - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 8941, - "src": "773:9:45", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 8923, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "773:7:45", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 8926, - "initialValue": { - "hexValue": "30", - "id": 8925, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "785:1:45", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "773:13:45" - }, - "loopExpression": { - "expression": { - "id": 8931, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "796:3:45", - "subExpression": { - "id": 8930, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8924, - "src": "796:1:45", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 8932, - "nodeType": "ExpressionStatement", - "src": "796:3:45" - }, - "nodeType": "ForStatement", - "src": "768:101:45" - }, - { - "expression": { - "id": 8949, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 8942, - "name": "currentPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8864, - "src": "878:12:45", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 8947, - "name": "interval", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8920, - "src": "927:8:45", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "arguments": [ - { - "id": 8944, - "name": "bandProtocol", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8862, - "src": "904:12:45", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 8943, - "name": "IPriceFeed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8666, - "src": "893:10:45", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IPriceFeed_$8666_$", - "typeString": "type(contract IPriceFeed)" - } - }, - "id": 8945, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "893:24:45", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPriceFeed_$8666", - "typeString": "contract IPriceFeed" - } - }, - "id": 8946, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "getPrice", - "nodeType": "MemberAccess", - "referencedDeclaration": 8665, - "src": "893:33:45", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256) view external returns (uint256)" - } - }, - "id": 8948, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "893:43:45", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "878:58:45", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 8950, - "nodeType": "ExpressionStatement", - "src": "878:58:45" - } - ] - }, - "functionSelector": "bd31d586", - "id": 8952, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "fetchBandProtocolPrice", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 8921, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 8920, - "mutability": "mutable", - "name": "interval", - "nodeType": "VariableDeclaration", - "scope": 8952, - "src": "731:16:45", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 8919, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "731:7:45", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "730:18:45" - }, - "returnParameters": { - "id": 8922, - "nodeType": "ParameterList", - "parameters": [], - "src": "758:0:45" - }, - "scope": 9049, - "src": "699:244:45", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "body": { - "id": 8985, - "nodeType": "Block", - "src": "1006:181:45", - "statements": [ - { - "body": { - "id": 8974, - "nodeType": "Block", - "src": "1049:66:45", - "statements": [ - { - "expression": { - "arguments": [ - { - "id": 8971, - "name": "interval", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8954, - "src": "1095:8:45", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "arguments": [ - { - "id": 8968, - "name": "chainlink", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8860, - "src": "1074:9:45", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 8967, - "name": "IPriceFeed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8666, - "src": "1063:10:45", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IPriceFeed_$8666_$", - "typeString": "type(contract IPriceFeed)" - } - }, - "id": 8969, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1063:21:45", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPriceFeed_$8666", - "typeString": "contract IPriceFeed" - } - }, - "id": 8970, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "cacheTwap", - "nodeType": "MemberAccess", - "referencedDeclaration": 8652, - "src": "1063:31:45", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256) external returns (uint256)" - } - }, - "id": 8972, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1063:41:45", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 8973, - "nodeType": "ExpressionStatement", - "src": "1063:41:45" - } - ] - }, - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 8963, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 8961, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8958, - "src": "1036:1:45", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "hexValue": "3137", - "id": 8962, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1040:2:45", - "typeDescriptions": { - "typeIdentifier": "t_rational_17_by_1", - "typeString": "int_const 17" - }, - "value": "17" - }, - "src": "1036:6:45", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 8975, - "initializationExpression": { - "assignments": [ - 8958 - ], - "declarations": [ - { - "constant": false, - "id": 8958, - "mutability": "mutable", - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 8975, - "src": "1021:9:45", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 8957, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1021:7:45", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 8960, - "initialValue": { - "hexValue": "30", - "id": 8959, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1033:1:45", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "1021:13:45" - }, - "loopExpression": { - "expression": { - "id": 8965, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "1044:3:45", - "subExpression": { - "id": 8964, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8958, - "src": "1044:1:45", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 8966, - "nodeType": "ExpressionStatement", - "src": "1044:3:45" - }, - "nodeType": "ForStatement", - "src": "1016:99:45" - }, - { - "expression": { - "id": 8983, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 8976, - "name": "currentPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8864, - "src": "1124:12:45", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 8981, - "name": "interval", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8954, - "src": "1171:8:45", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "arguments": [ - { - "id": 8978, - "name": "chainlink", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8860, - "src": "1150:9:45", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 8977, - "name": "IPriceFeed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8666, - "src": "1139:10:45", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IPriceFeed_$8666_$", - "typeString": "type(contract IPriceFeed)" - } - }, - "id": 8979, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1139:21:45", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPriceFeed_$8666", - "typeString": "contract IPriceFeed" - } - }, - "id": 8980, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "cacheTwap", - "nodeType": "MemberAccess", - "referencedDeclaration": 8652, - "src": "1139:31:45", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256) external returns (uint256)" - } - }, - "id": 8982, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1139:41:45", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1124:56:45", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 8984, - "nodeType": "ExpressionStatement", - "src": "1124:56:45" - } - ] - }, - "functionSelector": "1b05d6d0", - "id": 8986, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "cachedChainlinkPrice", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 8955, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 8954, - "mutability": "mutable", - "name": "interval", - "nodeType": "VariableDeclaration", - "scope": 8986, - "src": "979:16:45", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 8953, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "979:7:45", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "978:18:45" - }, - "returnParameters": { - "id": 8956, - "nodeType": "ParameterList", - "parameters": [], - "src": "1006:0:45" - }, - "scope": 9049, - "src": "949:238:45", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "body": { - "id": 9019, - "nodeType": "Block", - "src": "1253:187:45", - "statements": [ - { - "body": { - "id": 9008, - "nodeType": "Block", - "src": "1296:69:45", - "statements": [ - { - "expression": { - "arguments": [ - { - "id": 9005, - "name": "interval", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8988, - "src": "1345:8:45", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "arguments": [ - { - "id": 9002, - "name": "bandProtocol", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8862, - "src": "1321:12:45", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 9001, - "name": "IPriceFeed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8666, - "src": "1310:10:45", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IPriceFeed_$8666_$", - "typeString": "type(contract IPriceFeed)" - } - }, - "id": 9003, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1310:24:45", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPriceFeed_$8666", - "typeString": "contract IPriceFeed" - } - }, - "id": 9004, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "cacheTwap", - "nodeType": "MemberAccess", - "referencedDeclaration": 8652, - "src": "1310:34:45", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256) external returns (uint256)" - } - }, - "id": 9006, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1310:44:45", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 9007, - "nodeType": "ExpressionStatement", - "src": "1310:44:45" - } - ] - }, - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 8997, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 8995, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8992, - "src": "1283:1:45", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "hexValue": "3137", - "id": 8996, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1287:2:45", - "typeDescriptions": { - "typeIdentifier": "t_rational_17_by_1", - "typeString": "int_const 17" - }, - "value": "17" - }, - "src": "1283:6:45", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 9009, - "initializationExpression": { - "assignments": [ - 8992 - ], - "declarations": [ - { - "constant": false, - "id": 8992, - "mutability": "mutable", - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 9009, - "src": "1268:9:45", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 8991, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1268:7:45", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 8994, - "initialValue": { - "hexValue": "30", - "id": 8993, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1280:1:45", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "1268:13:45" - }, - "loopExpression": { - "expression": { - "id": 8999, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "1291:3:45", - "subExpression": { - "id": 8998, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8992, - "src": "1291:1:45", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 9000, - "nodeType": "ExpressionStatement", - "src": "1291:3:45" - }, - "nodeType": "ForStatement", - "src": "1263:102:45" - }, - { - "expression": { - "id": 9017, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 9010, - "name": "currentPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8864, - "src": "1374:12:45", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 9015, - "name": "interval", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8988, - "src": "1424:8:45", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "arguments": [ - { - "id": 9012, - "name": "bandProtocol", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8862, - "src": "1400:12:45", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 9011, - "name": "IPriceFeed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8666, - "src": "1389:10:45", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IPriceFeed_$8666_$", - "typeString": "type(contract IPriceFeed)" - } - }, - "id": 9013, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1389:24:45", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPriceFeed_$8666", - "typeString": "contract IPriceFeed" - } - }, - "id": 9014, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "cacheTwap", - "nodeType": "MemberAccess", - "referencedDeclaration": 8652, - "src": "1389:34:45", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256) external returns (uint256)" - } - }, - "id": 9016, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1389:44:45", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1374:59:45", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 9018, - "nodeType": "ExpressionStatement", - "src": "1374:59:45" - } - ] - }, - "functionSelector": "3d9fe301", - "id": 9020, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "cachedBandProtocolPrice", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 8989, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 8988, - "mutability": "mutable", - "name": "interval", - "nodeType": "VariableDeclaration", - "scope": 9020, - "src": "1226:16:45", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 8987, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1226:7:45", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "1225:18:45" - }, - "returnParameters": { - "id": 8990, - "nodeType": "ParameterList", - "parameters": [], - "src": "1253:0:45" - }, - "scope": 9049, - "src": "1193:247:45", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - }, - { - "body": { - "id": 9047, - "nodeType": "Block", - "src": "1762:134:45", - "statements": [ - { - "expression": { - "id": 9036, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 9029, - "name": "twap", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9025, - "src": "1772:4:45", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 9034, - "name": "interval", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9022, - "src": "1813:8:45", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "arguments": [ - { - "id": 9031, - "name": "bandProtocol", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8862, - "src": "1790:12:45", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 9030, - "name": "IPriceFeed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8666, - "src": "1779:10:45", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IPriceFeed_$8666_$", - "typeString": "type(contract IPriceFeed)" - } - }, - "id": 9032, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1779:24:45", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPriceFeed_$8666", - "typeString": "contract IPriceFeed" - } - }, - "id": 9033, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "getPrice", - "nodeType": "MemberAccess", - "referencedDeclaration": 8665, - "src": "1779:33:45", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256) view external returns (uint256)" - } - }, - "id": 9035, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1779:43:45", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1772:50:45", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 9037, - "nodeType": "ExpressionStatement", - "src": "1772:50:45" - }, - { - "expression": { - "id": 9045, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 9038, - "name": "cachedTwap", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9027, - "src": "1832:10:45", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 9043, - "name": "interval", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9022, - "src": "1880:8:45", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "arguments": [ - { - "id": 9040, - "name": "bandProtocol", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8862, - "src": "1856:12:45", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 9039, - "name": "IPriceFeed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8666, - "src": "1845:10:45", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_IPriceFeed_$8666_$", - "typeString": "type(contract IPriceFeed)" - } - }, - "id": 9041, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1845:24:45", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_contract$_IPriceFeed_$8666", - "typeString": "contract IPriceFeed" - } - }, - "id": 9042, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "cacheTwap", - "nodeType": "MemberAccess", - "referencedDeclaration": 8652, - "src": "1845:34:45", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256) external returns (uint256)" - } - }, - "id": 9044, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1845:44:45", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1832:57:45", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 9046, - "nodeType": "ExpressionStatement", - "src": "1832:57:45" - } - ] - }, - "functionSelector": "e7572230", - "id": 9048, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getPrice", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 9023, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 9022, - "mutability": "mutable", - "name": "interval", - "nodeType": "VariableDeclaration", - "scope": 9048, - "src": "1692:16:45", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 9021, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1692:7:45", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "1691:18:45" - }, - "returnParameters": { - "id": 9028, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 9025, - "mutability": "mutable", - "name": "twap", - "nodeType": "VariableDeclaration", - "scope": 9048, - "src": "1728:12:45", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 9024, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1728:7:45", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 9027, - "mutability": "mutable", - "name": "cachedTwap", - "nodeType": "VariableDeclaration", - "scope": 9048, - "src": "1742:18:45", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 9026, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1742:7:45", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "1727:34:45" - }, - "scope": 9049, - "src": "1674:222:45", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "external" - } - ], - "scope": 9050, - "src": "123:1775:45" - } - ], - "src": "40:1859:45" - }, - "id": 45 - }, - "contracts/test/TestStdReference.sol": { - "ast": { - "absolutePath": "contracts/test/TestStdReference.sol", - "exportedSymbols": { - "IStdReference": [ - 8700 - ], - "TestStdReference": [ - 9103 - ] - }, - "id": 9104, - "license": "GPL-2.0-or-later", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 9051, - "literals": [ - "solidity", - "0.7", - ".6" - ], - "nodeType": "PragmaDirective", - "src": "45:22:46" - }, - { - "id": 9052, - "literals": [ - "experimental", - "ABIEncoderV2" - ], - "nodeType": "PragmaDirective", - "src": "68:33:46" - }, - { - "absolutePath": "contracts/interface/bandProtocol/IStdReference.sol", - "file": "../interface/bandProtocol/IStdReference.sol", - "id": 9054, - "nodeType": "ImportDirective", - "scope": 9104, - "sourceUnit": 8701, - "src": "103:76:46", - "symbolAliases": [ - { - "foreign": { - "id": 9053, - "name": "IStdReference", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "src": "112:13:46", - "typeDescriptions": {} - } - } - ], - "unitAlias": "" - }, - { - "abstract": false, - "baseContracts": [ - { - "baseName": { - "id": 9055, - "name": "IStdReference", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 8700, - "src": "210:13:46", - "typeDescriptions": { - "typeIdentifier": "t_contract$_IStdReference_$8700", - "typeString": "contract IStdReference" - } - }, - "id": 9056, - "nodeType": "InheritanceSpecifier", - "src": "210:13:46" - } - ], - "contractDependencies": [ - 8700 - ], - "contractKind": "contract", - "fullyImplemented": true, - "id": 9103, - "linearizedBaseContracts": [ - 9103, - 8700 - ], - "name": "TestStdReference", - "nodeType": "ContractDefinition", - "nodes": [ - { - "constant": false, - "functionSelector": "dd5bed93", - "id": 9058, - "mutability": "mutable", - "name": "refData", - "nodeType": "VariableDeclaration", - "scope": 9103, - "src": "230:28:46", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ReferenceData_$8676_storage", - "typeString": "struct IStdReference.ReferenceData" - }, - "typeName": { - "id": 9057, - "name": "ReferenceData", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 8676, - "src": "230:13:46", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ReferenceData_$8676_storage_ptr", - "typeString": "struct IStdReference.ReferenceData" - } - }, - "visibility": "public" - }, - { - "body": { - "id": 9061, - "nodeType": "Block", - "src": "279:2:46", - "statements": [] - }, - "id": 9062, - "implemented": true, - "kind": "constructor", - "modifiers": [], - "name": "", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 9059, - "nodeType": "ParameterList", - "parameters": [], - "src": "276:2:46" - }, - "returnParameters": { - "id": 9060, - "nodeType": "ParameterList", - "parameters": [], - "src": "279:0:46" - }, - "scope": 9103, - "src": "265:16:46", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - { - "body": { - "id": 9071, - "nodeType": "Block", - "src": "351:35:46", - "statements": [ - { - "expression": { - "id": 9069, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 9067, - "name": "refData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9058, - "src": "361:7:46", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ReferenceData_$8676_storage", - "typeString": "struct IStdReference.ReferenceData storage ref" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 9068, - "name": "_refData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9064, - "src": "371:8:46", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ReferenceData_$8676_memory_ptr", - "typeString": "struct IStdReference.ReferenceData memory" - } - }, - "src": "361:18:46", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ReferenceData_$8676_storage", - "typeString": "struct IStdReference.ReferenceData storage ref" - } - }, - "id": 9070, - "nodeType": "ExpressionStatement", - "src": "361:18:46" - } - ] - }, - "functionSelector": "6d4d6815", - "id": 9072, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "setReferenceData", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 9065, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 9064, - "mutability": "mutable", - "name": "_refData", - "nodeType": "VariableDeclaration", - "scope": 9072, - "src": "313:29:46", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ReferenceData_$8676_memory_ptr", - "typeString": "struct IStdReference.ReferenceData" - }, - "typeName": { - "id": 9063, - "name": "ReferenceData", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 8676, - "src": "313:13:46", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ReferenceData_$8676_storage_ptr", - "typeString": "struct IStdReference.ReferenceData" - } - }, - "visibility": "internal" - } - ], - "src": "312:31:46" - }, - "returnParameters": { - "id": 9066, - "nodeType": "ParameterList", - "parameters": [], - "src": "351:0:46" - }, - "scope": 9103, - "src": "287:99:46", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "public" - }, - { - "baseFunctions": [ - 8686 - ], - "body": { - "id": 9084, - "nodeType": "Block", - "src": "551:31:46", - "statements": [ - { - "expression": { - "id": 9082, - "name": "refData", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9058, - "src": "568:7:46", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ReferenceData_$8676_storage", - "typeString": "struct IStdReference.ReferenceData storage ref" - } - }, - "functionReturnParameters": 9081, - "id": 9083, - "nodeType": "Return", - "src": "561:14:46" - } - ] - }, - "functionSelector": "65555bcc", - "id": 9085, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getReferenceData", - "nodeType": "FunctionDefinition", - "overrides": { - "id": 9078, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "499:8:46" - }, - "parameters": { - "id": 9077, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 9074, - "mutability": "mutable", - "name": "_base", - "nodeType": "VariableDeclaration", - "scope": 9085, - "src": "418:19:46", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" - }, - "typeName": { - "id": 9073, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "418:6:46", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 9076, - "mutability": "mutable", - "name": "_quote", - "nodeType": "VariableDeclaration", - "scope": 9085, - "src": "439:20:46", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string" - }, - "typeName": { - "id": 9075, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "439:6:46", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "visibility": "internal" - } - ], - "src": "417:43:46" - }, - "returnParameters": { - "id": 9081, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 9080, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 9085, - "src": "525:20:46", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ReferenceData_$8676_memory_ptr", - "typeString": "struct IStdReference.ReferenceData" - }, - "typeName": { - "id": 9079, - "name": "ReferenceData", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 8676, - "src": "525:13:46", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ReferenceData_$8676_storage_ptr", - "typeString": "struct IStdReference.ReferenceData" - } - }, - "visibility": "internal" - } - ], - "src": "524:22:46" - }, - "scope": 9103, - "src": "392:190:46", - "stateMutability": "view", - "virtual": false, - "visibility": "external" - }, - { - "baseFunctions": [ - 8699 - ], - "body": { - "id": 9101, - "nodeType": "Block", - "src": "759:25:46", - "statements": [ - { - "expression": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 9098, - "name": "revert", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -19, - -19 - ], - "referencedDeclaration": -19, - "src": "769:6:46", - "typeDescriptions": { - "typeIdentifier": "t_function_revert_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 9099, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "769:8:46", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 9100, - "nodeType": "ExpressionStatement", - "src": "769:8:46" - } - ] - }, - "functionSelector": "e42a071b", - "id": 9102, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "getReferenceDataBulk", - "nodeType": "FunctionDefinition", - "overrides": { - "id": 9093, - "nodeType": "OverrideSpecifier", - "overrides": [], - "src": "705:8:46" - }, - "parameters": { - "id": 9092, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 9088, - "mutability": "mutable", - "name": "_bases", - "nodeType": "VariableDeclaration", - "scope": 9102, - "src": "618:22:46", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", - "typeString": "string[]" - }, - "typeName": { - "baseType": { - "id": 9086, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "618:6:46", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "id": 9087, - "nodeType": "ArrayTypeName", - "src": "618:8:46", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", - "typeString": "string[]" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 9091, - "mutability": "mutable", - "name": "_quotes", - "nodeType": "VariableDeclaration", - "scope": 9102, - "src": "642:23:46", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", - "typeString": "string[]" - }, - "typeName": { - "baseType": { - "id": 9089, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "642:6:46", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "id": 9090, - "nodeType": "ArrayTypeName", - "src": "642:8:46", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", - "typeString": "string[]" - } - }, - "visibility": "internal" - } - ], - "src": "617:49:46" - }, - "returnParameters": { - "id": 9097, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 9096, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 9102, - "src": "731:22:46", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_ReferenceData_$8676_memory_ptr_$dyn_memory_ptr", - "typeString": "struct IStdReference.ReferenceData[]" - }, - "typeName": { - "baseType": { - "id": 9094, - "name": "ReferenceData", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 8676, - "src": "731:13:46", - "typeDescriptions": { - "typeIdentifier": "t_struct$_ReferenceData_$8676_storage_ptr", - "typeString": "struct IStdReference.ReferenceData" - } - }, - "id": 9095, - "nodeType": "ArrayTypeName", - "src": "731:15:46", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_ReferenceData_$8676_storage_$dyn_storage_ptr", - "typeString": "struct IStdReference.ReferenceData[]" - } - }, - "visibility": "internal" - } - ], - "src": "730:24:46" - }, - "scope": 9103, - "src": "588:196:46", - "stateMutability": "view", - "virtual": false, - "visibility": "external" - } - ], - "scope": 9104, - "src": "181:605:46" - } - ], - "src": "45:742:46" - }, - "id": 46 - }, - "contracts/twap/CachedTwap.sol": { - "ast": { - "absolutePath": "contracts/twap/CachedTwap.sol", - "exportedSymbols": { - "CachedTwap": [ - 9207 - ], - "CumulativeTwap": [ - 9592 - ] - }, - "id": 9208, - "license": "MIT License", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 9105, - "literals": [ - "solidity", - "0.7", - ".6" - ], - "nodeType": "PragmaDirective", - "src": "40:22:47" - }, - { - "id": 9106, - "literals": [ - "experimental", - "ABIEncoderV2" - ], - "nodeType": "PragmaDirective", - "src": "63:33:47" - }, - { - "absolutePath": "contracts/twap/CumulativeTwap.sol", - "file": "./CumulativeTwap.sol", - "id": 9108, - "nodeType": "ImportDirective", - "scope": 9208, - "sourceUnit": 9593, - "src": "98:54:47", - "symbolAliases": [ - { - "foreign": { - "id": 9107, - "name": "CumulativeTwap", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "src": "107:14:47", - "typeDescriptions": {} - } - } - ], - "unitAlias": "" - }, - { - "abstract": true, - "baseContracts": [ - { - "baseName": { - "id": 9109, - "name": "CumulativeTwap", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 9592, - "src": "186:14:47", - "typeDescriptions": { - "typeIdentifier": "t_contract$_CumulativeTwap_$9592", - "typeString": "contract CumulativeTwap" - } - }, - "id": 9110, - "nodeType": "InheritanceSpecifier", - "src": "186:14:47" - } - ], - "contractDependencies": [ - 8636, - 9592 - ], - "contractKind": "contract", - "fullyImplemented": true, - "id": 9207, - "linearizedBaseContracts": [ - 9207, - 9592, - 8636 - ], - "name": "CachedTwap", - "nodeType": "ContractDefinition", - "nodes": [ - { - "constant": false, - "id": 9112, - "mutability": "mutable", - "name": "_cachedTwap", - "nodeType": "VariableDeclaration", - "scope": 9207, - "src": "207:28:47", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 9111, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "207:7:47", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 9114, - "mutability": "mutable", - "name": "_lastUpdatedAt", - "nodeType": "VariableDeclaration", - "scope": 9207, - "src": "241:31:47", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - }, - "typeName": { - "id": 9113, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "241:7:47", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 9116, - "mutability": "mutable", - "name": "_interval", - "nodeType": "VariableDeclaration", - "scope": 9207, - "src": "278:25:47", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - }, - "typeName": { - "id": 9115, - "name": "uint80", - "nodeType": "ElementaryTypeName", - "src": "278:6:47", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - }, - "visibility": "internal" - }, - { - "body": { - "id": 9125, - "nodeType": "Block", - "src": "339:37:47", - "statements": [ - { - "expression": { - "id": 9123, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 9121, - "name": "_interval", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9116, - "src": "349:9:47", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 9122, - "name": "interval", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9118, - "src": "361:8:47", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - }, - "src": "349:20:47", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - }, - "id": 9124, - "nodeType": "ExpressionStatement", - "src": "349:20:47" - } - ] - }, - "id": 9126, - "implemented": true, - "kind": "constructor", - "modifiers": [], - "name": "", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 9119, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 9118, - "mutability": "mutable", - "name": "interval", - "nodeType": "VariableDeclaration", - "scope": 9126, - "src": "322:15:47", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - }, - "typeName": { - "id": 9117, - "name": "uint80", - "nodeType": "ElementaryTypeName", - "src": "322:6:47", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - }, - "visibility": "internal" - } - ], - "src": "321:17:47" - }, - "returnParameters": { - "id": 9120, - "nodeType": "ParameterList", - "parameters": [], - "src": "339:0:47" - }, - "scope": 9207, - "src": "310:66:47", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 9179, - "nodeType": "Block", - "src": "538:657:47", - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 9139, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 9137, - "name": "_interval", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9116, - "src": "659:9:47", - "typeDescriptions": { - "typeIdentifier": "t_uint80", - "typeString": "uint80" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "id": 9138, - "name": "interval", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9128, - "src": "672:8:47", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "659:21:47", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 9147, - "nodeType": "IfStatement", - "src": "655:125:47", - "trueBody": { - "id": 9146, - "nodeType": "Block", - "src": "682:98:47", - "statements": [ - { - "expression": { - "arguments": [ - { - "id": 9141, - "name": "interval", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9128, - "src": "723:8:47", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 9142, - "name": "latestPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9130, - "src": "733:11:47", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 9143, - "name": "latestUpdatedTimestamp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9132, - "src": "746:22:47", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 9140, - "name": "_calculateTwapPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9480, - "src": "703:19:47", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) view returns (uint256)" - } - }, - "id": 9144, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "703:66:47", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 9136, - "id": 9145, - "nodeType": "Return", - "src": "696:73:47" - } - ] - } - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 9151, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 9148, - "name": "_blockTimestamp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8626, - "src": "882:15:47", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", - "typeString": "function () view returns (uint256)" - } - }, - "id": 9149, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "882:17:47", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "id": 9150, - "name": "_lastUpdatedAt", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9114, - "src": "903:14:47", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "src": "882:35:47", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 9155, - "nodeType": "IfStatement", - "src": "878:84:47", - "trueBody": { - "id": 9154, - "nodeType": "Block", - "src": "919:43:47", - "statements": [ - { - "expression": { - "id": 9152, - "name": "_cachedTwap", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9112, - "src": "940:11:47", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 9136, - "id": 9153, - "nodeType": "Return", - "src": "933:18:47" - } - ] - } - }, - { - "expression": { - "arguments": [ - { - "id": 9157, - "name": "latestPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9130, - "src": "980:11:47", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 9158, - "name": "latestUpdatedTimestamp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9132, - "src": "993:22:47", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 9156, - "name": "_update", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9324, - "src": "972:7:47", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$", - "typeString": "function (uint256,uint256)" - } - }, - "id": 9159, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "972:44:47", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 9160, - "nodeType": "ExpressionStatement", - "src": "972:44:47" - }, - { - "expression": { - "id": 9167, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 9161, - "name": "_lastUpdatedAt", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9114, - "src": "1026:14:47", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 9164, - "name": "_blockTimestamp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8626, - "src": "1051:15:47", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", - "typeString": "function () view returns (uint256)" - } - }, - "id": 9165, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1051:17:47", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 9163, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1043:7:47", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_uint160_$", - "typeString": "type(uint160)" - }, - "typeName": { - "id": 9162, - "name": "uint160", - "nodeType": "ElementaryTypeName", - "src": "1043:7:47", - "typeDescriptions": {} - } - }, - "id": 9166, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1043:26:47", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "src": "1026:43:47", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "id": 9168, - "nodeType": "ExpressionStatement", - "src": "1026:43:47" - }, - { - "expression": { - "id": 9175, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 9169, - "name": "_cachedTwap", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9112, - "src": "1079:11:47", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 9171, - "name": "interval", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9128, - "src": "1113:8:47", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 9172, - "name": "latestPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9130, - "src": "1123:11:47", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 9173, - "name": "latestUpdatedTimestamp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9132, - "src": "1136:22:47", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 9170, - "name": "_calculateTwapPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9480, - "src": "1093:19:47", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) view returns (uint256)" - } - }, - "id": 9174, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1093:66:47", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1079:80:47", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 9176, - "nodeType": "ExpressionStatement", - "src": "1079:80:47" - }, - { - "expression": { - "id": 9177, - "name": "_cachedTwap", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9112, - "src": "1177:11:47", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 9136, - "id": 9178, - "nodeType": "Return", - "src": "1170:18:47" - } - ] - }, - "id": 9180, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_cacheTwap", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 9133, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 9128, - "mutability": "mutable", - "name": "interval", - "nodeType": "VariableDeclaration", - "scope": 9180, - "src": "411:16:47", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 9127, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "411:7:47", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 9130, - "mutability": "mutable", - "name": "latestPrice", - "nodeType": "VariableDeclaration", - "scope": 9180, - "src": "437:19:47", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 9129, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "437:7:47", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 9132, - "mutability": "mutable", - "name": "latestUpdatedTimestamp", - "nodeType": "VariableDeclaration", - "scope": 9180, - "src": "466:30:47", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 9131, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "466:7:47", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "401:101:47" - }, - "returnParameters": { - "id": 9136, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 9135, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 9180, - "src": "529:7:47", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 9134, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "529:7:47", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "528:9:47" - }, - "scope": 9207, - "src": "382:813:47", - "stateMutability": "nonpayable", - "virtual": true, - "visibility": "internal" - }, - { - "body": { - "id": 9205, - "nodeType": "Block", - "src": "1358:183:47", - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 9194, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 9191, - "name": "_blockTimestamp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8626, - "src": "1372:15:47", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", - "typeString": "function () view returns (uint256)" - } - }, - "id": 9192, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1372:17:47", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "id": 9193, - "name": "_lastUpdatedAt", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9114, - "src": "1393:14:47", - "typeDescriptions": { - "typeIdentifier": "t_uint160", - "typeString": "uint160" - } - }, - "src": "1372:35:47", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 9198, - "nodeType": "IfStatement", - "src": "1368:84:47", - "trueBody": { - "id": 9197, - "nodeType": "Block", - "src": "1409:43:47", - "statements": [ - { - "expression": { - "id": 9195, - "name": "_cachedTwap", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9112, - "src": "1430:11:47", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 9190, - "id": 9196, - "nodeType": "Return", - "src": "1423:18:47" - } - ] - } - }, - { - "expression": { - "arguments": [ - { - "id": 9200, - "name": "interval", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9182, - "src": "1488:8:47", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 9201, - "name": "latestPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9184, - "src": "1498:11:47", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 9202, - "name": "latestUpdatedTimestamp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9186, - "src": "1511:22:47", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 9199, - "name": "_calculateTwapPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9480, - "src": "1468:19:47", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256,uint256) view returns (uint256)" - } - }, - "id": 9203, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1468:66:47", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 9190, - "id": 9204, - "nodeType": "Return", - "src": "1461:73:47" - } - ] - }, - "id": 9206, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_getCachedTwap", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 9187, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 9182, - "mutability": "mutable", - "name": "interval", - "nodeType": "VariableDeclaration", - "scope": 9206, - "src": "1234:16:47", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 9181, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1234:7:47", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 9184, - "mutability": "mutable", - "name": "latestPrice", - "nodeType": "VariableDeclaration", - "scope": 9206, - "src": "1260:19:47", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 9183, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1260:7:47", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 9186, - "mutability": "mutable", - "name": "latestUpdatedTimestamp", - "nodeType": "VariableDeclaration", - "scope": 9206, - "src": "1289:30:47", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 9185, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1289:7:47", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "1224:101:47" - }, - "returnParameters": { - "id": 9190, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 9189, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 9206, - "src": "1349:7:47", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 9188, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1349:7:47", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "1348:9:47" - }, - "scope": 9207, - "src": "1201:340:47", - "stateMutability": "view", - "virtual": false, - "visibility": "internal" - } - ], - "scope": 9208, - "src": "154:1389:47" - } - ], - "src": "40:1504:47" - }, - "id": 47 - }, - "contracts/twap/CumulativeTwap.sol": { - "ast": { - "absolutePath": "contracts/twap/CumulativeTwap.sol", - "exportedSymbols": { - "BlockContext": [ - 8636 - ], - "CumulativeTwap": [ - 9592 - ], - "SafeMath": [ - 400 - ] - }, - "id": 9593, - "license": "MIT License", - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 9209, - "literals": [ - "solidity", - "0.7", - ".6" - ], - "nodeType": "PragmaDirective", - "src": "40:22:48" - }, - { - "id": 9210, - "literals": [ - "experimental", - "ABIEncoderV2" - ], - "nodeType": "PragmaDirective", - "src": "63:33:48" - }, - { - "absolutePath": "contracts/base/BlockContext.sol", - "file": "../base/BlockContext.sol", - "id": 9212, - "nodeType": "ImportDirective", - "scope": 9593, - "sourceUnit": 8637, - "src": "98:56:48", - "symbolAliases": [ - { - "foreign": { - "id": 9211, - "name": "BlockContext", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "src": "107:12:48", - "typeDescriptions": {} - } - } - ], - "unitAlias": "" - }, - { - "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol", - "file": "@openzeppelin/contracts/math/SafeMath.sol", - "id": 9214, - "nodeType": "ImportDirective", - "scope": 9593, - "sourceUnit": 401, - "src": "155:69:48", - "symbolAliases": [ - { - "foreign": { - "id": 9213, - "name": "SafeMath", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "src": "164:8:48", - "typeDescriptions": {} - } - } - ], - "unitAlias": "" - }, - { - "abstract": false, - "baseContracts": [ - { - "baseName": { - "id": 9215, - "name": "BlockContext", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 8636, - "src": "253:12:48", - "typeDescriptions": { - "typeIdentifier": "t_contract$_BlockContext_$8636", - "typeString": "contract BlockContext" - } - }, - "id": 9216, - "nodeType": "InheritanceSpecifier", - "src": "253:12:48" - } - ], - "contractDependencies": [ - 8636 - ], - "contractKind": "contract", - "fullyImplemented": true, - "id": 9592, - "linearizedBaseContracts": [ - 9592, - 8636 - ], - "name": "CumulativeTwap", - "nodeType": "ContractDefinition", - "nodes": [ - { - "id": 9219, - "libraryName": { - "id": 9217, - "name": "SafeMath", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 400, - "src": "278:8:48", - "typeDescriptions": { - "typeIdentifier": "t_contract$_SafeMath_$400", - "typeString": "library SafeMath" - } - }, - "nodeType": "UsingForDirective", - "src": "272:27:48", - "typeName": { - "id": 9218, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "291:7:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - }, - { - "canonicalName": "CumulativeTwap.Observation", - "id": 9226, - "members": [ - { - "constant": false, - "id": 9221, - "mutability": "mutable", - "name": "price", - "nodeType": "VariableDeclaration", - "scope": 9226, - "src": "362:13:48", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 9220, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "362:7:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 9223, - "mutability": "mutable", - "name": "priceCumulative", - "nodeType": "VariableDeclaration", - "scope": 9226, - "src": "385:23:48", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 9222, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "385:7:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 9225, - "mutability": "mutable", - "name": "timestamp", - "nodeType": "VariableDeclaration", - "scope": 9226, - "src": "418:17:48", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 9224, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "418:7:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "name": "Observation", - "nodeType": "StructDefinition", - "scope": 9592, - "src": "333:109:48", - "visibility": "public" - }, - { - "anonymous": false, - "id": 9234, - "name": "PriceUpdated", - "nodeType": "EventDefinition", - "parameters": { - "id": 9233, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 9228, - "indexed": false, - "mutability": "mutable", - "name": "price", - "nodeType": "VariableDeclaration", - "scope": 9234, - "src": "494:13:48", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 9227, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "494:7:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 9230, - "indexed": false, - "mutability": "mutable", - "name": "timestamp", - "nodeType": "VariableDeclaration", - "scope": 9234, - "src": "509:17:48", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 9229, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "509:7:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 9232, - "indexed": false, - "mutability": "mutable", - "name": "indexAt", - "nodeType": "VariableDeclaration", - "scope": 9234, - "src": "528:13:48", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 9231, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "528:5:48", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "visibility": "internal" - } - ], - "src": "493:49:48" - }, - "src": "475:68:48" - }, - { - "constant": false, - "functionSelector": "252c09d7", - "id": 9238, - "mutability": "mutable", - "name": "observations", - "nodeType": "VariableDeclaration", - "scope": 9592, - "src": "735:36:48", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Observation_$9226_storage_$256_storage", - "typeString": "struct CumulativeTwap.Observation[256]" - }, - "typeName": { - "baseType": { - "id": 9235, - "name": "Observation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 9226, - "src": "735:11:48", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$9226_storage_ptr", - "typeString": "struct CumulativeTwap.Observation" - } - }, - "id": 9237, - "length": { - "hexValue": "323536", - "id": 9236, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "747:3:48", - "typeDescriptions": { - "typeIdentifier": "t_rational_256_by_1", - "typeString": "int_const 256" - }, - "value": "256" - }, - "nodeType": "ArrayTypeName", - "src": "735:16:48", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Observation_$9226_storage_$256_storage_ptr", - "typeString": "struct CumulativeTwap.Observation[256]" - } - }, - "visibility": "public" - }, - { - "constant": false, - "functionSelector": "aed3aff7", - "id": 9240, - "mutability": "mutable", - "name": "currentObservationIndex", - "nodeType": "VariableDeclaration", - "scope": 9592, - "src": "778:36:48", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 9239, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "778:5:48", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "visibility": "public" - }, - { - "body": { - "id": 9323, - "nodeType": "Block", - "src": "892:1291:48", - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 9256, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 9249, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 9247, - "name": "currentObservationIndex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9240, - "src": "943:23:48", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 9248, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "970:1:48", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "943:28:48", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 9255, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "baseExpression": { - "id": 9250, - "name": "observations", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9238, - "src": "975:12:48", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Observation_$9226_storage_$256_storage", - "typeString": "struct CumulativeTwap.Observation storage ref[256] storage ref" - } - }, - "id": 9252, - "indexExpression": { - "hexValue": "30", - "id": 9251, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "988:1:48", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "975:15:48", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$9226_storage", - "typeString": "struct CumulativeTwap.Observation storage ref" - } - }, - "id": 9253, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "timestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": 9225, - "src": "975:25:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 9254, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1004:1:48", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "975:30:48", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "943:62:48", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 9275, - "nodeType": "IfStatement", - "src": "939:276:48", - "trueBody": { - "id": 9274, - "nodeType": "Block", - "src": "1007:208:48", - "statements": [ - { - "expression": { - "id": 9265, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "id": 9257, - "name": "observations", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9238, - "src": "1021:12:48", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Observation_$9226_storage_$256_storage", - "typeString": "struct CumulativeTwap.Observation storage ref[256] storage ref" - } - }, - "id": 9259, - "indexExpression": { - "hexValue": "30", - "id": 9258, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1034:1:48", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "1021:15:48", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$9226_storage", - "typeString": "struct CumulativeTwap.Observation storage ref" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "id": 9261, - "name": "price", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9242, - "src": "1060:5:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "hexValue": "30", - "id": 9262, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1084:1:48", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - { - "id": 9263, - "name": "lastUpdatedTimestamp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9244, - "src": "1098:20:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 9260, - "name": "Observation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9226, - "src": "1039:11:48", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_Observation_$9226_storage_ptr_$", - "typeString": "type(struct CumulativeTwap.Observation storage pointer)" - } - }, - "id": 9264, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "structConstructorCall", - "lValueRequested": false, - "names": [ - "price", - "priceCumulative", - "timestamp" - ], - "nodeType": "FunctionCall", - "src": "1039:82:48", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$9226_memory_ptr", - "typeString": "struct CumulativeTwap.Observation memory" - } - }, - "src": "1021:100:48", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$9226_storage", - "typeString": "struct CumulativeTwap.Observation storage ref" - } - }, - "id": 9266, - "nodeType": "ExpressionStatement", - "src": "1021:100:48" - }, - { - "eventCall": { - "arguments": [ - { - "id": 9268, - "name": "price", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9242, - "src": "1153:5:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 9269, - "name": "lastUpdatedTimestamp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9244, - "src": "1160:20:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "hexValue": "30", - "id": 9270, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1182:1:48", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 9267, - "name": "PriceUpdated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9234, - "src": "1140:12:48", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_uint8_$returns$__$", - "typeString": "function (uint256,uint256,uint8)" - } - }, - "id": 9271, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1140:44:48", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 9272, - "nodeType": "EmitStatement", - "src": "1135:49:48" - }, - { - "functionReturnParameters": 9246, - "id": 9273, - "nodeType": "Return", - "src": "1198:7:48" - } - ] - } - }, - { - "assignments": [ - 9277 - ], - "declarations": [ - { - "constant": false, - "id": 9277, - "mutability": "mutable", - "name": "lastObservation", - "nodeType": "VariableDeclaration", - "scope": 9323, - "src": "1440:34:48", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$9226_memory_ptr", - "typeString": "struct CumulativeTwap.Observation" - }, - "typeName": { - "id": 9276, - "name": "Observation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 9226, - "src": "1440:11:48", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$9226_storage_ptr", - "typeString": "struct CumulativeTwap.Observation" - } - }, - "visibility": "internal" - } - ], - "id": 9281, - "initialValue": { - "baseExpression": { - "id": 9278, - "name": "observations", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9238, - "src": "1477:12:48", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Observation_$9226_storage_$256_storage", - "typeString": "struct CumulativeTwap.Observation storage ref[256] storage ref" - } - }, - "id": 9280, - "indexExpression": { - "id": 9279, - "name": "currentObservationIndex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9240, - "src": "1490:23:48", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1477:37:48", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$9226_storage", - "typeString": "struct CumulativeTwap.Observation storage ref" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1440:74:48" - }, - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 9286, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 9283, - "name": "lastUpdatedTimestamp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9244, - "src": "1532:20:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "expression": { - "id": 9284, - "name": "lastObservation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9277, - "src": "1556:15:48", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$9226_memory_ptr", - "typeString": "struct CumulativeTwap.Observation memory" - } - }, - "id": 9285, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "timestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": 9225, - "src": "1556:25:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1532:49:48", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - { - "hexValue": "43545f4954", - "id": 9287, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1583:7:48", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_b9b63a062e188cc2ae755ee9cb5205b4231032ddfc171193deac14763ce9e913", - "typeString": "literal_string \"CT_IT\"" - }, - "value": "CT_IT" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - { - "typeIdentifier": "t_stringliteral_b9b63a062e188cc2ae755ee9cb5205b4231032ddfc171193deac14763ce9e913", - "typeString": "literal_string \"CT_IT\"" - } - ], - "id": 9282, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -18, - -18 - ], - "referencedDeclaration": -18, - "src": "1524:7:48", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", - "typeString": "function (bool,string memory) pure" - } - }, - "id": 9288, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1524:67:48", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 9289, - "nodeType": "ExpressionStatement", - "src": "1524:67:48" - }, - { - "expression": { - "id": 9291, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "1742:25:48", - "subExpression": { - "id": 9290, - "name": "currentObservationIndex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9240, - "src": "1742:23:48", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 9292, - "nodeType": "ExpressionStatement", - "src": "1742:25:48" - }, - { - "assignments": [ - 9294 - ], - "declarations": [ - { - "constant": false, - "id": 9294, - "mutability": "mutable", - "name": "elapsedTime", - "nodeType": "VariableDeclaration", - "scope": 9323, - "src": "1778:19:48", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 9293, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1778:7:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 9299, - "initialValue": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 9298, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 9295, - "name": "lastUpdatedTimestamp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9244, - "src": "1800:20:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "expression": { - "id": 9296, - "name": "lastObservation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9277, - "src": "1823:15:48", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$9226_memory_ptr", - "typeString": "struct CumulativeTwap.Observation memory" - } - }, - "id": 9297, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "timestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": 9225, - "src": "1823:25:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1800:48:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1778:70:48" - }, - { - "expression": { - "id": 9315, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "baseExpression": { - "id": 9300, - "name": "observations", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9238, - "src": "1858:12:48", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Observation_$9226_storage_$256_storage", - "typeString": "struct CumulativeTwap.Observation storage ref[256] storage ref" - } - }, - "id": 9302, - "indexExpression": { - "id": 9301, - "name": "currentObservationIndex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9240, - "src": "1871:23:48", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "1858:37:48", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$9226_storage", - "typeString": "struct CumulativeTwap.Observation storage ref" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 9311, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 9304, - "name": "lastObservation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9277, - "src": "1941:15:48", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$9226_memory_ptr", - "typeString": "struct CumulativeTwap.Observation memory" - } - }, - "id": 9305, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "priceCumulative", - "nodeType": "MemberAccess", - "referencedDeclaration": 9223, - "src": "1941:31:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "components": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 9309, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 9306, - "name": "lastObservation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9277, - "src": "1976:15:48", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$9226_memory_ptr", - "typeString": "struct CumulativeTwap.Observation memory" - } - }, - "id": 9307, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "price", - "nodeType": "MemberAccess", - "referencedDeclaration": 9221, - "src": "1976:21:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "id": 9308, - "name": "elapsedTime", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9294, - "src": "2000:11:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1976:35:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 9310, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "1975:37:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1941:71:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 9312, - "name": "lastUpdatedTimestamp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9244, - "src": "2037:20:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 9313, - "name": "price", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9242, - "src": "2078:5:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 9303, - "name": "Observation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9226, - "src": "1898:11:48", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_struct$_Observation_$9226_storage_ptr_$", - "typeString": "type(struct CumulativeTwap.Observation storage pointer)" - } - }, - "id": 9314, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "structConstructorCall", - "lValueRequested": false, - "names": [ - "priceCumulative", - "timestamp", - "price" - ], - "nodeType": "FunctionCall", - "src": "1898:196:48", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$9226_memory_ptr", - "typeString": "struct CumulativeTwap.Observation memory" - } - }, - "src": "1858:236:48", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$9226_storage", - "typeString": "struct CumulativeTwap.Observation storage ref" - } - }, - "id": 9316, - "nodeType": "ExpressionStatement", - "src": "1858:236:48" - }, - { - "eventCall": { - "arguments": [ - { - "id": 9318, - "name": "price", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9242, - "src": "2123:5:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 9319, - "name": "lastUpdatedTimestamp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9244, - "src": "2130:20:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "id": 9320, - "name": "currentObservationIndex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9240, - "src": "2152:23:48", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - ], - "id": 9317, - "name": "PriceUpdated", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9234, - "src": "2110:12:48", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_uint8_$returns$__$", - "typeString": "function (uint256,uint256,uint8)" - } - }, - "id": 9321, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2110:66:48", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 9322, - "nodeType": "EmitStatement", - "src": "2105:71:48" - } - ] - }, - "id": 9324, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_update", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 9245, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 9242, - "mutability": "mutable", - "name": "price", - "nodeType": "VariableDeclaration", - "scope": 9324, - "src": "838:13:48", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 9241, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "838:7:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 9244, - "mutability": "mutable", - "name": "lastUpdatedTimestamp", - "nodeType": "VariableDeclaration", - "scope": 9324, - "src": "853:28:48", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 9243, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "853:7:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "837:45:48" - }, - "returnParameters": { - "id": 9246, - "nodeType": "ParameterList", - "parameters": [], - "src": "892:0:48" - }, - "scope": 9592, - "src": "821:1362:48", - "stateMutability": "nonpayable", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 9479, - "nodeType": "Block", - "src": "2351:2333:48", - "statements": [ - { - "assignments": [ - 9336 - ], - "declarations": [ - { - "constant": false, - "id": 9336, - "mutability": "mutable", - "name": "latestObservation", - "nodeType": "VariableDeclaration", - "scope": 9479, - "src": "2361:36:48", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$9226_memory_ptr", - "typeString": "struct CumulativeTwap.Observation" - }, - "typeName": { - "id": 9335, - "name": "Observation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 9226, - "src": "2361:11:48", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$9226_storage_ptr", - "typeString": "struct CumulativeTwap.Observation" - } - }, - "visibility": "internal" - } - ], - "id": 9340, - "initialValue": { - "baseExpression": { - "id": 9337, - "name": "observations", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9238, - "src": "2400:12:48", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Observation_$9226_storage_$256_storage", - "typeString": "struct CumulativeTwap.Observation storage ref[256] storage ref" - } - }, - "id": 9339, - "indexExpression": { - "id": 9338, - "name": "currentObservationIndex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9240, - "src": "2413:23:48", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2400:37:48", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$9226_storage", - "typeString": "struct CumulativeTwap.Observation storage ref" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2361:76:48" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 9344, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 9341, - "name": "latestObservation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9336, - "src": "2451:17:48", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$9226_memory_ptr", - "typeString": "struct CumulativeTwap.Observation memory" - } - }, - "id": 9342, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "price", - "nodeType": "MemberAccess", - "referencedDeclaration": 9221, - "src": "2451:23:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 9343, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2478:1:48", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2451:28:48", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 9350, - "nodeType": "IfStatement", - "src": "2447:104:48", - "trueBody": { - "id": 9349, - "nodeType": "Block", - "src": "2481:70:48", - "statements": [ - { - "expression": { - "arguments": [ - { - "hexValue": "43545f4e44", - "id": 9346, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2532:7:48", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_fa617c1c9ea21235ad24126b1fa10038d761b1d0295223e172120fd1e9768188", - "typeString": "literal_string \"CT_ND\"" - }, - "value": "CT_ND" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_fa617c1c9ea21235ad24126b1fa10038d761b1d0295223e172120fd1e9768188", - "typeString": "literal_string \"CT_ND\"" - } - ], - "id": 9345, - "name": "revert", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -19, - -19 - ], - "referencedDeclaration": -19, - "src": "2525:6:48", - "typeDescriptions": { - "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", - "typeString": "function (string memory) pure" - } - }, - "id": 9347, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2525:15:48", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 9348, - "nodeType": "ExpressionStatement", - "src": "2525:15:48" - } - ] - } - }, - { - "assignments": [ - 9352 - ], - "declarations": [ - { - "constant": false, - "id": 9352, - "mutability": "mutable", - "name": "currentTimestamp", - "nodeType": "VariableDeclaration", - "scope": 9479, - "src": "2561:24:48", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 9351, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2561:7:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 9355, - "initialValue": { - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 9353, - "name": "_blockTimestamp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 8626, - "src": "2588:15:48", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", - "typeString": "function () view returns (uint256)" - } - }, - "id": 9354, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2588:17:48", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2561:44:48" - }, - { - "assignments": [ - 9357 - ], - "declarations": [ - { - "constant": false, - "id": 9357, - "mutability": "mutable", - "name": "targetTimestamp", - "nodeType": "VariableDeclaration", - "scope": 9479, - "src": "2615:23:48", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 9356, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2615:7:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 9362, - "initialValue": { - "arguments": [ - { - "id": 9360, - "name": "interval", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9326, - "src": "2662:8:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 9358, - "name": "currentTimestamp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9352, - "src": "2641:16:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 9359, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sub", - "nodeType": "MemberAccess", - "referencedDeclaration": 249, - "src": "2641:20:48", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 9361, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2641:30:48", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2615:56:48" - }, - { - "assignments": [ - 9364, - 9366 - ], - "declarations": [ - { - "constant": false, - "id": 9364, - "mutability": "mutable", - "name": "beforeOrAt", - "nodeType": "VariableDeclaration", - "scope": 9479, - "src": "2682:29:48", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$9226_memory_ptr", - "typeString": "struct CumulativeTwap.Observation" - }, - "typeName": { - "id": 9363, - "name": "Observation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 9226, - "src": "2682:11:48", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$9226_storage_ptr", - "typeString": "struct CumulativeTwap.Observation" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 9366, - "mutability": "mutable", - "name": "atOrAfter", - "nodeType": "VariableDeclaration", - "scope": 9479, - "src": "2713:28:48", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$9226_memory_ptr", - "typeString": "struct CumulativeTwap.Observation" - }, - "typeName": { - "id": 9365, - "name": "Observation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 9226, - "src": "2713:11:48", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$9226_storage_ptr", - "typeString": "struct CumulativeTwap.Observation" - } - }, - "visibility": "internal" - } - ], - "id": 9370, - "initialValue": { - "arguments": [ - { - "id": 9368, - "name": "targetTimestamp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9357, - "src": "2773:15:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 9367, - "name": "_getSurroundingObservations", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9591, - "src": "2745:27:48", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_struct$_Observation_$9226_memory_ptr_$_t_struct$_Observation_$9226_memory_ptr_$", - "typeString": "function (uint256) view returns (struct CumulativeTwap.Observation memory,struct CumulativeTwap.Observation memory)" - } - }, - "id": 9369, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2745:44:48", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$_t_struct$_Observation_$9226_memory_ptr_$_t_struct$_Observation_$9226_memory_ptr_$", - "typeString": "tuple(struct CumulativeTwap.Observation memory,struct CumulativeTwap.Observation memory)" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2681:108:48" - }, - { - "assignments": [ - 9372 - ], - "declarations": [ - { - "constant": false, - "id": 9372, - "mutability": "mutable", - "name": "currentCumulativePrice", - "nodeType": "VariableDeclaration", - "scope": 9479, - "src": "2799:30:48", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 9371, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2799:7:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 9396, - "initialValue": { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "arguments": [ - { - "id": 9391, - "name": "latestUpdatedTimestamp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9330, - "src": "3048:22:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 9389, - "name": "currentTimestamp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9352, - "src": "3027:16:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 9390, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sub", - "nodeType": "MemberAccess", - "referencedDeclaration": 249, - "src": "3027:20:48", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 9392, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3027:44:48", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 9387, - "name": "latestPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9328, - "src": "3011:11:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 9388, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "mul", - "nodeType": "MemberAccess", - "referencedDeclaration": 283, - "src": "3011:15:48", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 9393, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3011:61:48", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "components": [ - { - "arguments": [ - { - "arguments": [ - { - "expression": { - "id": 9381, - "name": "latestObservation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9336, - "src": "2955:17:48", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$9226_memory_ptr", - "typeString": "struct CumulativeTwap.Observation memory" - } - }, - "id": 9382, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "timestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": 9225, - "src": "2955:27:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 9379, - "name": "latestUpdatedTimestamp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9330, - "src": "2928:22:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 9380, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sub", - "nodeType": "MemberAccess", - "referencedDeclaration": 249, - "src": "2928:26:48", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 9383, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2928:55:48", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "expression": { - "id": 9376, - "name": "latestObservation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9336, - "src": "2900:17:48", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$9226_memory_ptr", - "typeString": "struct CumulativeTwap.Observation memory" - } - }, - "id": 9377, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "price", - "nodeType": "MemberAccess", - "referencedDeclaration": 9221, - "src": "2900:23:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 9378, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "mul", - "nodeType": "MemberAccess", - "referencedDeclaration": 283, - "src": "2900:27:48", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 9384, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2900:84:48", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 9385, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "2899:86:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 9386, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "add", - "nodeType": "MemberAccess", - "referencedDeclaration": 227, - "src": "2899:90:48", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 9394, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2899:191:48", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "expression": { - "id": 9373, - "name": "latestObservation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9336, - "src": "2844:17:48", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$9226_memory_ptr", - "typeString": "struct CumulativeTwap.Observation memory" - } - }, - "id": 9374, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "priceCumulative", - "nodeType": "MemberAccess", - "referencedDeclaration": 9223, - "src": "2844:33:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 9375, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "add", - "nodeType": "MemberAccess", - "referencedDeclaration": 227, - "src": "2844:37:48", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 9395, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2844:260:48", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2799:305:48" - }, - { - "assignments": [ - 9398 - ], - "declarations": [ - { - "constant": false, - "id": 9398, - "mutability": "mutable", - "name": "targetCumulativePrice", - "nodeType": "VariableDeclaration", - "scope": 9479, - "src": "3568:29:48", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 9397, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3568:7:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 9399, - "nodeType": "VariableDeclarationStatement", - "src": "3568:29:48" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 9403, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 9400, - "name": "targetTimestamp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9357, - "src": "3683:15:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "expression": { - "id": 9401, - "name": "beforeOrAt", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9364, - "src": "3702:10:48", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$9226_memory_ptr", - "typeString": "struct CumulativeTwap.Observation memory" - } - }, - "id": 9402, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "timestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": 9225, - "src": "3702:20:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3683:39:48", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 9418, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 9415, - "name": "atOrAfter", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9366, - "src": "3938:9:48", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$9226_memory_ptr", - "typeString": "struct CumulativeTwap.Observation memory" - } - }, - "id": 9416, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "timestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": 9225, - "src": "3938:19:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "id": 9417, - "name": "targetTimestamp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9357, - "src": "3961:15:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3938:38:48", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 9466, - "nodeType": "Block", - "src": "4149:422:48", - "statements": [ - { - "assignments": [ - 9431 - ], - "declarations": [ - { - "constant": false, - "id": 9431, - "mutability": "mutable", - "name": "observationTimeDelta", - "nodeType": "VariableDeclaration", - "scope": 9466, - "src": "4163:28:48", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 9430, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4163:7:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 9437, - "initialValue": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 9436, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 9432, - "name": "atOrAfter", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9366, - "src": "4194:9:48", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$9226_memory_ptr", - "typeString": "struct CumulativeTwap.Observation memory" - } - }, - "id": 9433, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "timestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": 9225, - "src": "4194:19:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "expression": { - "id": 9434, - "name": "beforeOrAt", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9364, - "src": "4216:10:48", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$9226_memory_ptr", - "typeString": "struct CumulativeTwap.Observation memory" - } - }, - "id": 9435, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "timestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": 9225, - "src": "4216:20:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4194:42:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "4163:73:48" - }, - { - "assignments": [ - 9439 - ], - "declarations": [ - { - "constant": false, - "id": 9439, - "mutability": "mutable", - "name": "targetTimeDelta", - "nodeType": "VariableDeclaration", - "scope": 9466, - "src": "4250:23:48", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 9438, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4250:7:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 9444, - "initialValue": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 9443, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 9440, - "name": "targetTimestamp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9357, - "src": "4276:15:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "expression": { - "id": 9441, - "name": "beforeOrAt", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9364, - "src": "4294:10:48", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$9226_memory_ptr", - "typeString": "struct CumulativeTwap.Observation memory" - } - }, - "id": 9442, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "timestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": 9225, - "src": "4294:20:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4276:38:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "4250:64:48" - }, - { - "expression": { - "id": 9464, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 9445, - "name": "targetCumulativePrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9398, - "src": "4328:21:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "arguments": [ - { - "arguments": [ - { - "id": 9461, - "name": "observationTimeDelta", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9431, - "src": "4508:20:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "components": [ - { - "arguments": [ - { - "id": 9457, - "name": "targetTimeDelta", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9439, - "src": "4465:15:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "components": [ - { - "arguments": [ - { - "expression": { - "id": 9452, - "name": "beforeOrAt", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9364, - "src": "4432:10:48", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$9226_memory_ptr", - "typeString": "struct CumulativeTwap.Observation memory" - } - }, - "id": 9453, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "priceCumulative", - "nodeType": "MemberAccess", - "referencedDeclaration": 9223, - "src": "4432:26:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "expression": { - "id": 9449, - "name": "atOrAfter", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9366, - "src": "4402:9:48", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$9226_memory_ptr", - "typeString": "struct CumulativeTwap.Observation memory" - } - }, - "id": 9450, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "priceCumulative", - "nodeType": "MemberAccess", - "referencedDeclaration": 9223, - "src": "4402:25:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 9451, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sub", - "nodeType": "MemberAccess", - "referencedDeclaration": 249, - "src": "4402:29:48", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 9454, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4402:57:48", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 9455, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "4401:59:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 9456, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "mul", - "nodeType": "MemberAccess", - "referencedDeclaration": 283, - "src": "4401:63:48", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 9458, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4401:80:48", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 9459, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "4400:82:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 9460, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "div", - "nodeType": "MemberAccess", - "referencedDeclaration": 305, - "src": "4400:86:48", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 9462, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4400:146:48", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "expression": { - "id": 9446, - "name": "beforeOrAt", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9364, - "src": "4352:10:48", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$9226_memory_ptr", - "typeString": "struct CumulativeTwap.Observation memory" - } - }, - "id": 9447, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "priceCumulative", - "nodeType": "MemberAccess", - "referencedDeclaration": 9223, - "src": "4352:26:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 9448, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "add", - "nodeType": "MemberAccess", - "referencedDeclaration": 227, - "src": "4352:30:48", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 9463, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4352:208:48", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4328:232:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 9465, - "nodeType": "ExpressionStatement", - "src": "4328:232:48" - } - ] - }, - "id": 9467, - "nodeType": "IfStatement", - "src": "3934:637:48", - "trueBody": { - "id": 9429, - "nodeType": "Block", - "src": "3978:125:48", - "statements": [ - { - "expression": { - "id": 9422, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 9419, - "name": "targetTimestamp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9357, - "src": "3992:15:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "expression": { - "id": 9420, - "name": "atOrAfter", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9366, - "src": "4010:9:48", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$9226_memory_ptr", - "typeString": "struct CumulativeTwap.Observation memory" - } - }, - "id": 9421, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "timestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": 9225, - "src": "4010:19:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3992:37:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 9423, - "nodeType": "ExpressionStatement", - "src": "3992:37:48" - }, - { - "expression": { - "id": 9427, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 9424, - "name": "targetCumulativePrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9398, - "src": "4043:21:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "expression": { - "id": 9425, - "name": "atOrAfter", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9366, - "src": "4067:9:48", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$9226_memory_ptr", - "typeString": "struct CumulativeTwap.Observation memory" - } - }, - "id": 9426, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "priceCumulative", - "nodeType": "MemberAccess", - "referencedDeclaration": 9223, - "src": "4067:25:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4043:49:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 9428, - "nodeType": "ExpressionStatement", - "src": "4043:49:48" - } - ] - } - }, - "id": 9468, - "nodeType": "IfStatement", - "src": "3679:892:48", - "trueBody": { - "id": 9414, - "nodeType": "Block", - "src": "3724:127:48", - "statements": [ - { - "expression": { - "id": 9407, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 9404, - "name": "targetTimestamp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9357, - "src": "3738:15:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "expression": { - "id": 9405, - "name": "beforeOrAt", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9364, - "src": "3756:10:48", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$9226_memory_ptr", - "typeString": "struct CumulativeTwap.Observation memory" - } - }, - "id": 9406, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "timestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": 9225, - "src": "3756:20:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3738:38:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 9408, - "nodeType": "ExpressionStatement", - "src": "3738:38:48" - }, - { - "expression": { - "id": 9412, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 9409, - "name": "targetCumulativePrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9398, - "src": "3790:21:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "expression": { - "id": 9410, - "name": "beforeOrAt", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9364, - "src": "3814:10:48", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$9226_memory_ptr", - "typeString": "struct CumulativeTwap.Observation memory" - } - }, - "id": 9411, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "priceCumulative", - "nodeType": "MemberAccess", - "referencedDeclaration": 9223, - "src": "3814:26:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3790:50:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 9413, - "nodeType": "ExpressionStatement", - "src": "3790:50:48" - } - ] - } - }, - { - "expression": { - "arguments": [ - { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 9476, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 9474, - "name": "currentTimestamp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9352, - "src": "4642:16:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "id": 9475, - "name": "targetTimestamp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9357, - "src": "4661:15:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4642:34:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "arguments": [ - { - "id": 9471, - "name": "targetCumulativePrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9398, - "src": "4615:21:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "id": 9469, - "name": "currentCumulativePrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9372, - "src": "4588:22:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 9470, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sub", - "nodeType": "MemberAccess", - "referencedDeclaration": 249, - "src": "4588:26:48", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 9472, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4588:49:48", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 9473, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "div", - "nodeType": "MemberAccess", - "referencedDeclaration": 305, - "src": "4588:53:48", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 9477, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4588:89:48", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 9334, - "id": 9478, - "nodeType": "Return", - "src": "4581:96:48" - } - ] - }, - "id": 9480, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_calculateTwapPrice", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 9331, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 9326, - "mutability": "mutable", - "name": "interval", - "nodeType": "VariableDeclaration", - "scope": 9480, - "src": "2227:16:48", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 9325, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2227:7:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 9328, - "mutability": "mutable", - "name": "latestPrice", - "nodeType": "VariableDeclaration", - "scope": 9480, - "src": "2253:19:48", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 9327, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2253:7:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 9330, - "mutability": "mutable", - "name": "latestUpdatedTimestamp", - "nodeType": "VariableDeclaration", - "scope": 9480, - "src": "2282:30:48", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 9329, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2282:7:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "2217:101:48" - }, - "returnParameters": { - "id": 9334, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 9333, - "mutability": "mutable", - "name": "", - "nodeType": "VariableDeclaration", - "scope": 9480, - "src": "2342:7:48", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 9332, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2342:7:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "2341:9:48" - }, - "scope": 9592, - "src": "2189:2495:48", - "stateMutability": "view", - "virtual": false, - "visibility": "internal" - }, - { - "body": { - "id": 9590, - "nodeType": "Block", - "src": "4864:1463:48", - "statements": [ - { - "assignments": [ - 9490 - ], - "declarations": [ - { - "constant": false, - "id": 9490, - "mutability": "mutable", - "name": "index", - "nodeType": "VariableDeclaration", - "scope": 9590, - "src": "4874:11:48", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 9489, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "4874:5:48", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "visibility": "internal" - } - ], - "id": 9492, - "initialValue": { - "id": 9491, - "name": "currentObservationIndex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9240, - "src": "4888:23:48", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "4874:37:48" - }, - { - "assignments": [ - 9494 - ], - "declarations": [ - { - "constant": false, - "id": 9494, - "mutability": "mutable", - "name": "beforeOrAtIndex", - "nodeType": "VariableDeclaration", - "scope": 9590, - "src": "4921:21:48", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 9493, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "4921:5:48", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "visibility": "internal" - } - ], - "id": 9495, - "nodeType": "VariableDeclarationStatement", - "src": "4921:21:48" - }, - { - "assignments": [ - 9497 - ], - "declarations": [ - { - "constant": false, - "id": 9497, - "mutability": "mutable", - "name": "atOrAfterIndex", - "nodeType": "VariableDeclaration", - "scope": 9590, - "src": "4952:20:48", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 9496, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "4952:5:48", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "visibility": "internal" - } - ], - "id": 9498, - "nodeType": "VariableDeclarationStatement", - "src": "4952:20:48" - }, - { - "assignments": [ - 9500 - ], - "declarations": [ - { - "constant": false, - "id": 9500, - "mutability": "mutable", - "name": "observationLen", - "nodeType": "VariableDeclaration", - "scope": 9590, - "src": "5016:22:48", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 9499, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5016:7:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 9503, - "initialValue": { - "expression": { - "id": 9501, - "name": "observations", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9238, - "src": "5041:12:48", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Observation_$9226_storage_$256_storage", - "typeString": "struct CumulativeTwap.Observation storage ref[256] storage ref" - } - }, - "id": 9502, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "src": "5041:19:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "5016:44:48" - }, - { - "assignments": [ - 9505 - ], - "declarations": [ - { - "constant": false, - "id": 9505, - "mutability": "mutable", - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 9590, - "src": "5070:9:48", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 9504, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5070:7:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "id": 9506, - "nodeType": "VariableDeclarationStatement", - "src": "5070:9:48" - }, - { - "body": { - "id": 9556, - "nodeType": "Block", - "src": "5126:537:48", - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 9522, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "baseExpression": { - "id": 9517, - "name": "observations", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9238, - "src": "5144:12:48", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Observation_$9226_storage_$256_storage", - "typeString": "struct CumulativeTwap.Observation storage ref[256] storage ref" - } - }, - "id": 9519, - "indexExpression": { - "id": 9518, - "name": "index", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9490, - "src": "5157:5:48", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "5144:19:48", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$9226_storage", - "typeString": "struct CumulativeTwap.Observation storage ref" - } - }, - "id": 9520, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "timestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": 9225, - "src": "5144:29:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "id": 9521, - "name": "targetTimestamp", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9482, - "src": "5177:15:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "5144:48:48", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 9552, - "nodeType": "IfStatement", - "src": "5140:492:48", - "trueBody": { - "id": 9551, - "nodeType": "Block", - "src": "5194:438:48", - "statements": [ - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 9528, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "baseExpression": { - "id": 9523, - "name": "observations", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9238, - "src": "5352:12:48", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Observation_$9226_storage_$256_storage", - "typeString": "struct CumulativeTwap.Observation storage ref[256] storage ref" - } - }, - "id": 9525, - "indexExpression": { - "id": 9524, - "name": "index", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9490, - "src": "5365:5:48", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "5352:19:48", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$9226_storage", - "typeString": "struct CumulativeTwap.Observation storage ref" - } - }, - "id": 9526, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "timestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": 9225, - "src": "5352:29:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "hexValue": "30", - "id": 9527, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5385:1:48", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "5352:34:48", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 9539, - "nodeType": "IfStatement", - "src": "5348:152:48", - "trueBody": { - "id": 9538, - "nodeType": "Block", - "src": "5388:112:48", - "statements": [ - { - "expression": { - "id": 9535, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 9529, - "name": "atOrAfterIndex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9497, - "src": "5410:14:48", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 9534, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 9530, - "name": "beforeOrAtIndex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9494, - "src": "5427:15:48", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 9533, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 9531, - "name": "index", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9490, - "src": "5445:5:48", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "hexValue": "31", - "id": 9532, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5453:1:48", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "5445:9:48", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "5427:27:48", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "5410:44:48", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 9536, - "nodeType": "ExpressionStatement", - "src": "5410:44:48" - }, - { - "id": 9537, - "nodeType": "Break", - "src": "5476:5:48" - } - ] - } - }, - { - "expression": { - "id": 9542, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 9540, - "name": "beforeOrAtIndex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9494, - "src": "5517:15:48", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 9541, - "name": "index", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9490, - "src": "5535:5:48", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "5517:23:48", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 9543, - "nodeType": "ExpressionStatement", - "src": "5517:23:48" - }, - { - "expression": { - "id": 9548, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 9544, - "name": "atOrAfterIndex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9497, - "src": "5558:14:48", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 9547, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 9545, - "name": "beforeOrAtIndex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9494, - "src": "5575:15:48", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "hexValue": "31", - "id": 9546, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5593:1:48", - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "5575:19:48", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "5558:36:48", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 9549, - "nodeType": "ExpressionStatement", - "src": "5558:36:48" - }, - { - "id": 9550, - "nodeType": "Break", - "src": "5612:5:48" - } - ] - } - }, - { - "expression": { - "id": 9554, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "--", - "prefix": false, - "src": "5645:7:48", - "subExpression": { - "id": 9553, - "name": "index", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9490, - "src": "5645:5:48", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 9555, - "nodeType": "ExpressionStatement", - "src": "5645:7:48" - } - ] - }, - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 9513, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 9511, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9505, - "src": "5101:1:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "id": 9512, - "name": "observationLen", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9500, - "src": "5105:14:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "5101:18:48", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 9557, - "initializationExpression": { - "expression": { - "id": 9509, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 9507, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9505, - "src": "5094:1:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "hexValue": "30", - "id": 9508, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5098:1:48", - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "5094:5:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 9510, - "nodeType": "ExpressionStatement", - "src": "5094:5:48" - }, - "loopExpression": { - "expression": { - "id": 9515, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "5121:3:48", - "subExpression": { - "id": 9514, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9505, - "src": "5121:1:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 9516, - "nodeType": "ExpressionStatement", - "src": "5121:3:48" - }, - "nodeType": "ForStatement", - "src": "5089:574:48" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 9560, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "id": 9558, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9505, - "src": "5724:1:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "id": 9559, - "name": "observationLen", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9500, - "src": "5729:14:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "5724:19:48", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 9566, - "nodeType": "IfStatement", - "src": "5720:115:48", - "trueBody": { - "id": 9565, - "nodeType": "Block", - "src": "5745:90:48", - "statements": [ - { - "expression": { - "arguments": [ - { - "hexValue": "43545f4e4548", - "id": 9562, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5815:8:48", - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_579a392f3722d5ac1f7cb0ada24e2070ee442af1ba4b25c70186b6558d7af206", - "typeString": "literal_string \"CT_NEH\"" - }, - "value": "CT_NEH" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_stringliteral_579a392f3722d5ac1f7cb0ada24e2070ee442af1ba4b25c70186b6558d7af206", - "typeString": "literal_string \"CT_NEH\"" - } - ], - "id": 9561, - "name": "revert", - "nodeType": "Identifier", - "overloadedDeclarations": [ - -19, - -19 - ], - "referencedDeclaration": -19, - "src": "5808:6:48", - "typeDescriptions": { - "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", - "typeString": "function (string memory) pure" - } - }, - "id": 9563, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5808:16:48", - "tryCall": false, - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 9564, - "nodeType": "ExpressionStatement", - "src": "5808:16:48" - } - ] - } - }, - { - "expression": { - "id": 9571, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 9567, - "name": "beforeOrAt", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9485, - "src": "5845:10:48", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$9226_memory_ptr", - "typeString": "struct CumulativeTwap.Observation memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "baseExpression": { - "id": 9568, - "name": "observations", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9238, - "src": "5858:12:48", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Observation_$9226_storage_$256_storage", - "typeString": "struct CumulativeTwap.Observation storage ref[256] storage ref" - } - }, - "id": 9570, - "indexExpression": { - "id": 9569, - "name": "beforeOrAtIndex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9494, - "src": "5871:15:48", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "5858:29:48", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$9226_storage", - "typeString": "struct CumulativeTwap.Observation storage ref" - } - }, - "src": "5845:42:48", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$9226_memory_ptr", - "typeString": "struct CumulativeTwap.Observation memory" - } - }, - "id": 9572, - "nodeType": "ExpressionStatement", - "src": "5845:42:48" - }, - { - "expression": { - "id": 9577, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 9573, - "name": "atOrAfter", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9487, - "src": "5897:9:48", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$9226_memory_ptr", - "typeString": "struct CumulativeTwap.Observation memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "baseExpression": { - "id": 9574, - "name": "observations", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9238, - "src": "5909:12:48", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Observation_$9226_storage_$256_storage", - "typeString": "struct CumulativeTwap.Observation storage ref[256] storage ref" - } - }, - "id": 9576, - "indexExpression": { - "id": 9575, - "name": "atOrAfterIndex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9497, - "src": "5922:14:48", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "5909:28:48", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$9226_storage", - "typeString": "struct CumulativeTwap.Observation storage ref" - } - }, - "src": "5897:40:48", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$9226_memory_ptr", - "typeString": "struct CumulativeTwap.Observation memory" - } - }, - "id": 9578, - "nodeType": "ExpressionStatement", - "src": "5897:40:48" - }, - { - "condition": { - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 9583, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "expression": { - "id": 9579, - "name": "atOrAfter", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9487, - "src": "6230:9:48", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$9226_memory_ptr", - "typeString": "struct CumulativeTwap.Observation memory" - } - }, - "id": 9580, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "timestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": 9225, - "src": "6230:19:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "expression": { - "id": 9581, - "name": "beforeOrAt", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9485, - "src": "6252:10:48", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$9226_memory_ptr", - "typeString": "struct CumulativeTwap.Observation memory" - } - }, - "id": 9582, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "timestamp", - "nodeType": "MemberAccess", - "referencedDeclaration": 9225, - "src": "6252:20:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "6230:42:48", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 9589, - "nodeType": "IfStatement", - "src": "6226:95:48", - "trueBody": { - "id": 9588, - "nodeType": "Block", - "src": "6274:47:48", - "statements": [ - { - "expression": { - "id": 9586, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "id": 9584, - "name": "atOrAfter", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9487, - "src": "6288:9:48", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$9226_memory_ptr", - "typeString": "struct CumulativeTwap.Observation memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "id": 9585, - "name": "beforeOrAt", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 9485, - "src": "6300:10:48", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$9226_memory_ptr", - "typeString": "struct CumulativeTwap.Observation memory" - } - }, - "src": "6288:22:48", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$9226_memory_ptr", - "typeString": "struct CumulativeTwap.Observation memory" - } - }, - "id": 9587, - "nodeType": "ExpressionStatement", - "src": "6288:22:48" - } - ] - } - } - ] - }, - "id": 9591, - "implemented": true, - "kind": "function", - "modifiers": [], - "name": "_getSurroundingObservations", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 9483, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 9482, - "mutability": "mutable", - "name": "targetTimestamp", - "nodeType": "VariableDeclaration", - "scope": 9591, - "src": "4727:23:48", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 9481, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4727:7:48", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "visibility": "internal" - } - ], - "src": "4726:25:48" - }, - "returnParameters": { - "id": 9488, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 9485, - "mutability": "mutable", - "name": "beforeOrAt", - "nodeType": "VariableDeclaration", - "scope": 9591, - "src": "4799:29:48", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$9226_memory_ptr", - "typeString": "struct CumulativeTwap.Observation" - }, - "typeName": { - "id": 9484, - "name": "Observation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 9226, - "src": "4799:11:48", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$9226_storage_ptr", - "typeString": "struct CumulativeTwap.Observation" - } - }, - "visibility": "internal" - }, - { - "constant": false, - "id": 9487, - "mutability": "mutable", - "name": "atOrAfter", - "nodeType": "VariableDeclaration", - "scope": 9591, - "src": "4830:28:48", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$9226_memory_ptr", - "typeString": "struct CumulativeTwap.Observation" - }, - "typeName": { - "id": 9486, - "name": "Observation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 9226, - "src": "4830:11:48", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Observation_$9226_storage_ptr", - "typeString": "struct CumulativeTwap.Observation" - } - }, - "visibility": "internal" - } - ], - "src": "4798:61:48" - }, - "scope": 9592, - "src": "4690:1637:48", - "stateMutability": "view", - "virtual": false, - "visibility": "internal" - } - ], - "scope": 9593, - "src": "226:6103:48" - } - ], - "src": "40:6290:48" - }, - "id": 48 - } - } - } -} diff --git a/artifacts/contracts/BandPriceFeed.sol/BandPriceFeed.dbg.json b/artifacts/contracts/BandPriceFeed.sol/BandPriceFeed.dbg.json deleted file mode 100644 index 9fa72d0..0000000 --- a/artifacts/contracts/BandPriceFeed.sol/BandPriceFeed.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../build-info/f3d46276c3abf0612f2d14f482c05ecc.json" -} diff --git a/artifacts/contracts/BandPriceFeed.sol/BandPriceFeed.json b/artifacts/contracts/BandPriceFeed.sol/BandPriceFeed.json deleted file mode 100644 index 1f925cb..0000000 --- a/artifacts/contracts/BandPriceFeed.sol/BandPriceFeed.json +++ /dev/null @@ -1,196 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "BandPriceFeed", - "sourceName": "contracts/BandPriceFeed.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "contract IStdReference", - "name": "stdRefArg", - "type": "address" - }, - { - "internalType": "string", - "name": "baseAssetArg", - "type": "string" - }, - { - "internalType": "uint80", - "name": "cacheTwapInterval", - "type": "uint80" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "price", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint8", - "name": "indexAt", - "type": "uint8" - } - ], - "name": "PriceUpdated", - "type": "event" - }, - { - "inputs": [], - "name": "QUOTE_ASSET", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "baseAsset", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "interval", - "type": "uint256" - } - ], - "name": "cacheTwap", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "currentObservationIndex", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "decimals", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "interval", - "type": "uint256" - } - ], - "name": "getPrice", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "observations", - "outputs": [ - { - "internalType": "uint256", - "name": "price", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "priceCumulative", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "stdRef", - "outputs": [ - { - "internalType": "contract IStdReference", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "update", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x60806040523480156200001157600080fd5b50604051620010b2380380620010b28339810160408190526200003491620001ab565b6103028054600160a01b600160f01b031916600160a01b6001600160501b03841602179055620000796001600160a01b038416620000dd602090811b620002c817901c565b620000a15760405162461bcd60e51b815260040162000098906200029f565b60405180910390fd5b61030480546001600160a01b0319166001600160a01b0385161790558151620000d390610303906020850190620000e7565b50505050620002c0565b803b15155b919050565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826200011f57600085556200016a565b82601f106200013a57805160ff19168380011785556200016a565b828001600101855582156200016a579182015b828111156200016a5782518255916020019190600101906200014d565b50620001789291506200017c565b5090565b5b808211156200017857600081556001016200017d565b80516001600160501b0381168114620000e257600080fd5b600080600060608486031215620001c0578283fd5b83516001600160a01b0381168114620001d7578384fd5b602085810151919450906001600160401b0380821115620001f6578485fd5b818701915087601f8301126200020a578485fd5b8151818111156200021757fe5b604051601f8201601f19168101850183811182821017156200023557fe5b60405281815283820185018a10156200024c578687fd5b8692505b818310156200026f578383018501518184018601529184019162000250565b818311156200028057868583830101525b8096505050505050620002966040850162000193565b90509250925092565b6020808252600790820152664250465f414e4360c81b604082015260600190565b610de280620002d06000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063a2e6204511610066578063a2e620451461010d578063aed3aff714610117578063cdf456e11461011f578063e757223014610134578063f06a1e131461014757610093565b80631d1a111a14610098578063252c09d7146100c1578063313ce567146100e35780635368945b146100f8575b600080fd5b6100ab6100a6366004610b52565b61014f565b6040516100b89190610d39565b60405180910390f35b6100d46100cf366004610b52565b610185565b6040516100b893929190610d5b565b6100eb6101ad565b6040516100b89190610d71565b6101006101b2565b6040516100b89190610bb5565b6101156101c2565b005b6100eb6101e3565b6101276101ed565b6040516100b89190610bc9565b6100ab610142366004610b52565b61027c565b6101276102a9565b60008061015a6102ce565b90508261016957519050610180565b61017c83826000015183602001516103e8565b9150505b919050565b600081610100811061019657600080fd5b600302018054600182015460029092015490925083565b601290565b610304546001600160a01b031681565b60006101cc6102ce565b90506101e08160000151826020015161048d565b50565b6103005460ff1681565b610303805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156102745780601f1061024957610100808354040283529160200191610274565b820191906000526020600020905b81548152906001019060200180831161025757829003601f168201915b505050505081565b6000806102876102ce565b90508261029657519050610180565b61017c838260000151836020015161063a565b604051806040016040528060038152602001621554d160ea1b81525081565b3b151590565b6102d6610adc565b6103045460408051808201825260038152621554d160ea1b6020820152905163195556f360e21b81526000926001600160a01b0316916365555bcc916103229161030391600401610bdc565b60606040518083038186803b15801561033a57600080fd5b505afa15801561034e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103729190610afd565b905060008160400151116103a15760405162461bcd60e51b815260040161039890610c99565b60405180910390fd5b60008160200151116103c55760405162461bcd60e51b815260040161039890610cda565b80516103e35760405162461bcd60e51b815260040161039890610cba565b905090565b61030254600090600160a01b900469ffffffffffffffffffff16841461041a57610413848484610675565b9050610486565b610302546001600160a01b031661042f61080c565b141561043f575061030154610486565b610449838361048d565b61045161080c565b61030280546001600160a01b0319166001600160a01b039290921691909117905561047d848484610675565b61030181905590505b9392505050565b6103005460ff161580156104a15750600254155b1561050d57604080516060810182528381526000602082018190529082018390528381556001819055600283905590517f5f4a9a1b73bee700ca1fb203bb004bcc0a7eca48af3f147b24dcf5bf4bf3c00b916105009185918591610d42565b60405180910390a1610636565b61030054600090819060ff16610100811061052457fe5b604080516060810182526003929092029290920180548252600181015460208301526002015491810182905291508210156105715760405162461bcd60e51b815260040161039890610cfb565b610300805460ff198116600160ff928316018216179182905560408381015181516060810183528781528551602080880151938903918202909301928201929092529182018690529290916000911661010081106105cb57fe5b825160039190910291909101908155602082015160018201556040918201516002909101556103005490517f5f4a9a1b73bee700ca1fb203bb004bcc0a7eca48af3f147b24dcf5bf4bf3c00b9161062b918791879160ff90911690610d42565b60405180910390a150505b5050565b610302546000906001600160a01b031661065261080c565b1415610662575061030154610486565b61066d848484610675565b949350505050565b610300546000908190819060ff16610100811061068e57fe5b60030201604051806060016040529081600082015481526020016001820154815260200160028201548152505090508060000151600014156106e25760405162461bcd60e51b815260040161039890610d1a565b60006106ec61080c565b905060006106fa8288610810565b905060008061070883610872565b9092509050600061075c610751610729610722888c610810565b8c906109c2565b61074b6107438a604001518d61081090919063ffffffff16565b8a51906109c2565b90610a1b565b602088015190610a1b565b905060008360400151851161077e5783604001519450836020015190506107ed565b8483604001511161079c5782604001519450826020015190506107ed565b60008460400151846040015103905060008560400151870390506107e8610751836107e2846107dc8b602001518b6020015161081090919063ffffffff16565b906109c2565b90610a75565b925050505b6107fd8587036107e28484610810565b9b9a5050505050505050505050565b4290565b600082821115610867576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b508082035b92915050565b61087a610adc565b610882610adc565b6103005460ff16600080610100815b81811015610904578760008660ff1661010081106108ab57fe5b6003020160020154116108f55760008560ff1661010081106108c957fe5b6003020160020154600014156108e757846001019350839250610904565b849350836001019250610904565b60001990940193600101610891565b818114156109245760405162461bcd60e51b815260040161039890610c79565b60008460ff16610100811061093557fe5b600302016040518060600160405290816000820154815260200160018201548152602001600282015481525050965060008360ff16610100811061097557fe5b60030201604051806060016040529081600082015481526020016001820154815260200160028201548152505095508660400151866040015110156109b8578695505b5050505050915091565b6000826109d15750600061086c565b828202828482816109de57fe5b04146104865760405162461bcd60e51b8152600401808060200182810382526021815260200180610d8c6021913960400191505060405180910390fd5b600082820183811015610486576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000808211610acb576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381610ad457fe5b049392505050565b60405180606001604052806000815260200160008152602001600081525090565b600060608284031215610b0e578081fd5b6040516060810181811067ffffffffffffffff82111715610b2b57fe5b80604052508251815260208301516020820152604083015160408201528091505092915050565b600060208284031215610b63578081fd5b5035919050565b60008151808452815b81811015610b8f57602081850181015186830182015201610b73565b81811115610ba05782602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b6000602082526104866020830184610b6a565b60006040820160408352818554600180821660008114610c035760018114610c2157610c5a565b60028304607f16855260ff1983166060880152608087019350610c5a565b60028304808652610c318a610d7f565b875b82811015610c505781548a82016060015290840190602001610c33565b8901606001955050505b5050508381036020850152610c6f8186610b6a565b9695505050505050565b602080825260069082015265086a8be9c8a960d31b604082015260600190565b6020808252600790820152662128232faa28ad60c91b604082015260600190565b60208082526006908201526504250465f49560d41b604082015260600190565b6020808252600790820152662128232faa212d60c91b604082015260600190565b60208082526005908201526410d517d25560da1b604082015260600190565b60208082526005908201526410d517d39160da1b604082015260600190565b90815260200190565b928352602083019190915260ff16604082015260600190565b9283526020830191909152604082015260600190565b60ff91909116815260200190565b6000908152602090209056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220efe5a99f67f0638e4f5978f3d9253913a108623974dd30e8541181ca03c24e9564736f6c63430007060033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100935760003560e01c8063a2e6204511610066578063a2e620451461010d578063aed3aff714610117578063cdf456e11461011f578063e757223014610134578063f06a1e131461014757610093565b80631d1a111a14610098578063252c09d7146100c1578063313ce567146100e35780635368945b146100f8575b600080fd5b6100ab6100a6366004610b52565b61014f565b6040516100b89190610d39565b60405180910390f35b6100d46100cf366004610b52565b610185565b6040516100b893929190610d5b565b6100eb6101ad565b6040516100b89190610d71565b6101006101b2565b6040516100b89190610bb5565b6101156101c2565b005b6100eb6101e3565b6101276101ed565b6040516100b89190610bc9565b6100ab610142366004610b52565b61027c565b6101276102a9565b60008061015a6102ce565b90508261016957519050610180565b61017c83826000015183602001516103e8565b9150505b919050565b600081610100811061019657600080fd5b600302018054600182015460029092015490925083565b601290565b610304546001600160a01b031681565b60006101cc6102ce565b90506101e08160000151826020015161048d565b50565b6103005460ff1681565b610303805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156102745780601f1061024957610100808354040283529160200191610274565b820191906000526020600020905b81548152906001019060200180831161025757829003601f168201915b505050505081565b6000806102876102ce565b90508261029657519050610180565b61017c838260000151836020015161063a565b604051806040016040528060038152602001621554d160ea1b81525081565b3b151590565b6102d6610adc565b6103045460408051808201825260038152621554d160ea1b6020820152905163195556f360e21b81526000926001600160a01b0316916365555bcc916103229161030391600401610bdc565b60606040518083038186803b15801561033a57600080fd5b505afa15801561034e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103729190610afd565b905060008160400151116103a15760405162461bcd60e51b815260040161039890610c99565b60405180910390fd5b60008160200151116103c55760405162461bcd60e51b815260040161039890610cda565b80516103e35760405162461bcd60e51b815260040161039890610cba565b905090565b61030254600090600160a01b900469ffffffffffffffffffff16841461041a57610413848484610675565b9050610486565b610302546001600160a01b031661042f61080c565b141561043f575061030154610486565b610449838361048d565b61045161080c565b61030280546001600160a01b0319166001600160a01b039290921691909117905561047d848484610675565b61030181905590505b9392505050565b6103005460ff161580156104a15750600254155b1561050d57604080516060810182528381526000602082018190529082018390528381556001819055600283905590517f5f4a9a1b73bee700ca1fb203bb004bcc0a7eca48af3f147b24dcf5bf4bf3c00b916105009185918591610d42565b60405180910390a1610636565b61030054600090819060ff16610100811061052457fe5b604080516060810182526003929092029290920180548252600181015460208301526002015491810182905291508210156105715760405162461bcd60e51b815260040161039890610cfb565b610300805460ff198116600160ff928316018216179182905560408381015181516060810183528781528551602080880151938903918202909301928201929092529182018690529290916000911661010081106105cb57fe5b825160039190910291909101908155602082015160018201556040918201516002909101556103005490517f5f4a9a1b73bee700ca1fb203bb004bcc0a7eca48af3f147b24dcf5bf4bf3c00b9161062b918791879160ff90911690610d42565b60405180910390a150505b5050565b610302546000906001600160a01b031661065261080c565b1415610662575061030154610486565b61066d848484610675565b949350505050565b610300546000908190819060ff16610100811061068e57fe5b60030201604051806060016040529081600082015481526020016001820154815260200160028201548152505090508060000151600014156106e25760405162461bcd60e51b815260040161039890610d1a565b60006106ec61080c565b905060006106fa8288610810565b905060008061070883610872565b9092509050600061075c610751610729610722888c610810565b8c906109c2565b61074b6107438a604001518d61081090919063ffffffff16565b8a51906109c2565b90610a1b565b602088015190610a1b565b905060008360400151851161077e5783604001519450836020015190506107ed565b8483604001511161079c5782604001519450826020015190506107ed565b60008460400151846040015103905060008560400151870390506107e8610751836107e2846107dc8b602001518b6020015161081090919063ffffffff16565b906109c2565b90610a75565b925050505b6107fd8587036107e28484610810565b9b9a5050505050505050505050565b4290565b600082821115610867576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b508082035b92915050565b61087a610adc565b610882610adc565b6103005460ff16600080610100815b81811015610904578760008660ff1661010081106108ab57fe5b6003020160020154116108f55760008560ff1661010081106108c957fe5b6003020160020154600014156108e757846001019350839250610904565b849350836001019250610904565b60001990940193600101610891565b818114156109245760405162461bcd60e51b815260040161039890610c79565b60008460ff16610100811061093557fe5b600302016040518060600160405290816000820154815260200160018201548152602001600282015481525050965060008360ff16610100811061097557fe5b60030201604051806060016040529081600082015481526020016001820154815260200160028201548152505095508660400151866040015110156109b8578695505b5050505050915091565b6000826109d15750600061086c565b828202828482816109de57fe5b04146104865760405162461bcd60e51b8152600401808060200182810382526021815260200180610d8c6021913960400191505060405180910390fd5b600082820183811015610486576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000808211610acb576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381610ad457fe5b049392505050565b60405180606001604052806000815260200160008152602001600081525090565b600060608284031215610b0e578081fd5b6040516060810181811067ffffffffffffffff82111715610b2b57fe5b80604052508251815260208301516020820152604083015160408201528091505092915050565b600060208284031215610b63578081fd5b5035919050565b60008151808452815b81811015610b8f57602081850181015186830182015201610b73565b81811115610ba05782602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b6000602082526104866020830184610b6a565b60006040820160408352818554600180821660008114610c035760018114610c2157610c5a565b60028304607f16855260ff1983166060880152608087019350610c5a565b60028304808652610c318a610d7f565b875b82811015610c505781548a82016060015290840190602001610c33565b8901606001955050505b5050508381036020850152610c6f8186610b6a565b9695505050505050565b602080825260069082015265086a8be9c8a960d31b604082015260600190565b6020808252600790820152662128232faa28ad60c91b604082015260600190565b60208082526006908201526504250465f49560d41b604082015260600190565b6020808252600790820152662128232faa212d60c91b604082015260600190565b60208082526005908201526410d517d25560da1b604082015260600190565b60208082526005908201526410d517d39160da1b604082015260600190565b90815260200190565b928352602083019190915260ff16604082015260600190565b9283526020830191909152604082015260600190565b60ff91909116815260200190565b6000908152602090209056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220efe5a99f67f0638e4f5978f3d9253913a108623974dd30e8541181ca03c24e9564736f6c63430007060033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/artifacts/contracts/ChainlinkPriceFeed.sol/ChainlinkPriceFeed.dbg.json b/artifacts/contracts/ChainlinkPriceFeed.sol/ChainlinkPriceFeed.dbg.json deleted file mode 100644 index 9fa72d0..0000000 --- a/artifacts/contracts/ChainlinkPriceFeed.sol/ChainlinkPriceFeed.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../build-info/f3d46276c3abf0612f2d14f482c05ecc.json" -} diff --git a/artifacts/contracts/ChainlinkPriceFeed.sol/ChainlinkPriceFeed.json b/artifacts/contracts/ChainlinkPriceFeed.sol/ChainlinkPriceFeed.json deleted file mode 100644 index 9d7279f..0000000 --- a/artifacts/contracts/ChainlinkPriceFeed.sol/ChainlinkPriceFeed.json +++ /dev/null @@ -1,152 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "ChainlinkPriceFeed", - "sourceName": "contracts/ChainlinkPriceFeed.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "contract AggregatorV3Interface", - "name": "aggregator", - "type": "address" - }, - { - "internalType": "uint80", - "name": "cacheTwapInterval", - "type": "uint80" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "price", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint8", - "name": "indexAt", - "type": "uint8" - } - ], - "name": "PriceUpdated", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "interval", - "type": "uint256" - } - ], - "name": "cacheTwap", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "currentObservationIndex", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "decimals", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "interval", - "type": "uint256" - } - ], - "name": "getPrice", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "observations", - "outputs": [ - { - "internalType": "uint256", - "name": "price", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "priceCumulative", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "update", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x60a060405234801561001057600080fd5b50604051610e28380380610e288339818101604052604081101561003357600080fd5b5080516020918201516103028054600160a01b600160f01b031916600160a01b6001600160501b03841602179055909161007f906001600160a01b038416906100d0811b61028d17901c565b6100ba576040805162461bcd60e51b81526020600482015260076024820152664350465f414e4360c81b604482015290519081900360640190fd5b5060601b6001600160601b0319166080526100d6565b3b151590565b60805160601c610d2661010260003980610199528061029e528061065252806107185250610d266000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c80631d1a111a14610067578063252c09d714610096578063313ce567146100d1578063a2e62045146100ef578063aed3aff7146100f9578063e757223014610101575b600080fd5b6100846004803603602081101561007d57600080fd5b503561011e565b60408051918252519081900360200190f35b6100b3600480360360208110156100ac57600080fd5b503561016d565b60408051938452602084019290925282820152519081900360600190f35b6100d9610195565b6040805160ff9092168252519081900360200190f35b6100f7610221565b005b6100d961023f565b6100846004803603602081101561011757600080fd5b5035610249565b60008060008061012c610293565b925092509250846000148061014857506001600160501b038316155b15610157575091506101689050565b61016285838361036a565b93505050505b919050565b600081610100811061017e57600080fd5b600302018054600182015460029092015490925083565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156101f057600080fd5b505afa158015610204573d6000803e3d6000fd5b505050506040513d602081101561021a57600080fd5b5051905090565b60008061022c610293565b925092505061023b828261040c565b5050565b6103005460ff1681565b600080600080610257610293565b925092509250846000148061027357506001600160501b038316155b15610282575091506101689050565b6101628583836105c1565b3b151590565b6000806000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a06040518083038186803b1580156102f557600080fd5b505afa158015610309573d6000803e3d6000fd5b505050506040513d60a081101561031f57600080fd5b508051602082015160609092015191965093508592509050600082121561035e57610349836105fc565b61035560018403610647565b90965090935090505b91945090915050909192565b61030254600090600160a01b90046001600160501b03168414610399576103928484846107d0565b9050610405565b610302546001600160a01b03166103ae610967565b14156103be575061030154610405565b6103c8838361040c565b6103d0610967565b61030280546001600160a01b0319166001600160a01b03929092169190911790556103fc8484846107d0565b61030181905590505b9392505050565b6103005460ff161580156104205750600254155b1561048c57604080516060810182528381526000602082018190529082018390528381556001819055600283905590517f5f4a9a1b73bee700ca1fb203bb004bcc0a7eca48af3f147b24dcf5bf4bf3c00b9161047f9185918591610cb6565b60405180910390a161023b565b61030054600090819060ff1661010081106104a357fe5b604080516060810182526003929092029290920180548252600181015460208301526002015491810182905291508210156104f95760405162461bcd60e51b81526004016104f090610c78565b60405180910390fd5b610300805460ff198116600160ff9283160182161791829055604083810151815160608101835287815285516020808801519389039182029093019282019290925291820186905292909160009116610100811061055357fe5b825160039190910291909101908155602082015160018201556040918201516002909101556103005490517f5f4a9a1b73bee700ca1fb203bb004bcc0a7eca48af3f147b24dcf5bf4bf3c00b916105b3918791879160ff90911690610cb6565b60405180910390a150505050565b610302546000906001600160a01b03166105d9610967565b14156105e9575061030154610405565b6105f48484846107d0565b949350505050565b6000816001600160501b031611610644576040805162461bcd60e51b8152602060048201526007602482015266086a08cbe9c8a960cb1b604482015290519081900360640190fd5b50565b6000806000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639a6fc8f5886040518263ffffffff1660e01b815260040180826001600160501b0316815260200191505060a06040518083038186803b1580156106bd57600080fd5b505afa1580156106d1573d6000803e3d6000fd5b505050506040513d60a08110156106e757600080fd5b508051602082015160609092015190945090925090505b60008212156107c357610710836105fc565b6001830392507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639a6fc8f5846040518263ffffffff1660e01b815260040180826001600160501b0316815260200191505060a06040518083038186803b15801561078357600080fd5b505afa158015610797573d6000803e3d6000fd5b505050506040513d60a08110156107ad57600080fd5b50602081015160609091015190925090506106fe565b9196909550909350915050565b610300546000908190819060ff1661010081106107e957fe5b600302016040518060600160405290816000820154815260200160018201548152602001600282015481525050905080600001516000141561083d5760405162461bcd60e51b81526004016104f090610c97565b6000610847610967565b90506000610855828861096b565b9050600080610863836109cd565b909250905060006108b76108ac61088461087d888c61096b565b8c90610b1d565b6108a661089e8a604001518d61096b90919063ffffffff16565b8a5190610b1d565b90610b76565b602088015190610b76565b90506000836040015185116108d9578360400151945083602001519050610948565b848360400151116108f7578260400151945082602001519050610948565b60008460400151846040015103905060008560400151870390506109436108ac8361093d846109378b602001518b6020015161096b90919063ffffffff16565b90610b1d565b90610bd0565b925050505b61095885870361093d848461096b565b9b9a5050505050505050505050565b4290565b6000828211156109c2576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b508082035b92915050565b6109d5610c37565b6109dd610c37565b6103005460ff16600080610100815b81811015610a5f578760008660ff166101008110610a0657fe5b600302016002015411610a505760008560ff166101008110610a2457fe5b600302016002015460001415610a4257846001019350839250610a5f565b849350836001019250610a5f565b600019909401936001016109ec565b81811415610a7f5760405162461bcd60e51b81526004016104f090610c58565b60008460ff166101008110610a9057fe5b600302016040518060600160405290816000820154815260200160018201548152602001600282015481525050965060008360ff166101008110610ad057fe5b6003020160405180606001604052908160008201548152602001600182015481526020016002820154815250509550866040015186604001511015610b13578695505b5050505050915091565b600082610b2c575060006109c7565b82820282848281610b3957fe5b04146104055760405162461bcd60e51b8152600401808060200182810382526021815260200180610cd06021913960400191505060405180910390fd5b600082820183811015610405576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000808211610c26576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381610c2f57fe5b049392505050565b60405180606001604052806000815260200160008152602001600081525090565b602080825260069082015265086a8be9c8a960d31b604082015260600190565b60208082526005908201526410d517d25560da1b604082015260600190565b60208082526005908201526410d517d39160da1b604082015260600190565b928352602083019190915260ff1660408201526060019056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220f12ba8f3839146b970608a5fdcace0064204f48bdf5d884aa9ae72a3e1110d0764736f6c63430007060033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100625760003560e01c80631d1a111a14610067578063252c09d714610096578063313ce567146100d1578063a2e62045146100ef578063aed3aff7146100f9578063e757223014610101575b600080fd5b6100846004803603602081101561007d57600080fd5b503561011e565b60408051918252519081900360200190f35b6100b3600480360360208110156100ac57600080fd5b503561016d565b60408051938452602084019290925282820152519081900360600190f35b6100d9610195565b6040805160ff9092168252519081900360200190f35b6100f7610221565b005b6100d961023f565b6100846004803603602081101561011757600080fd5b5035610249565b60008060008061012c610293565b925092509250846000148061014857506001600160501b038316155b15610157575091506101689050565b61016285838361036a565b93505050505b919050565b600081610100811061017e57600080fd5b600302018054600182015460029092015490925083565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156101f057600080fd5b505afa158015610204573d6000803e3d6000fd5b505050506040513d602081101561021a57600080fd5b5051905090565b60008061022c610293565b925092505061023b828261040c565b5050565b6103005460ff1681565b600080600080610257610293565b925092509250846000148061027357506001600160501b038316155b15610282575091506101689050565b6101628583836105c1565b3b151590565b6000806000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a06040518083038186803b1580156102f557600080fd5b505afa158015610309573d6000803e3d6000fd5b505050506040513d60a081101561031f57600080fd5b508051602082015160609092015191965093508592509050600082121561035e57610349836105fc565b61035560018403610647565b90965090935090505b91945090915050909192565b61030254600090600160a01b90046001600160501b03168414610399576103928484846107d0565b9050610405565b610302546001600160a01b03166103ae610967565b14156103be575061030154610405565b6103c8838361040c565b6103d0610967565b61030280546001600160a01b0319166001600160a01b03929092169190911790556103fc8484846107d0565b61030181905590505b9392505050565b6103005460ff161580156104205750600254155b1561048c57604080516060810182528381526000602082018190529082018390528381556001819055600283905590517f5f4a9a1b73bee700ca1fb203bb004bcc0a7eca48af3f147b24dcf5bf4bf3c00b9161047f9185918591610cb6565b60405180910390a161023b565b61030054600090819060ff1661010081106104a357fe5b604080516060810182526003929092029290920180548252600181015460208301526002015491810182905291508210156104f95760405162461bcd60e51b81526004016104f090610c78565b60405180910390fd5b610300805460ff198116600160ff9283160182161791829055604083810151815160608101835287815285516020808801519389039182029093019282019290925291820186905292909160009116610100811061055357fe5b825160039190910291909101908155602082015160018201556040918201516002909101556103005490517f5f4a9a1b73bee700ca1fb203bb004bcc0a7eca48af3f147b24dcf5bf4bf3c00b916105b3918791879160ff90911690610cb6565b60405180910390a150505050565b610302546000906001600160a01b03166105d9610967565b14156105e9575061030154610405565b6105f48484846107d0565b949350505050565b6000816001600160501b031611610644576040805162461bcd60e51b8152602060048201526007602482015266086a08cbe9c8a960cb1b604482015290519081900360640190fd5b50565b6000806000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639a6fc8f5886040518263ffffffff1660e01b815260040180826001600160501b0316815260200191505060a06040518083038186803b1580156106bd57600080fd5b505afa1580156106d1573d6000803e3d6000fd5b505050506040513d60a08110156106e757600080fd5b508051602082015160609092015190945090925090505b60008212156107c357610710836105fc565b6001830392507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639a6fc8f5846040518263ffffffff1660e01b815260040180826001600160501b0316815260200191505060a06040518083038186803b15801561078357600080fd5b505afa158015610797573d6000803e3d6000fd5b505050506040513d60a08110156107ad57600080fd5b50602081015160609091015190925090506106fe565b9196909550909350915050565b610300546000908190819060ff1661010081106107e957fe5b600302016040518060600160405290816000820154815260200160018201548152602001600282015481525050905080600001516000141561083d5760405162461bcd60e51b81526004016104f090610c97565b6000610847610967565b90506000610855828861096b565b9050600080610863836109cd565b909250905060006108b76108ac61088461087d888c61096b565b8c90610b1d565b6108a661089e8a604001518d61096b90919063ffffffff16565b8a5190610b1d565b90610b76565b602088015190610b76565b90506000836040015185116108d9578360400151945083602001519050610948565b848360400151116108f7578260400151945082602001519050610948565b60008460400151846040015103905060008560400151870390506109436108ac8361093d846109378b602001518b6020015161096b90919063ffffffff16565b90610b1d565b90610bd0565b925050505b61095885870361093d848461096b565b9b9a5050505050505050505050565b4290565b6000828211156109c2576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b508082035b92915050565b6109d5610c37565b6109dd610c37565b6103005460ff16600080610100815b81811015610a5f578760008660ff166101008110610a0657fe5b600302016002015411610a505760008560ff166101008110610a2457fe5b600302016002015460001415610a4257846001019350839250610a5f565b849350836001019250610a5f565b600019909401936001016109ec565b81811415610a7f5760405162461bcd60e51b81526004016104f090610c58565b60008460ff166101008110610a9057fe5b600302016040518060600160405290816000820154815260200160018201548152602001600282015481525050965060008360ff166101008110610ad057fe5b6003020160405180606001604052908160008201548152602001600182015481526020016002820154815250509550866040015186604001511015610b13578695505b5050505050915091565b600082610b2c575060006109c7565b82820282848281610b3957fe5b04146104055760405162461bcd60e51b8152600401808060200182810382526021815260200180610cd06021913960400191505060405180910390fd5b600082820183811015610405576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000808211610c26576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381610c2f57fe5b049392505050565b60405180606001604052806000815260200160008152602001600081525090565b602080825260069082015265086a8be9c8a960d31b604082015260600190565b60208082526005908201526410d517d25560da1b604082015260600190565b60208082526005908201526410d517d39160da1b604082015260600190565b928352602083019190915260ff1660408201526060019056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220f12ba8f3839146b970608a5fdcace0064204f48bdf5d884aa9ae72a3e1110d0764736f6c63430007060033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/artifacts/contracts/EmergencyPriceFeed.sol/EmergencyPriceFeed.dbg.json b/artifacts/contracts/EmergencyPriceFeed.sol/EmergencyPriceFeed.dbg.json deleted file mode 100644 index 9fa72d0..0000000 --- a/artifacts/contracts/EmergencyPriceFeed.sol/EmergencyPriceFeed.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../build-info/f3d46276c3abf0612f2d14f482c05ecc.json" -} diff --git a/artifacts/contracts/EmergencyPriceFeed.sol/EmergencyPriceFeed.json b/artifacts/contracts/EmergencyPriceFeed.sol/EmergencyPriceFeed.json deleted file mode 100644 index d0de1be..0000000 --- a/artifacts/contracts/EmergencyPriceFeed.sol/EmergencyPriceFeed.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "EmergencyPriceFeed", - "sourceName": "contracts/EmergencyPriceFeed.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "poolArg", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "interval", - "type": "uint256" - } - ], - "name": "cacheTwap", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "decimals", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "interval", - "type": "uint256" - } - ], - "name": "getPrice", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "pool", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x608060405234801561001057600080fd5b50604051610b80380380610b8083398101604081905261002f9161009b565b61004b816001600160a01b031661009560201b6101011760201c565b6100705760405162461bcd60e51b8152600401610067906100c9565b60405180910390fd5b600080546001600160a01b0319166001600160a01b03929092169190911790556100eb565b3b151590565b6000602082840312156100ac578081fd5b81516001600160a01b03811681146100c2578182fd5b9392505050565b6020808252600890820152674550465f45414e4360c01b604082015260600190565b610a86806100fa6000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806316f0115b146100515780631d1a111a1461006f578063313ce5671461008f578063e7572230146100a4575b600080fd5b6100596100b7565b6040516100669190610953565b60405180910390f35b61008261007d36600461093b565b6100c6565b60405161006691906109f7565b6100976100cc565b6040516100669190610a00565b6100826100b236600461093b565b6100d1565b6000546001600160a01b031681565b50600090565b601290565b6000806100ed6100e86100e385610107565b610136565b610320565b90506100f881610340565b9150505b919050565b3b151590565b8063ffffffff811681146100fc5760405162461bcd60e51b815260040161012d906109b1565b60405180910390fd5b6000600a8263ffffffff1610156101de5760008060009054906101000a90046001600160a01b03166001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561019657600080fd5b505afa1580156101aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101ce919061089f565b509496506100fc95505050505050565b604080516002808252606082018352600092602083019080368337019050509050828160008151811061020d57fe5b602002602001019063ffffffff16908163ffffffff168152505060008160018151811061023657fe5b63ffffffff909216602092830291909101909101526000805460405163883bdbfd60e01b81526001600160a01b039091169063883bdbfd9061027c908590600401610967565b60006040518083038186803b15801561029457600080fd5b505afa1580156102a8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526102d091908101906107d7565b5090506103188463ffffffff16826000815181106102ea57fe5b6020026020010151836001815181106102ff57fe5b60200260200101510360060b8161031257fe5b05610359565b949350505050565b600061033a6001600160a01b03831680600160601b61068b565b92915050565b600061033a82670de0b6b3a7640000600160601b61068b565b60008060008360020b12610370578260020b610378565b8260020b6000035b9050620d89e88111156103b6576040805162461bcd60e51b81526020600482015260016024820152601560fa1b604482015290519081900360640190fd5b6000600182166103ca57600160801b6103dc565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615610410576ffff97272373d413259a46990580e213a0260801c5b600482161561042f576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b600882161561044e576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b601082161561046d576fffcb9843d60f6159c9db58835c9266440260801c5b602082161561048c576fff973b41fa98c081472e6896dfb254c00260801c5b60408216156104ab576fff2ea16466c96a3843ec78b326b528610260801c5b60808216156104ca576ffe5dee046a99a2a811c461f1969c30530260801c5b6101008216156104ea576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b61020082161561050a576ff987a7253ac413176f2b074cf7815e540260801c5b61040082161561052a576ff3392b0822b70005940c7a398e4b70f30260801c5b61080082161561054a576fe7159475a2c29b7443b29c7fa6e889d90260801c5b61100082161561056a576fd097f3bdfd2022b8845ad8f792aa58250260801c5b61200082161561058a576fa9f746462d870fdf8a65dc1f90e061e50260801c5b6140008216156105aa576f70d869a156d2a1b890bb3df62baf32f70260801c5b6180008216156105ca576f31be135f97d08fd981231505542fcfa60260801c5b620100008216156105eb576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b6202000082161561060b576e5d6af8dedb81196699c329225ee6040260801c5b6204000082161561062a576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615610647576b048a170391f7dc42444e8fa20260801c5b60008460020b131561066257806000198161065e57fe5b0490505b640100000000810615610676576001610679565b60005b60ff16602082901c0192505050919050565b60008080600019858709868602925082811090839003039050806106c157600084116106b657600080fd5b508290049050610734565b8084116106cd57600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b600082601f83011261074b578081fd5b8151602061076061075b83610a32565b610a0e565b828152818101908583018385028701840188101561077c578586fd5b855b858110156107a15761078f826107ae565b8452928401929084019060010161077e565b5090979650505050505050565b80516001600160a01b03811681146100fc57600080fd5b805161ffff811681146100fc57600080fd5b600080604083850312156107e9578182fd5b825167ffffffffffffffff80821115610800578384fd5b818501915085601f830112610813578384fd5b8151602061082361075b83610a32565b82815281810190858301838502870184018b101561083f578889fd5b8896505b8487101561086f5780518060060b811461085b57898afd5b835260019690960195918301918301610843565b5091880151919650909350505080821115610888578283fd5b506108958582860161073b565b9150509250929050565b600080600080600080600060e0888a0312156108b9578283fd5b6108c2886107ae565b965060208801518060020b81146108d7578384fd5b95506108e5604089016107c5565b94506108f3606089016107c5565b9350610901608089016107c5565b925060a088015160ff81168114610916578283fd5b60c0890151909250801515811461092b578182fd5b8091505092959891949750929550565b60006020828403121561094c578081fd5b5035919050565b6001600160a01b0391909116815260200190565b6020808252825182820181905260009190848201906040850190845b818110156109a557835163ffffffff1683529284019291840191600101610983565b50909695505050505050565b60208082526026908201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360408201526532206269747360d01b606082015260800190565b90815260200190565b60ff91909116815260200190565b60405181810167ffffffffffffffff81118282101715610a2a57fe5b604052919050565b600067ffffffffffffffff821115610a4657fe5b506020908102019056fea26469706673582212200c97e0c2a98090aaccb1938319c204f72b241ea43518e257984f60669902813464736f6c63430007060033", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c806316f0115b146100515780631d1a111a1461006f578063313ce5671461008f578063e7572230146100a4575b600080fd5b6100596100b7565b6040516100669190610953565b60405180910390f35b61008261007d36600461093b565b6100c6565b60405161006691906109f7565b6100976100cc565b6040516100669190610a00565b6100826100b236600461093b565b6100d1565b6000546001600160a01b031681565b50600090565b601290565b6000806100ed6100e86100e385610107565b610136565b610320565b90506100f881610340565b9150505b919050565b3b151590565b8063ffffffff811681146100fc5760405162461bcd60e51b815260040161012d906109b1565b60405180910390fd5b6000600a8263ffffffff1610156101de5760008060009054906101000a90046001600160a01b03166001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561019657600080fd5b505afa1580156101aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101ce919061089f565b509496506100fc95505050505050565b604080516002808252606082018352600092602083019080368337019050509050828160008151811061020d57fe5b602002602001019063ffffffff16908163ffffffff168152505060008160018151811061023657fe5b63ffffffff909216602092830291909101909101526000805460405163883bdbfd60e01b81526001600160a01b039091169063883bdbfd9061027c908590600401610967565b60006040518083038186803b15801561029457600080fd5b505afa1580156102a8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526102d091908101906107d7565b5090506103188463ffffffff16826000815181106102ea57fe5b6020026020010151836001815181106102ff57fe5b60200260200101510360060b8161031257fe5b05610359565b949350505050565b600061033a6001600160a01b03831680600160601b61068b565b92915050565b600061033a82670de0b6b3a7640000600160601b61068b565b60008060008360020b12610370578260020b610378565b8260020b6000035b9050620d89e88111156103b6576040805162461bcd60e51b81526020600482015260016024820152601560fa1b604482015290519081900360640190fd5b6000600182166103ca57600160801b6103dc565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615610410576ffff97272373d413259a46990580e213a0260801c5b600482161561042f576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b600882161561044e576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b601082161561046d576fffcb9843d60f6159c9db58835c9266440260801c5b602082161561048c576fff973b41fa98c081472e6896dfb254c00260801c5b60408216156104ab576fff2ea16466c96a3843ec78b326b528610260801c5b60808216156104ca576ffe5dee046a99a2a811c461f1969c30530260801c5b6101008216156104ea576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b61020082161561050a576ff987a7253ac413176f2b074cf7815e540260801c5b61040082161561052a576ff3392b0822b70005940c7a398e4b70f30260801c5b61080082161561054a576fe7159475a2c29b7443b29c7fa6e889d90260801c5b61100082161561056a576fd097f3bdfd2022b8845ad8f792aa58250260801c5b61200082161561058a576fa9f746462d870fdf8a65dc1f90e061e50260801c5b6140008216156105aa576f70d869a156d2a1b890bb3df62baf32f70260801c5b6180008216156105ca576f31be135f97d08fd981231505542fcfa60260801c5b620100008216156105eb576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b6202000082161561060b576e5d6af8dedb81196699c329225ee6040260801c5b6204000082161561062a576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615610647576b048a170391f7dc42444e8fa20260801c5b60008460020b131561066257806000198161065e57fe5b0490505b640100000000810615610676576001610679565b60005b60ff16602082901c0192505050919050565b60008080600019858709868602925082811090839003039050806106c157600084116106b657600080fd5b508290049050610734565b8084116106cd57600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b600082601f83011261074b578081fd5b8151602061076061075b83610a32565b610a0e565b828152818101908583018385028701840188101561077c578586fd5b855b858110156107a15761078f826107ae565b8452928401929084019060010161077e565b5090979650505050505050565b80516001600160a01b03811681146100fc57600080fd5b805161ffff811681146100fc57600080fd5b600080604083850312156107e9578182fd5b825167ffffffffffffffff80821115610800578384fd5b818501915085601f830112610813578384fd5b8151602061082361075b83610a32565b82815281810190858301838502870184018b101561083f578889fd5b8896505b8487101561086f5780518060060b811461085b57898afd5b835260019690960195918301918301610843565b5091880151919650909350505080821115610888578283fd5b506108958582860161073b565b9150509250929050565b600080600080600080600060e0888a0312156108b9578283fd5b6108c2886107ae565b965060208801518060020b81146108d7578384fd5b95506108e5604089016107c5565b94506108f3606089016107c5565b9350610901608089016107c5565b925060a088015160ff81168114610916578283fd5b60c0890151909250801515811461092b578182fd5b8091505092959891949750929550565b60006020828403121561094c578081fd5b5035919050565b6001600160a01b0391909116815260200190565b6020808252825182820181905260009190848201906040850190845b818110156109a557835163ffffffff1683529284019291840191600101610983565b50909695505050505050565b60208082526026908201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360408201526532206269747360d01b606082015260800190565b90815260200190565b60ff91909116815260200190565b60405181810167ffffffffffffffff81118282101715610a2a57fe5b604052919050565b600067ffffffffffffffff821115610a4657fe5b506020908102019056fea26469706673582212200c97e0c2a98090aaccb1938319c204f72b241ea43518e257984f60669902813464736f6c63430007060033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/artifacts/contracts/base/BlockContext.sol/BlockContext.dbg.json b/artifacts/contracts/base/BlockContext.sol/BlockContext.dbg.json deleted file mode 100644 index 1e0068d..0000000 --- a/artifacts/contracts/base/BlockContext.sol/BlockContext.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../build-info/f3d46276c3abf0612f2d14f482c05ecc.json" -} diff --git a/artifacts/contracts/base/BlockContext.sol/BlockContext.json b/artifacts/contracts/base/BlockContext.sol/BlockContext.json deleted file mode 100644 index d7a8d0e..0000000 --- a/artifacts/contracts/base/BlockContext.sol/BlockContext.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "BlockContext", - "sourceName": "contracts/base/BlockContext.sol", - "abi": [], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/artifacts/contracts/interface/IPriceFeed.sol/IPriceFeed.dbg.json b/artifacts/contracts/interface/IPriceFeed.sol/IPriceFeed.dbg.json deleted file mode 100644 index 1e0068d..0000000 --- a/artifacts/contracts/interface/IPriceFeed.sol/IPriceFeed.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../build-info/f3d46276c3abf0612f2d14f482c05ecc.json" -} diff --git a/artifacts/contracts/interface/IPriceFeed.sol/IPriceFeed.json b/artifacts/contracts/interface/IPriceFeed.sol/IPriceFeed.json deleted file mode 100644 index 6cb6a13..0000000 --- a/artifacts/contracts/interface/IPriceFeed.sol/IPriceFeed.json +++ /dev/null @@ -1,62 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "IPriceFeed", - "sourceName": "contracts/interface/IPriceFeed.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "uint256", - "name": "interval", - "type": "uint256" - } - ], - "name": "cacheTwap", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "decimals", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "interval", - "type": "uint256" - } - ], - "name": "getPrice", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/artifacts/contracts/interface/bandProtocol/IStdReference.sol/IStdReference.dbg.json b/artifacts/contracts/interface/bandProtocol/IStdReference.sol/IStdReference.dbg.json deleted file mode 100644 index 0af9483..0000000 --- a/artifacts/contracts/interface/bandProtocol/IStdReference.sol/IStdReference.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/f3d46276c3abf0612f2d14f482c05ecc.json" -} diff --git a/artifacts/contracts/interface/bandProtocol/IStdReference.sol/IStdReference.json b/artifacts/contracts/interface/bandProtocol/IStdReference.sol/IStdReference.json deleted file mode 100644 index b575f4c..0000000 --- a/artifacts/contracts/interface/bandProtocol/IStdReference.sol/IStdReference.json +++ /dev/null @@ -1,93 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "IStdReference", - "sourceName": "contracts/interface/bandProtocol/IStdReference.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "string", - "name": "_base", - "type": "string" - }, - { - "internalType": "string", - "name": "_quote", - "type": "string" - } - ], - "name": "getReferenceData", - "outputs": [ - { - "components": [ - { - "internalType": "uint256", - "name": "rate", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "lastUpdatedBase", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "lastUpdatedQuote", - "type": "uint256" - } - ], - "internalType": "struct IStdReference.ReferenceData", - "name": "", - "type": "tuple" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "string[]", - "name": "_bases", - "type": "string[]" - }, - { - "internalType": "string[]", - "name": "_quotes", - "type": "string[]" - } - ], - "name": "getReferenceDataBulk", - "outputs": [ - { - "components": [ - { - "internalType": "uint256", - "name": "rate", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "lastUpdatedBase", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "lastUpdatedQuote", - "type": "uint256" - } - ], - "internalType": "struct IStdReference.ReferenceData[]", - "name": "", - "type": "tuple[]" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/artifacts/contracts/test/TestAggregatorV3.sol/TestAggregatorV3.dbg.json b/artifacts/contracts/test/TestAggregatorV3.sol/TestAggregatorV3.dbg.json deleted file mode 100644 index 1e0068d..0000000 --- a/artifacts/contracts/test/TestAggregatorV3.sol/TestAggregatorV3.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../build-info/f3d46276c3abf0612f2d14f482c05ecc.json" -} diff --git a/artifacts/contracts/test/TestAggregatorV3.sol/TestAggregatorV3.json b/artifacts/contracts/test/TestAggregatorV3.sol/TestAggregatorV3.json deleted file mode 100644 index 6a63f73..0000000 --- a/artifacts/contracts/test/TestAggregatorV3.sol/TestAggregatorV3.json +++ /dev/null @@ -1,207 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "TestAggregatorV3", - "sourceName": "contracts/test/TestAggregatorV3.sol", - "abi": [ - { - "inputs": [], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [], - "name": "decimals", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "description", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint80", - "name": "_roundId", - "type": "uint80" - } - ], - "name": "getRoundData", - "outputs": [ - { - "internalType": "uint80", - "name": "roundId", - "type": "uint80" - }, - { - "internalType": "int256", - "name": "answer", - "type": "int256" - }, - { - "internalType": "uint256", - "name": "startedAt", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "updatedAt", - "type": "uint256" - }, - { - "internalType": "uint80", - "name": "answeredInRound", - "type": "uint80" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "latestRound", - "outputs": [ - { - "internalType": "uint80", - "name": "", - "type": "uint80" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "latestRoundData", - "outputs": [ - { - "internalType": "uint80", - "name": "roundId", - "type": "uint80" - }, - { - "internalType": "int256", - "name": "answer", - "type": "int256" - }, - { - "internalType": "uint256", - "name": "startedAt", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "updatedAt", - "type": "uint256" - }, - { - "internalType": "uint80", - "name": "answeredInRound", - "type": "uint80" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint80", - "name": "", - "type": "uint80" - } - ], - "name": "roundData", - "outputs": [ - { - "internalType": "int256", - "name": "answer", - "type": "int256" - }, - { - "internalType": "uint256", - "name": "startedAt", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "updatedAt", - "type": "uint256" - }, - { - "internalType": "uint80", - "name": "answeredInRound", - "type": "uint80" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint80", - "name": "roundId", - "type": "uint80" - }, - { - "internalType": "int256", - "name": "answer", - "type": "int256" - }, - { - "internalType": "uint256", - "name": "startedAt", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "updatedAt", - "type": "uint256" - }, - { - "internalType": "uint80", - "name": "answeredInRound", - "type": "uint80" - } - ], - "name": "setRoundData", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "version", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x608060405234801561001057600080fd5b506103e4806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80637284e4161161005b5780637284e4161461012d5780639a6fc8f5146101aa578063bc81bae814610214578063feaf968c1461026957610088565b80631c12940a1461008d578063313ce567146100d157806354fd4d50146100ef578063668a0f0214610109575b600080fd5b6100cf600480360360a08110156100a357600080fd5b506001600160501b03813581169160208101359160408201359160608101359160809091013516610271565b005b6100d96102ed565b6040805160ff9092168252519081900360200190f35b6100f76102f2565b60408051918252519081900360200190f35b6101116102f9565b604080516001600160501b039092168252519081900360200190f35b610135610308565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561016f578181015183820152602001610157565b50505050905090810190601f16801561019c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101d0600480360360208110156101c057600080fd5b50356001600160501b031661030f565b60405180866001600160501b03168152602001858152602001848152602001838152602001826001600160501b031681526020019550505050505060405180910390f35b61023a6004803603602081101561022a57600080fd5b50356001600160501b0316610344565b604080519485526020850193909352838301919091526001600160501b03166060830152519081900360800190f35b6101d0610374565b6040805160808101825294855260208086019485528582019384526001600160501b0392831660608701908152968316600081815291829052919020945185559251600180860191909155915160028501559351600390930180549390941669ffffffffffffffffffff19938416179093558254909116179055565b600090565b6000806000fd5b6001546001600160501b031681565b6060600080fd5b6001600160501b0381811660009081526020819052604090208054600182015460028301546003909301549495919490931690565b6000602081905290815260409020805460018201546002830154600390930154919290916001600160501b031684565b600180546001600160501b03908116600081815260208190526040902080549381015460028201546003909201549295909391929091169056fea264697066735822122063b247f7a64d8308ad2d2bf0a582c9c4b532b7490d20ec452c852dbe0ad38a9264736f6c63430007060033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c80637284e4161161005b5780637284e4161461012d5780639a6fc8f5146101aa578063bc81bae814610214578063feaf968c1461026957610088565b80631c12940a1461008d578063313ce567146100d157806354fd4d50146100ef578063668a0f0214610109575b600080fd5b6100cf600480360360a08110156100a357600080fd5b506001600160501b03813581169160208101359160408201359160608101359160809091013516610271565b005b6100d96102ed565b6040805160ff9092168252519081900360200190f35b6100f76102f2565b60408051918252519081900360200190f35b6101116102f9565b604080516001600160501b039092168252519081900360200190f35b610135610308565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561016f578181015183820152602001610157565b50505050905090810190601f16801561019c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101d0600480360360208110156101c057600080fd5b50356001600160501b031661030f565b60405180866001600160501b03168152602001858152602001848152602001838152602001826001600160501b031681526020019550505050505060405180910390f35b61023a6004803603602081101561022a57600080fd5b50356001600160501b0316610344565b604080519485526020850193909352838301919091526001600160501b03166060830152519081900360800190f35b6101d0610374565b6040805160808101825294855260208086019485528582019384526001600160501b0392831660608701908152968316600081815291829052919020945185559251600180860191909155915160028501559351600390930180549390941669ffffffffffffffffffff19938416179093558254909116179055565b600090565b6000806000fd5b6001546001600160501b031681565b6060600080fd5b6001600160501b0381811660009081526020819052604090208054600182015460028301546003909301549495919490931690565b6000602081905290815260409020805460018201546002830154600390930154919290916001600160501b031684565b600180546001600160501b03908116600081815260208190526040902080549381015460028201546003909201549295909391929091169056fea264697066735822122063b247f7a64d8308ad2d2bf0a582c9c4b532b7490d20ec452c852dbe0ad38a9264736f6c63430007060033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/artifacts/contracts/test/TestPriceFeed.sol/TestPriceFeed.dbg.json b/artifacts/contracts/test/TestPriceFeed.sol/TestPriceFeed.dbg.json deleted file mode 100644 index 1e0068d..0000000 --- a/artifacts/contracts/test/TestPriceFeed.sol/TestPriceFeed.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../build-info/f3d46276c3abf0612f2d14f482c05ecc.json" -} diff --git a/artifacts/contracts/test/TestPriceFeed.sol/TestPriceFeed.json b/artifacts/contracts/test/TestPriceFeed.sol/TestPriceFeed.json deleted file mode 100644 index 3c79d8e..0000000 --- a/artifacts/contracts/test/TestPriceFeed.sol/TestPriceFeed.json +++ /dev/null @@ -1,142 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "TestPriceFeed", - "sourceName": "contracts/test/TestPriceFeed.sol", - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "_chainlink", - "type": "address" - }, - { - "internalType": "address", - "name": "_bandProtocol", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [], - "name": "bandProtocol", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "interval", - "type": "uint256" - } - ], - "name": "cachedBandProtocolPrice", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "interval", - "type": "uint256" - } - ], - "name": "cachedChainlinkPrice", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "chainlink", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "currentPrice", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "interval", - "type": "uint256" - } - ], - "name": "fetchBandProtocolPrice", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "interval", - "type": "uint256" - } - ], - "name": "fetchChainlinkPrice", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "interval", - "type": "uint256" - } - ], - "name": "getPrice", - "outputs": [ - { - "internalType": "uint256", - "name": "twap", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "cachedTwap", - "type": "uint256" - } - ], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x608060405234801561001057600080fd5b5060405161070e38038061070e8339818101604052604081101561003357600080fd5b508051602090910151600080546001600160a01b039384166001600160a01b03199182161790915560018054939092169216919091179055600a60025561068f8061007f6000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80639c3feeb71161005b5780639c3feeb71461010a5780639d1b464a14610112578063bd31d5861461012c578063e75722301461014957610088565b80630b2729c11461008d5780631b05d6d0146100ac5780633d9fe301146100c95780636fea6b1c146100e6575b600080fd5b6100aa600480360360208110156100a357600080fd5b503561017f565b005b6100aa600480360360208110156100c257600080fd5b503561028a565b6100aa600480360360208110156100df57600080fd5b503561037d565b6100ee61045a565b604080516001600160a01b039092168252519081900360200190f35b6100ee610469565b61011a610478565b60408051918252519081900360200190f35b6100aa6004803603602081101561014257600080fd5b503561047e565b6101666004803603602081101561015f57600080fd5b5035610557565b6040805192835260208301919091528051918290030190f35b60005b601181101561020b5760005460408051630e75722360e41b81526004810185905290516001600160a01b039092169163e757223091602480820192602092909190829003018186803b1580156101d757600080fd5b505afa1580156101eb573d6000803e3d6000fd5b505050506040513d602081101561020157600080fd5b5050600101610182565b5060005460408051630e75722360e41b81526004810184905290516001600160a01b039092169163e757223091602480820192602092909190829003018186803b15801561025857600080fd5b505afa15801561026c573d6000803e3d6000fd5b505050506040513d602081101561028257600080fd5b505160025550565b60005b6011811015610319576000805460408051630e8d088d60e11b81526004810186905290516001600160a01b0390921692631d1a111a926024808401936020939083900390910190829087803b1580156102e557600080fd5b505af11580156102f9573d6000803e3d6000fd5b505050506040513d602081101561030f57600080fd5b505060010161028d565b506000805460408051630e8d088d60e11b81526004810185905290516001600160a01b0390921692631d1a111a926024808401936020939083900390910190829087803b15801561036957600080fd5b505af115801561026c573d6000803e3d6000fd5b60005b601181101561040b5760015460408051630e8d088d60e11b81526004810185905290516001600160a01b0390921691631d1a111a916024808201926020929091908290030181600087803b1580156103d757600080fd5b505af11580156103eb573d6000803e3d6000fd5b505050506040513d602081101561040157600080fd5b5050600101610380565b5060015460408051630e8d088d60e11b81526004810184905290516001600160a01b0390921691631d1a111a916024808201926020929091908290030181600087803b15801561036957600080fd5b6001546001600160a01b031681565b6000546001600160a01b031681565b60025481565b60005b601181101561050a5760015460408051630e75722360e41b81526004810185905290516001600160a01b039092169163e757223091602480820192602092909190829003018186803b1580156104d657600080fd5b505afa1580156104ea573d6000803e3d6000fd5b505050506040513d602081101561050057600080fd5b5050600101610481565b5060015460408051630e75722360e41b81526004810184905290516001600160a01b039092169163e757223091602480820192602092909190829003018186803b15801561025857600080fd5b60015460408051630e75722360e41b815260048101849052905160009283926001600160a01b039091169163e757223091602480820192602092909190829003018186803b1580156105a857600080fd5b505afa1580156105bc573d6000803e3d6000fd5b505050506040513d60208110156105d257600080fd5b505160015460408051630e8d088d60e11b81526004810187905290519294506001600160a01b0390911691631d1a111a916024808201926020929091908290030181600087803b15801561062557600080fd5b505af1158015610639573d6000803e3d6000fd5b505050506040513d602081101561064f57600080fd5b505191939192505056fea2646970667358221220aec50ab960822f22004ef2ab8832a87e036012953b9d651119d100655828c07164736f6c63430007060033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c80639c3feeb71161005b5780639c3feeb71461010a5780639d1b464a14610112578063bd31d5861461012c578063e75722301461014957610088565b80630b2729c11461008d5780631b05d6d0146100ac5780633d9fe301146100c95780636fea6b1c146100e6575b600080fd5b6100aa600480360360208110156100a357600080fd5b503561017f565b005b6100aa600480360360208110156100c257600080fd5b503561028a565b6100aa600480360360208110156100df57600080fd5b503561037d565b6100ee61045a565b604080516001600160a01b039092168252519081900360200190f35b6100ee610469565b61011a610478565b60408051918252519081900360200190f35b6100aa6004803603602081101561014257600080fd5b503561047e565b6101666004803603602081101561015f57600080fd5b5035610557565b6040805192835260208301919091528051918290030190f35b60005b601181101561020b5760005460408051630e75722360e41b81526004810185905290516001600160a01b039092169163e757223091602480820192602092909190829003018186803b1580156101d757600080fd5b505afa1580156101eb573d6000803e3d6000fd5b505050506040513d602081101561020157600080fd5b5050600101610182565b5060005460408051630e75722360e41b81526004810184905290516001600160a01b039092169163e757223091602480820192602092909190829003018186803b15801561025857600080fd5b505afa15801561026c573d6000803e3d6000fd5b505050506040513d602081101561028257600080fd5b505160025550565b60005b6011811015610319576000805460408051630e8d088d60e11b81526004810186905290516001600160a01b0390921692631d1a111a926024808401936020939083900390910190829087803b1580156102e557600080fd5b505af11580156102f9573d6000803e3d6000fd5b505050506040513d602081101561030f57600080fd5b505060010161028d565b506000805460408051630e8d088d60e11b81526004810185905290516001600160a01b0390921692631d1a111a926024808401936020939083900390910190829087803b15801561036957600080fd5b505af115801561026c573d6000803e3d6000fd5b60005b601181101561040b5760015460408051630e8d088d60e11b81526004810185905290516001600160a01b0390921691631d1a111a916024808201926020929091908290030181600087803b1580156103d757600080fd5b505af11580156103eb573d6000803e3d6000fd5b505050506040513d602081101561040157600080fd5b5050600101610380565b5060015460408051630e8d088d60e11b81526004810184905290516001600160a01b0390921691631d1a111a916024808201926020929091908290030181600087803b15801561036957600080fd5b6001546001600160a01b031681565b6000546001600160a01b031681565b60025481565b60005b601181101561050a5760015460408051630e75722360e41b81526004810185905290516001600160a01b039092169163e757223091602480820192602092909190829003018186803b1580156104d657600080fd5b505afa1580156104ea573d6000803e3d6000fd5b505050506040513d602081101561050057600080fd5b5050600101610481565b5060015460408051630e75722360e41b81526004810184905290516001600160a01b039092169163e757223091602480820192602092909190829003018186803b15801561025857600080fd5b60015460408051630e75722360e41b815260048101849052905160009283926001600160a01b039091169163e757223091602480820192602092909190829003018186803b1580156105a857600080fd5b505afa1580156105bc573d6000803e3d6000fd5b505050506040513d60208110156105d257600080fd5b505160015460408051630e8d088d60e11b81526004810187905290519294506001600160a01b0390911691631d1a111a916024808201926020929091908290030181600087803b15801561062557600080fd5b505af1158015610639573d6000803e3d6000fd5b505050506040513d602081101561064f57600080fd5b505191939192505056fea2646970667358221220aec50ab960822f22004ef2ab8832a87e036012953b9d651119d100655828c07164736f6c63430007060033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/artifacts/contracts/test/TestStdReference.sol/TestStdReference.dbg.json b/artifacts/contracts/test/TestStdReference.sol/TestStdReference.dbg.json deleted file mode 100644 index 1e0068d..0000000 --- a/artifacts/contracts/test/TestStdReference.sol/TestStdReference.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../build-info/f3d46276c3abf0612f2d14f482c05ecc.json" -} diff --git a/artifacts/contracts/test/TestStdReference.sol/TestStdReference.json b/artifacts/contracts/test/TestStdReference.sol/TestStdReference.json deleted file mode 100644 index def2884..0000000 --- a/artifacts/contracts/test/TestStdReference.sol/TestStdReference.json +++ /dev/null @@ -1,151 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "TestStdReference", - "sourceName": "contracts/test/TestStdReference.sol", - "abi": [ - { - "inputs": [], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [ - { - "internalType": "string", - "name": "_base", - "type": "string" - }, - { - "internalType": "string", - "name": "_quote", - "type": "string" - } - ], - "name": "getReferenceData", - "outputs": [ - { - "components": [ - { - "internalType": "uint256", - "name": "rate", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "lastUpdatedBase", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "lastUpdatedQuote", - "type": "uint256" - } - ], - "internalType": "struct IStdReference.ReferenceData", - "name": "", - "type": "tuple" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "string[]", - "name": "_bases", - "type": "string[]" - }, - { - "internalType": "string[]", - "name": "_quotes", - "type": "string[]" - } - ], - "name": "getReferenceDataBulk", - "outputs": [ - { - "components": [ - { - "internalType": "uint256", - "name": "rate", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "lastUpdatedBase", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "lastUpdatedQuote", - "type": "uint256" - } - ], - "internalType": "struct IStdReference.ReferenceData[]", - "name": "", - "type": "tuple[]" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "refData", - "outputs": [ - { - "internalType": "uint256", - "name": "rate", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "lastUpdatedBase", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "lastUpdatedQuote", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "uint256", - "name": "rate", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "lastUpdatedBase", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "lastUpdatedQuote", - "type": "uint256" - } - ], - "internalType": "struct IStdReference.ReferenceData", - "name": "_refData", - "type": "tuple" - } - ], - "name": "setReferenceData", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x608060405234801561001057600080fd5b5061040d806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806365555bcc146100515780636d4d68151461007a578063dd5bed931461008f578063e42a071b146100a6575b600080fd5b61006461005f36600461027c565b6100c6565b604051610071919061038f565b60405180910390f35b61008d6100883660046102d3565b6100f7565b005b61009761010d565b6040516100719392919061039d565b6100b96100b436600461021b565b610119565b6040516100719190610341565b6100ce610120565b506040805160608101825260005481526001546020820152600254918101919091525b92915050565b8051600055602081015160015560400151600255565b60005460015460025483565b6060600080fd5b60405180606001604052806000815260200160008152602001600081525090565b600082601f830112610151578081fd5b8135602067ffffffffffffffff82111561016757fe5b61017481828402016103b3565b82815281810190858301855b858110156101a957610197898684358b01016101b6565b84529284019290840190600101610180565b5090979650505050505050565b600082601f8301126101c6578081fd5b813567ffffffffffffffff8111156101da57fe5b6101ed601f8201601f19166020016103b3565b818152846020838601011115610201578283fd5b816020850160208301379081016020019190915292915050565b6000806040838503121561022d578182fd5b823567ffffffffffffffff80821115610244578384fd5b61025086838701610141565b93506020850135915080821115610265578283fd5b5061027285828601610141565b9150509250929050565b6000806040838503121561028e578182fd5b823567ffffffffffffffff808211156102a5578384fd5b6102b1868387016101b6565b935060208501359150808211156102c6578283fd5b50610272858286016101b6565b6000606082840312156102e4578081fd5b6040516060810181811067ffffffffffffffff8211171561030157fe5b80604052508235815260208301356020820152604083013560408201528091505092915050565b8051825260208082015190830152604090810151910152565b6020808252825182820181905260009190848201906040850190845b8181101561038357610370838551610328565b928401926060929092019160010161035d565b50909695505050505050565b606081016100f18284610328565b9283526020830191909152604082015260600190565b60405181810167ffffffffffffffff811182821017156103cf57fe5b60405291905056fea26469706673582212200153473874d9f1597d91cbac5a5165e1467ab6602546135b88bfe3cda5f4d68464736f6c63430007060033", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c806365555bcc146100515780636d4d68151461007a578063dd5bed931461008f578063e42a071b146100a6575b600080fd5b61006461005f36600461027c565b6100c6565b604051610071919061038f565b60405180910390f35b61008d6100883660046102d3565b6100f7565b005b61009761010d565b6040516100719392919061039d565b6100b96100b436600461021b565b610119565b6040516100719190610341565b6100ce610120565b506040805160608101825260005481526001546020820152600254918101919091525b92915050565b8051600055602081015160015560400151600255565b60005460015460025483565b6060600080fd5b60405180606001604052806000815260200160008152602001600081525090565b600082601f830112610151578081fd5b8135602067ffffffffffffffff82111561016757fe5b61017481828402016103b3565b82815281810190858301855b858110156101a957610197898684358b01016101b6565b84529284019290840190600101610180565b5090979650505050505050565b600082601f8301126101c6578081fd5b813567ffffffffffffffff8111156101da57fe5b6101ed601f8201601f19166020016103b3565b818152846020838601011115610201578283fd5b816020850160208301379081016020019190915292915050565b6000806040838503121561022d578182fd5b823567ffffffffffffffff80821115610244578384fd5b61025086838701610141565b93506020850135915080821115610265578283fd5b5061027285828601610141565b9150509250929050565b6000806040838503121561028e578182fd5b823567ffffffffffffffff808211156102a5578384fd5b6102b1868387016101b6565b935060208501359150808211156102c6578283fd5b50610272858286016101b6565b6000606082840312156102e4578081fd5b6040516060810181811067ffffffffffffffff8211171561030157fe5b80604052508235815260208301356020820152604083013560408201528091505092915050565b8051825260208082015190830152604090810151910152565b6020808252825182820181905260009190848201906040850190845b8181101561038357610370838551610328565b928401926060929092019160010161035d565b50909695505050505050565b606081016100f18284610328565b9283526020830191909152604082015260600190565b60405181810167ffffffffffffffff811182821017156103cf57fe5b60405291905056fea26469706673582212200153473874d9f1597d91cbac5a5165e1467ab6602546135b88bfe3cda5f4d68464736f6c63430007060033", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/artifacts/contracts/twap/CachedTwap.sol/CachedTwap.dbg.json b/artifacts/contracts/twap/CachedTwap.sol/CachedTwap.dbg.json deleted file mode 100644 index 1e0068d..0000000 --- a/artifacts/contracts/twap/CachedTwap.sol/CachedTwap.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../build-info/f3d46276c3abf0612f2d14f482c05ecc.json" -} diff --git a/artifacts/contracts/twap/CachedTwap.sol/CachedTwap.json b/artifacts/contracts/twap/CachedTwap.sol/CachedTwap.json deleted file mode 100644 index 73eb51d..0000000 --- a/artifacts/contracts/twap/CachedTwap.sol/CachedTwap.json +++ /dev/null @@ -1,78 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "CachedTwap", - "sourceName": "contracts/twap/CachedTwap.sol", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "price", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint8", - "name": "indexAt", - "type": "uint8" - } - ], - "name": "PriceUpdated", - "type": "event" - }, - { - "inputs": [], - "name": "currentObservationIndex", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "observations", - "outputs": [ - { - "internalType": "uint256", - "name": "price", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "priceCumulative", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "linkReferences": {}, - "deployedLinkReferences": {} -} diff --git a/artifacts/contracts/twap/CumulativeTwap.sol/CumulativeTwap.dbg.json b/artifacts/contracts/twap/CumulativeTwap.sol/CumulativeTwap.dbg.json deleted file mode 100644 index 1e0068d..0000000 --- a/artifacts/contracts/twap/CumulativeTwap.sol/CumulativeTwap.dbg.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "_format": "hh-sol-dbg-1", - "buildInfo": "../../../build-info/f3d46276c3abf0612f2d14f482c05ecc.json" -} diff --git a/artifacts/contracts/twap/CumulativeTwap.sol/CumulativeTwap.json b/artifacts/contracts/twap/CumulativeTwap.sol/CumulativeTwap.json deleted file mode 100644 index 9b5de53..0000000 --- a/artifacts/contracts/twap/CumulativeTwap.sol/CumulativeTwap.json +++ /dev/null @@ -1,78 +0,0 @@ -{ - "_format": "hh-sol-artifact-1", - "contractName": "CumulativeTwap", - "sourceName": "contracts/twap/CumulativeTwap.sol", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "price", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint8", - "name": "indexAt", - "type": "uint8" - } - ], - "name": "PriceUpdated", - "type": "event" - }, - { - "inputs": [], - "name": "currentObservationIndex", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "observations", - "outputs": [ - { - "internalType": "uint256", - "name": "price", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "priceCumulative", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x608060405234801561001057600080fd5b5061010f806100206000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c8063252c09d7146037578063aed3aff714605c575b600080fd5b60466042366004609e565b606d565b60405160539392919060b5565b60405180910390f35b60626094565b6040516053919060cb565b6000816101008110607d57600080fd5b600302018054600182015460029092015490925083565b6103005460ff1681565b60006020828403121560ae578081fd5b5035919050565b9283526020830191909152604082015260600190565b60ff9190911681526020019056fea2646970667358221220e95fa752afde4f8b7b627fcf277c0b4000b18f37d84f3859f567e687ac22621464736f6c63430007060033", - "deployedBytecode": "0x6080604052348015600f57600080fd5b506004361060325760003560e01c8063252c09d7146037578063aed3aff714605c575b600080fd5b60466042366004609e565b606d565b60405160539392919060b5565b60405180910390f35b60626094565b6040516053919060cb565b6000816101008110607d57600080fd5b600302018054600182015460029092015490925083565b6103005460ff1681565b60006020828403121560ae578081fd5b5035919050565b9283526020830191909152604082015260600190565b60ff9190911681526020019056fea2646970667358221220e95fa752afde4f8b7b627fcf277c0b4000b18f37d84f3859f567e687ac22621464736f6c63430007060033", - "linkReferences": {}, - "deployedLinkReferences": {} -}