{ "abi": [ { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "", "type": "string" } ], "name": "log", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "", "type": "address" } ], "name": "log_address", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256[]", "name": "val", "type": "uint256[]" } ], "name": "log_array", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "int256[]", "name": "val", "type": "int256[]" } ], "name": "log_array", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address[]", "name": "val", "type": "address[]" } ], "name": "log_array", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bytes", "name": "", "type": "bytes" } ], "name": "log_bytes", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bytes32", "name": "", "type": "bytes32" } ], "name": "log_bytes32", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "int256", "name": "", "type": "int256" } ], "name": "log_int", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "key", "type": "string" }, { "indexed": false, "internalType": "address", "name": "val", "type": "address" } ], "name": "log_named_address", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "key", "type": "string" }, { "indexed": false, "internalType": "uint256[]", "name": "val", "type": "uint256[]" } ], "name": "log_named_array", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "key", "type": "string" }, { "indexed": false, "internalType": "int256[]", "name": "val", "type": "int256[]" } ], "name": "log_named_array", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "key", "type": "string" }, { "indexed": false, "internalType": "address[]", "name": "val", "type": "address[]" } ], "name": "log_named_array", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "key", "type": "string" }, { "indexed": false, "internalType": "bytes", "name": "val", "type": "bytes" } ], "name": "log_named_bytes", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "key", "type": "string" }, { "indexed": false, "internalType": "bytes32", "name": "val", "type": "bytes32" } ], "name": "log_named_bytes32", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "key", "type": "string" }, { "indexed": false, "internalType": "int256", "name": "val", "type": "int256" }, { "indexed": false, "internalType": "uint256", "name": "decimals", "type": "uint256" } ], "name": "log_named_decimal_int", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "key", "type": "string" }, { "indexed": false, "internalType": "uint256", "name": "val", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "decimals", "type": "uint256" } ], "name": "log_named_decimal_uint", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "key", "type": "string" }, { "indexed": false, "internalType": "int256", "name": "val", "type": "int256" } ], "name": "log_named_int", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "key", "type": "string" }, { "indexed": false, "internalType": "string", "name": "val", "type": "string" } ], "name": "log_named_string", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "key", "type": "string" }, { "indexed": false, "internalType": "uint256", "name": "val", "type": "uint256" } ], "name": "log_named_uint", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "", "type": "string" } ], "name": "log_string", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "log_uint", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bytes", "name": "", "type": "bytes" } ], "name": "logs", "type": "event" }, { "inputs": [], "name": "COIN", "outputs": [ { "internalType": "contract MockERC20", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "IS_TEST", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "USD", "outputs": [ { "internalType": "contract MockERC20", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "excludeArtifacts", "outputs": [ { "internalType": "string[]", "name": "excludedArtifacts_", "type": "string[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "excludeContracts", "outputs": [ { "internalType": "address[]", "name": "excludedContracts_", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "excludeSenders", "outputs": [ { "internalType": "address[]", "name": "excludedSenders_", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "factory", "outputs": [ { "internalType": "contract Factory", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "failed", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "fee", "outputs": [ { "internalType": "uint24", "name": "", "type": "uint24" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "init", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "inverted", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "nfpm", "outputs": [ { "internalType": "contract INonfungiblePositionManager", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pool", "outputs": [ { "internalType": "contract IUniswapV3Pool", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "price", "outputs": [ { "internalType": "uint160", "name": "sqrtPriceX96", "type": "uint160" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "setUp", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "int24", "name": "lower", "type": "int24" }, { "internalType": "int24", "name": "upper", "type": "int24" } ], "name": "stake", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "coinAmount", "type": "uint256" }, { "internalType": "uint256", "name": "usdAmount", "type": "uint256" }, { "internalType": "int24", "name": "lower", "type": "int24" }, { "internalType": "int24", "name": "upper", "type": "int24" } ], "name": "stake", "outputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint128", "name": "liquidity", "type": "uint128" }, { "internalType": "uint256", "name": "amount0", "type": "uint256" }, { "internalType": "uint256", "name": "amount1", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "int24", "name": "width", "type": "int24" } ], "name": "stake", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "contract MockERC20", "name": "inToken", "type": "address" }, { "internalType": "contract MockERC20", "name": "outToken", "type": "address" }, { "internalType": "uint256", "name": "amountIn", "type": "uint256" }, { "internalType": "uint160", "name": "sqrtPriceLimitX96", "type": "uint160" } ], "name": "swap", "outputs": [ { "internalType": "uint256", "name": "amountOut", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "contract MockERC20", "name": "inToken", "type": "address" }, { "internalType": "contract MockERC20", "name": "outToken", "type": "address" }, { "internalType": "uint256", "name": "amountIn", "type": "uint256" } ], "name": "swap", "outputs": [ { "internalType": "uint256", "name": "amountOut", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint160", "name": "sqrtPriceLimitX96", "type": "uint160" } ], "name": "swapToPrice", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "swapper", "outputs": [ { "internalType": "contract ISwapRouter", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "targetArtifactSelectors", "outputs": [ { "components": [ { "internalType": "address", "name": "addr", "type": "address" }, { "internalType": "bytes4[]", "name": "selectors", "type": "bytes4[]" } ], "internalType": "struct StdInvariant.FuzzSelector[]", "name": "targetedArtifactSelectors_", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "targetArtifacts", "outputs": [ { "internalType": "string[]", "name": "targetedArtifacts_", "type": "string[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "targetContracts", "outputs": [ { "internalType": "address[]", "name": "targetedContracts_", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "targetSelectors", "outputs": [ { "components": [ { "internalType": "address", "name": "addr", "type": "address" }, { "internalType": "bytes4[]", "name": "selectors", "type": "bytes4[]" } ], "internalType": "struct StdInvariant.FuzzSelector[]", "name": "targetedSelectors_", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "targetSenders", "outputs": [ { "internalType": "address[]", "name": "targetedSenders_", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "testExecuteLimitOrder", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "testExecuteOrderExactInput", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "testExecuteOrderExactOutput", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "testPlaceOrder", "outputs": [], "stateMutability": "nonpayable", "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" }, { "inputs": [], "name": "vault", "outputs": [ { "internalType": "contract Vault", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" } ], "bytecode": { "object": "0x6080604052600080546001600160a01b031990811673c36442b4a4522e871399cd717abdd847ab11fe88179091556001805490911673e592427a0aece92de3edee1f18e0157c058615641781556006805460ff60a81b1916600160a81b179055600a805460ff1916909117905534801561007857600080fd5b5061b57e80620000896000396000f3fe60806040523480156200001157600080fd5b5060043610620002535760003560e01c8063916a17c61162000142578063d21220a711620000cc578063e1c7392a1162000097578063e3baf41a116200007a578063e3baf41a1462000565578063fa7626d4146200057c578063fbfa77cf14620005a357600080fd5b8063e1c7392a1462000551578063e20c9f71146200055b57600080fd5b8063d21220a714620004b9578063d6f1300214620004da578063ddca3f431462000503578063df791e50146200053a57600080fd5b8063b5508aa9116200010d578063b5508aa9146200046d578063ba414fa61462000477578063c45a01551462000481578063c578d91d14620004a257600080fd5b8063916a17c6146200041f5780639febdbf71462000429578063a035b1fe1462000433578063a54a72b7146200044c57600080fd5b80634a09d3dd11620001e15780636fe2ae0e11620001ac5780637303e913116200018f5780637303e91314620003db57806385226c8114620003fc5780638e3b558a146200041557600080fd5b80636fe2ae0e14620003c75780637083accc14620003d157600080fd5b80634a09d3dd146200033c57806353486e2f146200036257806366d9a9a0146200037957806367e368fc146200039257600080fd5b80631ed7831c11620002225780631ed7831c14620002ee5780632b3297f914620003075780633e5e3c2314620003285780633f7286f4146200033257600080fd5b80630a9254e414620002585780630dfe1681146200026457806316f0115b146200029d5780631bf6c21b14620002cd575b600080fd5b62000262620005c4565b005b600554620002859073ffffffffffffffffffffffffffffffffffffffff1681565b60405162000294919062003ae9565b60405180910390f35b600254620002be9073ffffffffffffffffffffffffffffffffffffffff1681565b60405162000294919062003b3d565b600454620002be9073ffffffffffffffffffffffffffffffffffffffff1681565b620002f862000982565b60405162000294919062003baa565b600154620002be9073ffffffffffffffffffffffffffffffffffffffff1681565b620002f8620009f3565b620002f862000a62565b620003536200034d36600462003c38565b62000ad1565b60405162000294919062003ca4565b620002626200037336600462003ccd565b62000c7c565b6200038362000cdc565b60405162000294919062003e33565b600654620003b89074010000000000000000000000000000000000000000900460ff1681565b60405162000294919062003e51565b6200026262000df1565b6200026262001229565b600054620002be9073ffffffffffffffffffffffffffffffffffffffff1681565b6200040662001a36565b60405162000294919062003f42565b6200026262001b10565b620003836200204c565b6200026262002158565b6200043d6200248c565b60405162000294919062003f74565b600354620002be9073ffffffffffffffffffffffffffffffffffffffff1681565b620004066200252f565b620003b862002609565b602154620002be9073ffffffffffffffffffffffffffffffffffffffff1681565b62000262620004b336600462003f84565b620027c3565b600654620002859073ffffffffffffffffffffffffffffffffffffffff1681565b620004f1620004eb36600462003fa7565b62002a15565b6040516200029494939291906200401a565b6002546200052b9074010000000000000000000000000000000000000000900462ffffff1681565b6040516200029491906200406c565b620003536200054b3660046200407c565b62002a3b565b6200026262002b59565b620002f862003109565b6200026262000576366004620040c4565b62003178565b600654620003b8907501000000000000000000000000000000000000000000900460ff1681565b602254620002be9073ffffffffffffffffffffffffffffffffffffffff1681565b620005ce62002b59565b604051620005dc9062003a9c565b604051809103906000f080158015620005f9573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691821790556040517f5eb512e7000000000000000000000000000000000000000000000000000000008152635eb512e7906200067a90309060040162003ae9565b6020604051808303816000875af11580156200069a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006c091906200411b565b602280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316179055600354604080517f313ce5670000000000000000000000000000000000000000000000000000000081529051600093929092169163313ce567916004808201926020929091908290030181865afa15801562000761573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000787919062004156565b6200079490600a620042d8565b620007a390620186a06200430b565b6003546022546040517f40c10f1900000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff918216926340c10f199262000803921690859060040162004336565b600060405180830381600087803b1580156200081e57600080fd5b505af115801562000833573d6000803e3d6000fd5b505050506000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015620008a7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008cd919062004156565b620008da90600a620042d8565b620008e990620186a06200430b565b600480546022546040517f40c10f1900000000000000000000000000000000000000000000000000000000815293945073ffffffffffffffffffffffffffffffffffffffff918216936340c10f19936200094a939092169186910162004336565b600060405180830381600087803b1580156200096557600080fd5b505af11580156200097a573d6000803e3d6000fd5b505050505050565b60606013805480602002602001604051908101604052809291908181526020018280548015620009e957602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311620009bd575b5050505050905090565b60606015805480602002602001604051908101604052809291908181526020018280548015620009e95760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311620009bd575050505050905090565b60606014805480602002602001604051908101604052809291908181526020018280548015620009e95760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311620009bd575050505050905090565b6001546040517f095ea7b300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff8088169263095ea7b39262000b2e921690879060040162004336565b6020604051808303816000875af115801562000b4e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b7491906200436c565b50604080516101008101825273ffffffffffffffffffffffffffffffffffffffff8781168252868116602083015260025474010000000000000000000000000000000000000000900462ffffff168284015233606083015242608083015260a08201869052600060c083015284811660e083015260015492517f414bf3890000000000000000000000000000000000000000000000000000000081529192169063414bf3899062000c2a9084906004016200442e565b6020604051808303816000875af115801562000c4a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c7091906200444d565b9150505b949350505050565b6000600262000c9485670de0b6b3a76400006200430b565b62000ca091906200449f565b90506000600262000cb586620f42406200430b565b62000cc191906200449f565b905062000cd18282868662002a15565b505050505050505050565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101562000de857600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff16835260018101805483518187028101870190945280845293949193858301939283018282801562000dcf57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162000d7b5790505b5050505050815250508152602001906001019062000d00565b50505050905090565b60408051600380825260808201909252600091816020015b60408051808201909152600081526060602082015281526020019060019003908162000e0957505060408051600180825281830190925291925060009190602082015b60408051808201909152600081526060602082015281526020019060019003908162000e4c579050506040805180820190915290915080600081526020016040518060a00160405280608081526020016200b4c9608091398152508160008151811062000ebd5762000ebd620044ec565b6020908102919091010152604080516001808252818301909252600091816020015b60408051808201909152600081526060602082015281526020019060019003908162000edf579050506040805180820190915290915080600081526020016040518060a00160405280608081526020016200b3c9608091398152508160008151811062000f505762000f50620044ec565b6020908102919091010152604080516001808252818301909252600091816020015b60408051808201909152600081526060602082015281526020019060019003908162000f72579050506040805180820190915290915080600081526020016040518060a00160405280608081526020016200b449608091398152508160008151811062000fe35762000fe3620044ec565b6020026020010181905250604051806040016040528061555561ffff16815260200184815250846000815181106200101f576200101f620044ec565b6020026020010181905250604051806040016040528061555561ffff16815260200183815250846001815181106200105b576200105b620044ec565b6020026020010181905250604051806040016040528061555561ffff1681526020018281525084600281518110620010975762001097620044ec565b6020026020010181905250600060405180610100016040528073fd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb973ffffffffffffffffffffffffffffffffffffffff1681526020017382af49447d8a07e3bd95bd0d56f35241523fbab173ffffffffffffffffffffffffffffffffffffffff1681526020016040518060400160405280600180811115620011305762001130620044bd565b81526101f460209182015290825268056bc75e2d631000008282015260016040808401919091526000606084015267ffffffffffffffff608084015260a09092018890529051919250620011a1916200118c9184910162004799565b6040516020818303038152906040526200324c565b6022546040517ff1c6d05100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063f1c6d05190620011f990849060040162004799565b600060405180830381600087803b1580156200121457600080fd5b505af115801562000cd1573d6000803e3d6000fd5b604080516001808252818301909252600091816020015b6040805180820190915260008152606060208201528152602001906001900390816200124057505060408051600180825281830190925291925060009190602082015b604080518082019091526000815260606020820152815260200190600190039081620012835790505090506000612710620012bd6200248c565b620012cb90612711620047ae565b620012d79190620047fd565b6040805160a081018252600181526000602080830182905282840182905273ffffffffffffffffffffffffffffffffffffffff85166060840152608083018290529251939450926200132a9201620048ab565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282019091529150806001815260200182815250836000815181106200137f576200137f620044ec565b6020026020010181905250604051806040016040528061ffff801681526020018481525084600081518110620013b957620013b9620044ec565b60200260200101819052506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600a8273ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200143b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001461919062004156565b6200146e90600a620042d8565b6200147b9060036200430b565b6200148791906200449f565b6022546040517f40c10f1900000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff808516926340c10f1992620014e4921690859060040162004336565b600060405180830381600087803b158015620014ff57600080fd5b505af115801562001514573d6000803e3d6000fd5b5050604080516101008101825260055473ffffffffffffffffffffffffffffffffffffffff9081168252600654811660208084019190915283518085018552600180825260025474010000000000000000000000000000000000000000900462ffffff168284015284860191909152606084018890526080840152600060a0840181905267ffffffffffffffff60c085015260e084018d905260225485517fe78f84e700000000000000000000000000000000000000000000000000000000815295519497509095509091169263e78f84e792600480830193928290030181865afa15801562001608573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200162e9190620048da565b6022546040517ff1c6d05100000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff169063f1c6d051906200168790859060040162004799565b600060405180830381600087803b158015620016a257600080fd5b505af1158015620016b7573d6000803e3d6000fd5b50505050620016fb6040518060400160405280600c81526020017f706c61636564206f726465720000000000000000000000000000000000000000815250620032df565b620017108167ffffffffffffffff1662003372565b604080518082018252600181527f4c00000000000000000000000000000000000000000000000000000000000000602082015290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f28dceb391620017939190600401620048fd565b600060405180830381600087803b158015620017ae57600080fd5b505af1158015620017c3573d6000803e3d6000fd5b505060225460408051602081018252600080825291517f6e98833d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9093169450636e98833d93506200182f92869291906004016200493a565b600060405180830381600087803b1580156200184a57600080fd5b505af11580156200185f573d6000803e3d6000fd5b50505050620018876040518060600160405280603081526020016200b37560309139620032df565b6200189286620027c3565b604080518082018252600181527f4c00000000000000000000000000000000000000000000000000000000000000602082015290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f28dceb391620019159190600401620048fd565b600060405180830381600087803b1580156200193057600080fd5b505af115801562001945573d6000803e3d6000fd5b505060225460408051602081018252600080825291517f6e98833d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9093169450636e98833d9350620019b192869291906004016200493a565b600060405180830381600087803b158015620019cc57600080fd5b505af1158015620019e1573d6000803e3d6000fd5b5050505062001a0861271087612711620019fc9190620047ae565b620004b39190620047fd565b62001a2c6040518060600160405280602481526020016200b3a560249139620032df565b5050505050505050565b60606017805480602002602001604051908101604052809291908181526020016000905b8282101562000de857838290600052602060002001805462001a7c9062004997565b80601f016020809104026020016040519081016040528092919081815260200182805462001aaa9062004997565b801562001afb5780601f1062001acf5761010080835404028352916020019162001afb565b820191906000526020600020905b81548152906001019060200180831162001add57829003601f168201915b50505050508152602001906001019062001a5a565b604080516001808252818301909252600091816020015b60408051808201909152600081526060602082015281526020019060019003908162001b2757505060408051600180825281830190925291925060009190602082015b60408051808201909152600081526060602082015281526020019060019003908162001b6a579050506040805180820190915290915080600081526020016040518060a00160405280608081526020016200b4c9608091398152508160008151811062001bdb5762001bdb620044ec565b6020026020010181905250604051806040016040528061ffff80168152602001828152508260008151811062001c155762001c15620044ec565b60200260200101819052506000600a600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001c92573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001cb8919062004156565b62001cc590600a620042d8565b62001cd29060036200430b565b62001cde91906200449f565b6003546022546040517f40c10f1900000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff918216926340c10f199262001d3e921690859060040162004336565b600060405180830381600087803b15801562001d5957600080fd5b505af115801562001d6e573d6000803e3d6000fd5b5050604080516101008101825260035473ffffffffffffffffffffffffffffffffffffffff908116825260048054821660208085019190915284518086018652600180825260025474010000000000000000000000000000000000000000900462ffffff168284015285870191909152606085018990526080850152600060a0850181905267ffffffffffffffff60c086015260e085018b905260225486517fe78f84e700000000000000000000000000000000000000000000000000000000815296519598509096509092169363e78f84e793818301939290918290030181865afa15801562001e63573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e899190620048da565b6022546040517ff1c6d05100000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff169063f1c6d0519062001ee290859060040162004799565b600060405180830381600087803b15801562001efd57600080fd5b505af115801562001f12573d6000803e3d6000fd5b5050505062001f566040518060400160405280600c81526020017f706c61636564206f726465720000000000000000000000000000000000000000815250620032df565b62001f6b8167ffffffffffffffff1662003372565b60225460408051602081018252600080825291517f6e98833d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90931692636e98833d9262001fd19286926004016200493a565b600060405180830381600087803b15801562001fec57600080fd5b505af115801562002001573d6000803e3d6000fd5b50505050620020456040518060400160405280600881526020017f6578656375746564000000000000000000000000000000000000000000000000815250620032df565b5050505050565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101562000de857600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff1683526001810180548351818702810187019094528084529394919385830193928301828280156200213f57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620020eb5790505b5050505050815250508152602001906001019062002070565b604080516001808252818301909252600091816020015b6040805180820190915260008152606060208201528152602001906001900390816200216f57505060408051600180825281830190925291925060009190602082015b604080518082019091526000815260606020820152815260200190600190039081620021b2579050506040805180820190915290915080600081526020016040518060a00160405280608081526020016200b4c96080913981525081600081518110620022235762002223620044ec565b6020026020010181905250604051806040016040528061ffff8016815260200182815250826000815181106200225d576200225d620044ec565b60200260200101819052506000600a600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015620022da573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002300919062004156565b6200230d90600a620042d8565b6200231a9060036200430b565b6200232691906200449f565b6003546022546040517f40c10f1900000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff918216926340c10f199262002386921690859060040162004336565b600060405180830381600087803b158015620023a157600080fd5b505af1158015620023b6573d6000803e3d6000fd5b5050604080516101008101825260035473ffffffffffffffffffffffffffffffffffffffff908116825260048054821660208085019190915284518086018652600181526101f481830152848601526060840188905260006080850181905260a0850181905267ffffffffffffffff60c086015260e085018b905260225486517fe78f84e700000000000000000000000000000000000000000000000000000000815296519598509096509092169363e78f84e793818301939290918290030181865afa15801562001e63573d6000803e3d6000fd5b600254604080517f3850c7bd000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691633850c7bd9160048083019260e09291908290030181865afa158015620024fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620025239190620049ff565b50949695505050505050565b60606016805480602002602001604051908101604052809291908181526020016000905b8282101562000de8578382906000526020600020018054620025759062004997565b80601f0160208091040260200160405190810160405280929190818152602001828054620025a39062004997565b8015620025f45780601f10620025c857610100808354040283529160200191620025f4565b820191906000526020600020905b815481529060010190602001808311620025d657829003601f168201915b50505050508152602001906001019062002553565b600654600090760100000000000000000000000000000000000000000000900460ff1615620026565750600654760100000000000000000000000000000000000000000000900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620027be57604051600090737109709ecfa91a80626ff3989d68f67f5b1dd12d907f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc490620026e49083907f6661696c656400000000000000000000000000000000000000000000000000009060200162004336565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905262002722929160200162004ac3565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526200275c9162004ae0565b6000604051808303816000865af19150503d80600081146200279b576040519150601f19603f3d011682016040523d82523d6000602084013e620027a0565b606091505b5091505080806020019051810190620027ba91906200436c565b9150505b919050565b620028036040518060400160405280600b81526020017f73776170546f5072696365000000000000000000000000000000000000000000815250620032df565b620028248173ffffffffffffffffffffffffffffffffffffffff1662003372565b6000620028306200248c565b9050620028538173ffffffffffffffffffffffffffffffffffffffff1662003372565b8173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200288b575050565b60008273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1611620028e05760065473ffffffffffffffffffffffffffffffffffffffff16620028fa565b60055473ffffffffffffffffffffffffffffffffffffffff165b905060008373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1610620029515760065473ffffffffffffffffffffffffffffffffffffffff166200296b565b60055473ffffffffffffffffffffffffffffffffffffffff165b6040517f40c10f190000000000000000000000000000000000000000000000000000000081529091506c100000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff8416906340c10f1990620029d3903090859060040162004336565b600060405180830381600087803b158015620029ee57600080fd5b505af115801562002a03573d6000803e3d6000fd5b505050506200097a8383838862000ad1565b60008060008062002a298888888862003405565b929b919a509850909650945050505050565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002aac573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002ad291906200411b565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161462002b2c5762002b26600173fffd8963efd1fc6a506488495d951d5263988d2662004aee565b62002b3e565b62002b3e6401000276a3600162004b1f565b905062002b4e8585858462000ad1565b9150505b9392505050565b601260405162002b699062003aaa565b62002b75919062004bba565b604051809103906000f08015801562002b92573d6000803e3d6000fd5b50600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091178155604080518082019091529081527f4d45480000000000000000000000000000000000000000000000000000000000602082015262002c1690620032df565b60035462002c3a9073ffffffffffffffffffffffffffffffffffffffff16620039e8565b600660405162002c4a9062003aaa565b62002c56919062004c59565b604051809103906000f08015801562002c73573d6000803e3d6000fd5b50600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091178155604080518082019091529081527f5553584400000000000000000000000000000000000000000000000000000000602082015262002cf790620032df565b60045462002d1b9073ffffffffffffffffffffffffffffffffffffffff16620039e8565b600280547fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff167501f40000000000000000000000000000000000000000179055600454600354600680547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff94851694909316939093118202929092179182905560ff91041662002df05760035473ffffffffffffffffffffffffffffffffffffffff1662002e0a565b60045473ffffffffffffffffffffffffffffffffffffffff165b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560065474010000000000000000000000000000000000000000900460ff1662002e915760045473ffffffffffffffffffffffffffffffffffffffff1662002eab565b60035473ffffffffffffffffffffffffffffffffffffffff165b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179081905560009074010000000000000000000000000000000000000000900460ff1662002f26576910c6f7a0b5ed8d36b4c762002f37565b6e0f42400000000000000000000000005b905062002f5d6040518060800160405280605381526020016200b32260539139620032df565b6000546005546006546002546040517f13ead56200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff948516946313ead5629462002fe494908216939116917401000000000000000000000000000000000000000090910462ffffff1690879060040162004c80565b6020604051808303816000875af115801562003004573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200302a91906200411b565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560408051808201909152600781527f763320706f6f6c000000000000000000000000000000000000000000000000006020820152620030ae90620032df565b600254620030d29073ffffffffffffffffffffffffffffffffffffffff16620039e8565b62003106629896807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618620003738162004cbd565b50565b60606012805480602002602001604051908101604052809291908181526020018280548015620009e95760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311620009bd575050505050905090565b60008160020b136200318957600080fd5b600254604080517f3850c7bd000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691633850c7bd9160048083019260e09291908290030181865afa158015620031fa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620032209190620049ff565b5050505050915050620032478383836200323b919062004d05565b62000373858562004d5c565b505050565b6200310681604051602401620032639190620048fd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f560000000000000000000000000000000000000000000000000000000017905262003a76565b6200310681604051602401620032f69190620048fd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac0000000000000000000000000000000000000000000000000000000017905262003a76565b620031068160405160240162003389919062003ca4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff82c50f10000000000000000000000000000000000000000000000000000000017905262003a76565b6003546040517f40c10f1900000000000000000000000000000000000000000000000000000000815260009182918291829173ffffffffffffffffffffffffffffffffffffffff909116906340c10f1990620034689030908c9060040162004336565b600060405180830381600087803b1580156200348357600080fd5b505af115801562003498573d6000803e3d6000fd5b50506003546000546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316945063095ea7b39350620034fb92909116908c9060040162004336565b6020604051808303816000875af11580156200351b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200354191906200436c565b50600480546040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116916340c10f19916200359b9130918c910162004336565b600060405180830381600087803b158015620035b657600080fd5b505af1158015620035cb573d6000803e3d6000fd5b5050600480546000546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316955063095ea7b394506200362e9391909216918c910162004336565b6020604051808303816000875af11580156200364e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200367491906200436c565b50600254604080517fd0c93a7c000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163d0c93a7c9160048083019260209291908290030181865afa158015620036e6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200370c919062004db2565b6040517f97fd6da700000000000000000000000000000000000000000000000000000000815290915073__$74cfa661df799b6cc5f12f5b8f602e3b0f$__906397fd6da79062003763908a90859060040162004de0565b602060405180830381865af415801562003781573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620037a7919062004db2565b6040517f97fd6da700000000000000000000000000000000000000000000000000000000815290975073__$74cfa661df799b6cc5f12f5b8f602e3b0f$__906397fd6da790620037fe908990859060040162004de0565b602060405180830381865af41580156200381c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003842919062004db2565b604080516101608101825260035473ffffffffffffffffffffffffffffffffffffffff908116825260048054821660208401526002805474010000000000000000000000000000000000000000900462ffffff16848601528c810b606085015285900b608084015260a083018e905260c083018d9052600060e08401819052610100840181905233610120850152426101408501525493517f88316456000000000000000000000000000000000000000000000000000000008152949a509193921691638831645691620039199185910162004ee3565b6080604051808303816000875af115801562003939573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200395f919062004f1b565b60408051808201909152600681527f6d696e7465640000000000000000000000000000000000000000000000000000602082015293995091975095509350620039a890620032df565b620039c5856fffffffffffffffffffffffffffffffff1662003372565b620039d08462003372565b620039db8362003372565b5050945094509450949050565b6200310681604051602401620039ff919062003ae9565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc2000000000000000000000000000000000000000000000000000000001790525b620031068180516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6151af8062004f7683390190565b6111fd806200a12583390190565b600073ffffffffffffffffffffffffffffffffffffffff82165b92915050565b62003ae38162003ab8565b82525050565b6020810162003ad2828462003ad8565b600073ffffffffffffffffffffffffffffffffffffffff821662003ad2565b600062003ad28262003af9565b600062003ad28262003b18565b62003ae38162003b25565b6020810162003ad2828462003b32565b62003b59828262003ad8565b5060200190565b600062003b6b825190565b808452602093840193830160005b8281101562003ba05762003b8f86835162003b4d565b955060208201915060010162003b79565b5093949350505050565b60208152600062002b52602083018462003b60565b600062003ad28262003ab8565b62003bd78162003bbf565b81146200310657600080fd5b80358062003bf18162003bcc565b5092915050565b8062003bd7565b80358062003bf18162003bf8565b73ffffffffffffffffffffffffffffffffffffffff811662003bd7565b80358062003bf18162003c0d565b6000806000806080858703121562003c535762003c53600080fd5b62003c5f868662003be3565b935062003c70866020870162003be3565b925062003c81866040870162003bff565b915062003c92866060870162003c2a565b905092959194509250565b8062003ae3565b6020810162003ad2828462003c9d565b62003bd78160020b90565b80358062003bf18162003cb4565b60008060006060848603121562003ce75762003ce7600080fd5b62003cf3858562003bff565b925062003d04856020860162003cbf565b915062003d15856040860162003cbf565b90509250925092565b7fffffffff00000000000000000000000000000000000000000000000000000000811662003ae3565b62003b59828262003d1e565b600062003d5e825190565b808452602093840193830160005b8281101562003ba05762003d8286835162003d47565b955060208201915060010162003d6c565b62003da082825162003ad8565b600060208201516040602085015262000c74604085018262003d53565b600062002b52838362003d93565b600062003dd6825190565b808452602084018094508160051b810162003df18560200190565b60005b8481101562003e2757838303885262003e0f83835162003dbd565b92506020820160209890980197915060010162003df4565b50909695505050505050565b60208152600062002b52602083018462003dcb565b80151562003ae3565b6020810162003ad2828462003e48565b60005b8381101562003e7e57818101518382015260200162003e64565b50506000910152565b600062003e92825190565b8084526020840162003ea982826020870162003e61565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b600062002b52838362003e87565b600062003ef1825190565b808452602084018094508160051b810162003f0c8560200190565b60005b8481101562003e2757838303885262003f2a83835162003ed8565b92506020820160209890980197915060010162003f0f565b60208152600062002b52602083018462003ee6565b73ffffffffffffffffffffffffffffffffffffffff811662003ae3565b6020810162003ad2828462003f57565b60006020828403121562003f9b5762003f9b600080fd5b62002b52838362003c2a565b6000806000806080858703121562003fc25762003fc2600080fd5b62003fce868662003bff565b935062003fdf866020870162003bff565b925062003ff0866040870162003cbf565b915062003c92866060870162003cbf565b6fffffffffffffffffffffffffffffffff811662003ae3565b608081016200402a828762003c9d565b62004039602083018662004001565b62004048604083018562003c9d565b62004057606083018462003c9d565b95945050505050565b62ffffff811662003ae3565b6020810162003ad2828462004060565b600080600060608486031215620040965762004096600080fd5b620040a2858562003be3565b9250620040b3856020860162003be3565b915062003d15856040860162003bff565b60008060408385031215620040dc57620040dc600080fd5b620040e8848462003bff565b9150620040f9846020850162003cbf565b90509250929050565b62003bd78162003ab8565b80518062003bf18162004102565b600060208284031215620041325762004132600080fd5b62002b5283836200410d565b60ff811662003bd7565b80518062003bf1816200413e565b6000602082840312156200416d576200416d600080fd5b62002b52838362004148565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80825b6001851115620041ee57808604811115620041ca57620041ca62004179565b6001851615620041d957908102905b8002620041e68560011c90565b9450620041ab565b94509492505050565b600082620042085750600162002b52565b81620042175750600062002b52565b81600181146200423057600281146200423b5762004271565b600191505062002b52565b60ff8411156200424f576200424f62004179565b6001841b8092508581111562004269576200426962004179565b505062002b52565b5060208310610133831016604e8410600b8410161715620042ab575081810a8084811115620042a457620042a462004179565b5062002b52565b620042ba8484846001620041a8565b808604821115620042cf57620042cf62004179565b02949350505050565b60008162000c747fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff861683620041f7565b600081838181025b80935082810482148315176200432d576200432d62004179565b50505092915050565b6040810162004346828562003ad8565b62002b52602083018462003c9d565b80151562003bd7565b80518062003bf18162004355565b600060208284031215620043835762004383600080fd5b62002b5283836200435e565b6200439c82825162003ad8565b6020810151620043b0602084018262003ad8565b506040810151620043c5604084018262004060565b506060810151620043da606084018262003ad8565b506080810151620043ef608084018262003c9d565b5060a08101516200440460a084018262003c9d565b5060c08101516200441960c084018262003c9d565b5060e08101516200324760e084018262003f57565b610100810162003ad282846200438f565b80518062003bf18162003bf8565b600060208284031215620044645762004464600080fd5b62002b5283836200443f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600081835b80620044b457620044b462004470565b90049392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60028110620031065762003106620044bd565b80620027be816200451b565b600062003ad2826200452e565b62003ae3816200453a565b6200455f82825162004547565b602081015162003247602084018262004060565b67ffffffffffffffff811662003ae3565b61ffff811662003ae3565b60038110620031065762003106620044bd565b80620027be816200458f565b600062003ad282620045a2565b62003ae381620045ae565b620045d3828251620045bb565b600060208201516040602085015262000c74604085018262003e87565b600062002b528383620045c6565b600062004609825190565b808452602084018094508160051b8101620046248560200190565b60005b8481101562003e2757838303885262004642838351620045f0565b92506020820160209890980197915060010162004627565b6200466782825162004584565b600060208201516040602085015262000c746040850182620045fe565b600062002b5283836200465a565b60006200469d825190565b808452602084018094508160051b8101620046b88560200190565b60005b8481101562003e27578383038852620046d683835162004684565b925060208201602098909801979150600101620046bb565b620046fb82825162003ad8565b6000602082015162004711602085018262003ad8565b50604082015162004726604085018262004552565b5060608201516200473b608085018262003c9d565b5060808201516200475060a085018262003e48565b5060a08201516200476560c085018262003e48565b5060c08201516200477a60e085018262004573565b5060e082015161012061010085015262000c7461012085018262004692565b60208152600062002b526020830184620046ee565b600073ffffffffffffffffffffffffffffffffffffffff821673ffffffffffffffffffffffffffffffffffffffff841673ffffffffffffffffffffffffffffffffffffffff8282021662004313565b600073ffffffffffffffffffffffffffffffffffffffff821673ffffffffffffffffffffffffffffffffffffffff8416620044a4565b63ffffffff811662003ae3565b62003ae38160130b90565b6200485882825162003e48565b60208101516200486c602084018262003e48565b50604081015162004881604084018262004833565b50606081015162004896606084018262003f57565b50608081015162003247608084018262004840565b60a0810162003ad282846200484b565b67ffffffffffffffff811662003bd7565b80518062003bf181620048bb565b600060208284031215620048f157620048f1600080fd5b62002b528383620048cc565b60208152600062002b52602083018462003e87565b600060ff821662003ad2565b62003ae38162004912565b6200493682825162003c9d565b5050565b606081016200494a828662004573565b6200495960208301856200491e565b62000c74604083018462004929565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c908190831680620049ae57607f821692505b602083108103620049c357620049c362004968565b5050919050565b80518062003bf18162003c0d565b80518062003bf18162003cb4565b61ffff811662003bd7565b80518062003bf181620049e6565b600080600080600080600060e0888a03121562004a1f5762004a1f600080fd5b62004a2b8989620049ca565b965062004a3c8960208a01620049d8565b955062004a4d8960408a01620049f1565b945062004a5e8960608a01620049f1565b935062004a6f8960808a01620049f1565b925062004a808960a08a0162004148565b915062004a918960c08a016200435e565b905092959891949750929550565b600062004aaa825190565b8362004abb82826020870162003e61565b019392505050565b62004acf818462003d1e565b600062000c74600483018462004a9f565b600062002b52828462004a9f565b73ffffffffffffffffffffffffffffffffffffffff8281168282160390819081111562003bf15762003bf162004179565b73ffffffffffffffffffffffffffffffffffffffff8281168282160190819081111562003bf15762003bf162004179565b601681526000602082017f4d6f636b20457468657265756d2048617264666f726b0000000000000000000081525b60200192915050565b600381526000602082017f4d45480000000000000000000000000000000000000000000000000000000000815262004b7e565b60608152600062004bce6060830162004b50565b828103602084015262004be18162004b87565b91505062003ad260408301846200491e565b601081526000602082017f4a6f6b652043757272656e637920584400000000000000000000000000000000815262004b7e565b600481526000602082017f5553584400000000000000000000000000000000000000000000000000000000815262004b7e565b60608152600062004c6d6060830162004bf3565b828103602084015262004be18162004c26565b6080810162004c90828762003ad8565b62004c9f602083018662003ad8565b62004cae604083018562004060565b62004057606083018462003f57565b600062004cca8260020b90565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000810362004cfc5762004cfc62004179565b60000392915050565b600062004d128260020b90565b62004d1d8460020b90565b90039050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008112627fffff8213171562003bf15762003bf162004179565b600062004d698260020b90565b62004d748460020b90565b01905080627fffff81137fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008212171562003bf15762003bf162004179565b60006020828403121562004dc95762004dc9600080fd5b62002b528383620049d8565b62003ae38160020b90565b6040810162004df0828562004dd5565b62002b52602083018462004dd5565b62004e0c82825162003ad8565b602081015162004e20602084018262003ad8565b50604081015162004e35604084018262004060565b50606081015162004e4a606084018262004dd5565b50608081015162004e5f608084018262004dd5565b5060a081015162004e7460a084018262003c9d565b5060c081015162004e8960c084018262003c9d565b5060e081015162004e9e60e084018262003c9d565b5061010081015162004eb561010084018262003c9d565b5061012081015162004ecc61012084018262003ad8565b506101408101516200324761014084018262003c9d565b610160810162003ad2828462004dff565b6fffffffffffffffffffffffffffffffff811662003bd7565b80518062003bf18162004ef4565b6000806000806080858703121562004f365762004f36600080fd5b62004f4286866200443f565b935062004f53866020870162004f0d565b925062004f6486604087016200443f565b915062003c9286606087016200443f56fe608060405234801561001057600080fd5b50600180546001600160a01b0319163317905561517d806100326000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063901c4e4f11610050578063901c4e4f146100d3578063dd009fdc146100db578063f851a440146100ee57600080fd5b80631a48240f146100775780635eb512e7146100a057806389035730146100b3575b600080fd5b61008a6100853660046102ac565b61010e565b60405161009791906102f8565b60405180910390f35b61008a6100ae36600461031b565b610120565b60005461008a9073ffffffffffffffffffffffffffffffffffffffff1681565b61008a61012d565b61008a6100e936600461033a565b61013f565b60015461008a9073ffffffffffffffffffffffffffffffffffffffff1681565b600061011a3383610152565b92915050565b600061011a826000610152565b600061013a336000610152565b905090565b600061014b8383610152565b9392505050565b604080516020808201835273ffffffffffffffffffffffffffffffffffffffff851691829052600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169092178255915190916101b59185918591016103b2565b604051602081830303815290604052805190602001206040516101d790610279565b8190604051809103906000f59050801580156101f7573d6000803e3d6000fd5b50600080547fffffffffffffffffffffffff000000000000000000000000000000000000000016905560405190915073ffffffffffffffffffffffffffffffffffffffff8416907f416468bb91b91b2da4acfc37ed49064c0d99cb1d3ea6691055ce17e79137b8d49061026b9085906103db565b60405180910390a292915050565b614d5e806103ea83390190565b60ff81165b811461029657600080fd5b50565b8035806102a581610286565b5092915050565b6000602082840312156102c1576102c1600080fd5b61014b8383610299565b600073ffffffffffffffffffffffffffffffffffffffff821661011a565b6102f2816102cb565b82525050565b6020810161011a82846102e9565b61028b816102cb565b8035806102a581610306565b60006020828403121561033057610330600080fd5b61014b838361030f565b6000806040838503121561035057610350600080fd5b61035a848461030f565b91506103698460208501610299565b90509250929050565b600061011a8260601b90565b600061011a82610372565b6102f2610395826102cb565b61037e565b600061011a8260f81b90565b6102f260ff821661039a565b6103bc8184610389565b6103c960148201836103a6565b60150192915050565b60ff81166102f2565b6020810161011a82846103d256fe60c06040523480156200001157600080fd5b50336001600160a01b031663890357306040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000051573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000779190620000bc565b6001600160a01b031660a0526000608052620000e6565b6001600160a01b0381168114620000a457600080fd5b50565b805180620000b5816200008e565b5092915050565b600060208284031215620000d357620000d3600080fd5b620000df8383620000a7565b9392505050565b60805160a051614c2862000136600039600081816102460152818161034c015281816103ea0152818161042701528181610844015281816108da0152611fd60152600061018f0152614c286000f3fe6080604052600436106100d65760003560e01c806377bad6b51161007f578063e78f84e711610059578063e78f84e714610295578063f1c6d051146102b2578063f3fef3a3146102d2578063fbbc8731146102f257600080fd5b806377bad6b5146102075780638da5cb5b14610234578063c3b35a7e1461027557600080fd5b806354fd4d50116100b057806354fd4d501461017d578063625c061c146101c75780636e98833d146101e757600080fd5b8063205c28781461011b5780632e1a7d4d1461013d578063523eb5371461015d57600080fd5b36610116577ff17c7d05fbef2f7f7af4beefa0649a44e2f27ed60c8fc3fc371ff2c1de29880a333460405161010c929190613227565b60405180910390a1005b600080fd5b34801561012757600080fd5b5061013b610136366004613282565b610319565b005b34801561014957600080fd5b5061013b6101583660046132ba565b610327565b34801561016957600080fd5b5061013b6101783660046132f5565b610334565b34801561018957600080fd5b506101b17f000000000000000000000000000000000000000000000000000000000000000081565b6040516101be919061331d565b60405180910390f35b3480156101d357600080fd5b5061013b6101e236600461389f565b6103d2565b3480156101f357600080fd5b5061013b610202366004613934565b610420565b34801561021357600080fd5b506102276102223660046132f5565b610453565b6040516101be9190613dca565b34801561024057600080fd5b506102687f000000000000000000000000000000000000000000000000000000000000000081565b6040516101be9190613ddd565b34801561028157600080fd5b5061013b610290366004613e0b565b610821565b3480156102a157600080fd5b506001546040516101be9190613e4b565b3480156102be57600080fd5b5061013b6102cd366004613e59565b61082c565b3480156102de57600080fd5b5061013b6102ed366004613e94565b6108b7565b3480156102fe57600080fd5b5060005461030c9060ff1681565b6040516101be9190613eb4565b61032382826108c2565b5050565b61033133826108c2565b50565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461037657600080fd5b6103b46040518060400160405280600b81526020017f63616e63656c4f72646572000000000000000000000000000000000000000000815250610947565b6103c78167ffffffffffffffff166109d6565b610331600082610a65565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461041457600080fd5b61032360008383610b62565b61044e60007f00000000000000000000000000000000000000000000000000000000000000008585856111e9565b505050565b61045b61312e565b6001805467ffffffffffffffff841690811061047957610479613ec2565b600091825260209091206040805161020081018252600b909302909101805473ffffffffffffffffffffffffffffffffffffffff90811661010085019081526001808401549092166101208601528351808501909452600283018054939486949293869361014087019391839160ff16908111156104f9576104f961397d565b600181111561050a5761050a61397d565b815290546101009081900462ffffff16602092830152918352600384015483820152600484015460ff8082161515604080870191909152938204161515606085015262010000900467ffffffffffffffff16608084015260058401805483518184028101840190945280845260a090940193909160009084015b828210156106e5576000848152602080822060408051808201825260028702909201805461ffff168352600181018054835181870281018701909452808452939591948681019491929084015b828210156106ce57838290600052602060002090600202016040518060400160405290816000820160009054906101000a900460ff1660028111156106185761061861397d565b60028111156106295761062961397d565b815260200160018201805461063d90613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461066990613f20565b80156106b65780601f1061068b576101008083540402835291602001916106b6565b820191906000526020600020905b81548152906001019060200180831161069957829003601f168201915b505050505081525050815260200190600101906105d1565b505050508152505081526020019060010190610584565b505050915250508152600682015460209091019060ff16600381111561070d5761070d61397d565b600381111561071e5761071e61397d565b81526006820154610100810463ffffffff166020808401919091526501000000000090910467ffffffffffffffff16604080840191909152600784015460608401526008840154608084015260098401805482518185028101850190935280835260a09094019391929091908301828280156107b957602002820191906000526020600020905b8154815260200190600101908083116107a5575b50505050508152602001600a820180548060200260200160405190810160405280929190818152602001828054801561081157602002820191906000526020600020905b8154815260200190600101908083116107fd575b5050505050815250509050919050565b61044e838383611fbe565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461086e57600080fd5b6108ac6040518060400160405280601281526020017f5661756c742e706c6163654f7264657228290000000000000000000000000000815250610947565b61033160008261209d565b610323823383611fbe565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461090457600080fd5b60405173ffffffffffffffffffffffffffffffffffffffff83169082156108fc029083906000818181858888f1935050505015801561044e573d6000803e3d6000fd5b6103318160405160240161095b9190613f4f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016109ea9190613f62565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff82c50f1000000000000000000000000000000000000000000000000000000001790526120fc565b6000826001018267ffffffffffffffff1681548110610a8657610a86613ec2565b6000918252602082206006600b90920201015460ff169150816003811115610ab057610ab061397d565b0361044e576001836001018367ffffffffffffffff1681548110610ad657610ad6613ec2565b600091825260209091206006600b909202010180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001836003811115610b2157610b2161397d565b02179055507f74a075ee230588b5c76ea493a6d21b086384f29139b7227b9c6329e66106dc4882604051610b559190613e4b565b60405180910390a1505050565b815160ff11610b7057600080fd5b600183015467ffffffffffffffff80821610610b8b57600080fd5b600080836002811115610ba057610ba061397d565b03610bb4575067ffffffffffffffff610d52565b6001836002811115610bc857610bc861397d565b1480610be557506002836002811115610be357610be361397d565b145b15610d175784600201805490509050846002016040518060600160405280856002811115610c1557610c1561397d565b815267ffffffffffffffff8516602080830191909152875160ff1660409092019190915282546001818101855560009485529190932082519301805492939092909183917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690836002811115610c8e57610c8e61397d565b02179055506020820151815460409093015160ff166901000000000000000000027fffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff67ffffffffffffffff90921661010002919091167fffffffffffffffffffffffffffffffffffffffffffff000000000000000000ff90931692909217919091179055610d52565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613fa7565b60405180910390fd5b60005b84518160ff1610156111a7576000858260ff1681518110610d7857610d78613ec2565b60200260200101519050600180811115610d9457610d9461397d565b6040820151516001811115610dab57610dab61397d565b14610de2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613feb565b600180880180549182018082556000828152919083908110610e0657610e06613ec2565b600091825260209182902060608601516003600b9093029091019182015560808501516004820180549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009283161790558551825473ffffffffffffffffffffffffffffffffffffffff9182167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216178455938701516001808501805492909316919095161790556040860151805160028401805494965091949193909284929116908381811115610ede57610ede61397d565b02179055506020919091015181547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff1661010062ffffff90921682021790915560c084015160048301805460a08701517fffffffffffffffffffffffffffffffffffffffffffff000000000000000000ff9091166201000067ffffffffffffffff909416939093027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169290921791151590920217905560005b8360e0015151811015611126576005820180546001018155600090815260e0850151805183908110610fcc57610fcc613ec2565b602002602001015190506000836000016005018381548110610ff057610ff0613ec2565b60009182526020822084516002929092020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff90921691909117815591505b8260200151518110156110e857816001018360200151828151811061105c5761105c613ec2565b60209081029190910181015182546001818101855560009485529290932081516002948502909101805492949093919284927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009091169184908111156110c4576110c461397d565b0217905550602082015160018201906110dd9082614121565b505050600101611035565b5050506009820180546001818101835560009283526020808420909201839055600a8501805480830182559084529183209091019190915501610f98565b5060060180547fffffffffffffffffffffffffffffffffffffff00000000000000000000000000166101004263ffffffff16027fffffffffffffffffffffffffffffffffffffff0000000000000000ffffffffff16176501000000000067ffffffffffffffff8716021790555081905061119f81614227565b915050610d55565b507f704790b72d78f27fe222b5e80adb23b845160c560b9e927c2c87b75adc9c2e2b8285516040516111da929190614246565b60405180910390a15050505050565b6112276040518060400160405280600781526020017f6578656375746500000000000000000000000000000000000000000000000000815250610947565b61123030612105565b6112438367ffffffffffffffff166109d6565b61124f8260ff166109d6565b6000856001018467ffffffffffffffff168154811061127057611270613ec2565b600091825260208220600b909102019150600682015460ff16600381111561129a5761129a61397d565b146112d1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614293565b6000816000016005018460ff16815481106112ee576112ee613ec2565b600091825260208220845460018601546002808801546040517f1698ee8200000000000000000000000000000000000000000000000000000000815295909102909301955084938493731f98431c8ad98523631ae4a59f267346ea31f98493631698ee82936113889373ffffffffffffffffffffffffffffffffffffffff928316939290911691610100900462ffffff16906004016142a5565b602060405180830381865afa1580156113a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c991906142d9565b905060005b600185015460ff82161015611ab6576000856001018260ff16815481106113f7576113f7613ec2565b6000918252602082206002909102019150815460ff16600281111561141e5761141e61397d565b03611627576114616040518060400160405280600f81526020017f74696d6520636f6e73747261696e740000000000000000000000000000000000815250610947565b600081600101805461147290613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461149e90613f20565b80156114eb5780601f106114c0576101008083540402835291602001916114eb565b820191906000526020600020905b8154815290600101906020018083116114ce57829003601f168201915b50505050508060200190518101906115039190614392565b9050600080825151600181111561151c5761151c61397d565b146115465781516020015160068a01546115419190610100900463ffffffff166143b1565b61154d565b8151602001515b9050428163ffffffff16111561158f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614401565b600060208301515160018111156115a8576115a861397d565b146115d457602082810151015160068a01546115cf9190610100900463ffffffff166143b1565b6115de565b8160200151602001515b9050428163ffffffff161015611620576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614445565b5050611aa3565b6001815460ff16600281111561163f5761163f61397d565b036119e4576116826040518060400160405280600f81526020017f6c696e6520636f6e73747261696e740000000000000000000000000000000000815250610947565b8473ffffffffffffffffffffffffffffffffffffffff16600003611719578273ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa1580156116eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170f91906144b9565b5094995050505050505b600081600101805461172a90613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461175690613f20565b80156117a35780601f10611778576101008083540402835291602001916117a3565b820191906000526020600020905b81548152906001019060200180831161178657829003601f168201915b50505050508060200190518101906117bb91906145dc565b602081015190915073ffffffffffffffffffffffffffffffffffffffff87169015611812576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499061462d565b6060820151608083015173ffffffffffffffffffffffffffffffffffffffff9091169060130b15611896576c01000000000000000000000000836080015160130b846040015163ffffffff1642611869919061463f565b611873919061465c565b61187d91906146e3565b6118879082614751565b90506000811215611896575060005b61189f81612194565b6118a8826109d6565b82516118b390612223565b8251819080156118d957508073ffffffffffffffffffffffffffffffffffffffff168311155b806119045750835115801561190457508073ffffffffffffffffffffffffffffffffffffffff168310155b1561193b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906147a3565b73ffffffffffffffffffffffffffffffffffffffff8816158061199257508351801561199257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16105b806119d2575083511580156119d257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16115b156119db578097505b50505050611aa3565b6002815460ff1660028111156119fc576119fc61397d565b03611a7157611a3f6040518060400160405280601281526020017f6261727269657220636f6e73747261696e740000000000000000000000000000815250610947565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906147e7565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499061482b565b5080611aae81614227565b9150506113ce565b50611af56040518060400160405280601081526020017f636f6d707574696e6720616d6f756e7400000000000000000000000000000000815250610947565b6003850154611b03906109d6565b8354611b129061ffff166109d6565b6004850154611b239060ff16612223565b611b3085600701546109d6565b611b3d85600801546109d6565b611b68856009018860ff1681548110611b5857611b58613ec2565b90600052602060002001546109d6565b611b8385600a018860ff1681548110611b5857611b58613ec2565b600485015460009060ff16611bba5785600a018860ff1681548110611baa57611baa613ec2565b9060005260206000200154611bde565b856009018860ff1681548110611bd257611bd2613ec2565b90600052602060002001545b8554600388015461ffff91611bf6919083169061483d565b611c009190614857565b611c0a919061463f565b9050611c4a6040518060400160405280600681526020017f616d6f756e740000000000000000000000000000000000000000000000000000815250610947565b611c53816109d6565b611c916040518060400160405280600581526020017f6c696d6974000000000000000000000000000000000000000000000000000000815250610947565b611cb08373ffffffffffffffffffffffffffffffffffffffff166109d6565b611cee6040518060400160405280600581526020017f7072696365000000000000000000000000000000000000000000000000000000815250610947565b611d0d8473ffffffffffffffffffffffffffffffffffffffff166109d6565b6003860154600487015460ff16611d28578660080154611d2e565b86600701545b1115611d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906148a3565b600486015460009060ff16611d7f578660080154611d85565b86600701545b6003880154611d94919061463f565b9050611dd46040518060400160405280600981526020017f72656d61696e696e670000000000000000000000000000000000000000000000815250610947565b611ddd816109d6565b80821115611de9578091505b60008211611e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906148e7565b611e2c826109d6565b6004870154600090610100900460ff16611e465730611e48565b8b5b9050611e5381612105565b600080600160028b015460ff166001811115611e7157611e7161397d565b03611e8d57611e83838b88888b6122b2565b9092509050611ebf565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613feb565b818a6007016000828254611ed391906148f9565b92505081905550808a6008016000828254611eee91906148f9565b92505081905550818a6009018d60ff1681548110611f0e57611f0e613ec2565b906000526020600020016000828254611f2791906148f9565b92505081905550808a600a018d60ff1681548110611f4757611f47613ec2565b906000526020600020016000828254611f6091906148f9565b90915550506040517f8b9a867d3ae2675d02744a1ce6d50e404d9af21941871223000c679e01911af890611f9b908f908f908690869061490e565b60405180910390a1611fad8f8b612417565b505050505050505050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461200057600080fd5b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063a9059cbb906120549085908590600401613227565b6020604051808303816000875af1158015612073573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120979190614943565b50505050565b604080516001808252818301909252600091816020015b6120bc613189565b8152602001906001900390816120b457905050905081816000815181106120e5576120e5613ec2565b602002602001018190525061044e83826000610b62565b61033181612559565b610331816040516024016121199190613ddd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc2000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016121a89190613f62565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2d5b6cb9000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016122379190613eb4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f32458eed000000000000000000000000000000000000000000000000000000001790526120fc565b6000806122f36040518060400160405280600b81526020017f7072696365206c696d6974000000000000000000000000000000000000000000815250610947565b6123128373ffffffffffffffffffffffffffffffffffffffff166109d6565b600486015460ff1615612398576040805160e08101825273ffffffffffffffffffffffffffffffffffffffff8781168252885481166020830152600189015481169282019290925288821660608201526002880154610100900462ffffff16608082015260a0810186905290841660c082015261238e9061257a565b909250905061240d565b6040805160e08101825273ffffffffffffffffffffffffffffffffffffffff8781168252885481166020830152600189015481169282019290925288821660608201526002880154610100900462ffffff16608082015260a0810186905290841660c082015261240790612928565b90925090505b9550959350505050565b600481015460009060ff16612430578160080154612436565b81600701545b6003830154612445919061463f565b9050806000036124bb576006820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166002179081905567ffffffffffffffff6501000000000090910481161461044e57600682015461044e90849065010000000000900467ffffffffffffffff16612f2b565b600682015465010000000000900467ffffffffffffffff90811614801590612531575060016006830154600285018054909165010000000000900467ffffffffffffffff1690811061250f5761250f613ec2565b60009182526020909120015460ff16600281111561252f5761252f61397d565b145b1561044e57600682015461044e90849065010000000000900467ffffffffffffffff16612f2b565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6000806125bb6040518060400160405280601981526020017f737761704578616374496e70757420617070726f76652e2e2e00000000000000815250610947565b6125c430612105565b6125d18360200151612105565b6125de8360400151612105565b6125f0836080015162ffffff166109d6565b6125fd8360600151612105565b61260a8360a001516109d6565b61262d8360c0015173ffffffffffffffffffffffffffffffffffffffff166109d6565b61264a73e592427a0aece92de3edee1f18e0157c05861564612105565b8260a0015191506000836020015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016126909190613ddd565b602060405180830381865afa1580156126ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126d1919061496e565b90508060000361270d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906149bf565b82811015612719578092505b61273c846020015173e592427a0aece92de3edee1f18e0157c0586156485612fce565b61277a6040518060400160405280600b81526020017f7377617070696e672e2e2e000000000000000000000000000000000000000000815250610947565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663414bf389604051806101000160405280876020015173ffffffffffffffffffffffffffffffffffffffff168152602001876040015173ffffffffffffffffffffffffffffffffffffffff168152602001876080015162ffffff168152602001876060015173ffffffffffffffffffffffffffffffffffffffff168152602001428152602001868152602001600181526020018760c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b81526004016128729190614a7c565b6020604051808303816000875af1158015612891573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128b5919061496e565b91506128f56040518060400160405280600781526020017f7377617070656400000000000000000000000000000000000000000000000000815250610947565b6128fe826109d6565b612922846020015173e592427a0aece92de3edee1f18e0157c058615646000612fce565b50915091565b6000806000836020015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161296a9190613ddd565b602060405180830381865afa158015612987573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ab919061496e565b9050806000036129e7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906149bf565b60408051808201909152601a81527f7377617045786163744f757470757420617070726f76652e2e2e00000000000060208201528190612a2690610947565b612a2f30612105565b612a3c8560200151612105565b612a498560400151612105565b612a5b856080015162ffffff166109d6565b612a688560600151612105565b612a758560a001516109d6565b612a988560c0015173ffffffffffffffffffffffffffffffffffffffff166109d6565b612ab573e592427a0aece92de3edee1f18e0157c05861564612105565b612af36040518060400160405280600781526020017f617070726f766500000000000000000000000000000000000000000000000000815250610947565b612afc816109d6565b612b1f856020015173e592427a0aece92de3edee1f18e0157c0586156483612fce565b612b5d6040518060400160405280600b81526020017f7377617070696e672e2e2e000000000000000000000000000000000000000000815250610947565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663db3e2198604051806101000160405280886020015173ffffffffffffffffffffffffffffffffffffffff168152602001886040015173ffffffffffffffffffffffffffffffffffffffff168152602001886080015162ffffff168152602001886060015173ffffffffffffffffffffffffffffffffffffffff1681526020014281526020018860a0015181526020018481526020018860c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b8152600401612c589190614a7c565b6020604051808303816000875af1925050508015612cb1575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612cae9181019061496e565b60015b612ea557612cbd614a8b565b806308c379a003612e8c5750612cd1614aa6565b80612cdc5750612e8e565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663414bf389604051806101000160405280896020015173ffffffffffffffffffffffffffffffffffffffff168152602001896040015173ffffffffffffffffffffffffffffffffffffffff168152602001896080015162ffffff168152602001896060015173ffffffffffffffffffffffffffffffffffffffff168152602001428152602001858152602001600181526020018960c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b8152600401612dd49190614a7c565b6020604051808303816000875af1925050508015612e2d575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612e2a9181019061496e565b60015b612e9857612e39614a8b565b806308c379a003612e8c5750612e4d614aa6565b80612e585750612e8e565b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499190613f4f565b505b3d6000803e3d6000fd5b8295508094505050612eb0565b60a086015190945092505b612eee6040518060400160405280600781526020017f7377617070656400000000000000000000000000000000000000000000000000815250610947565b612ef7846109d6565b612f00836109d6565b612f24856020015173e592427a0aece92de3edee1f18e0157c058615646000612fce565b5050915091565b6000826002018267ffffffffffffffff1681548110612f4c57612f4c613ec2565b600091825260208220018054909250612f84906901000000000000000000810460ff1690610100900467ffffffffffffffff16614b5f565b8254909150610100900467ffffffffffffffff165b8167ffffffffffffffff168167ffffffffffffffff161015612fc757612fbf8582610a65565b600101612f99565b5050505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1663095ea7b360e01b8585604051602401613003929190613227565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905161308c9190614ba2565b6000604051808303816000865af19150503d80600081146130c9576040519150601f19603f3d011682016040523d82523d6000602084013e6130ce565b606091505b50915091508180156130f85750805115806130f85750808060200190518101906130f89190614943565b612fc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614be0565b604051806101000160405280613142613189565b815260200160008152602001600063ffffffff168152602001600067ffffffffffffffff168152602001600081526020016000815260200160608152602001606081525090565b6040805161010081018252600080825260208201529081016131bb604080518082019091526000808252602082015290565b815260200160008152602001600015158152602001600015158152602001600067ffffffffffffffff168152602001606081525090565b600073ffffffffffffffffffffffffffffffffffffffff82165b92915050565b61321b816131f2565b82525050565b8061321b565b604081016132358285613212565b6132426020830184613221565b9392505050565b613252816131f2565b811461033157600080fd5b80358061326981613249565b5092915050565b80613252565b80358061326981613270565b6000806040838503121561329857613298600080fd5b6132a2848461325d565b91506132b18460208501613276565b90509250929050565b6000602082840312156132cf576132cf600080fd5b6132428383613276565b67ffffffffffffffff8116613252565b803580613269816132d9565b60006020828403121561330a5761330a600080fd5b61324283836132e9565b60ff811661321b565b6020810161320c8284613314565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff8211171561339e5761339e61332b565b6040525050565b60006133b060405190565b8091506133bd838261335a565b50919050565b600067ffffffffffffffff8211156133dd576133dd61332b565b5060051b60200190565b6002811061033157600080fd5b803580613269816133e7565b62ffffff8116613252565b80358061326981613400565b60006040828403121561342c5761342c600080fd5b61343660406133a5565b80915061344384846133f4565b8152613452846020850161340b565b60208201525092915050565b801515613252565b8035806132698161345e565b61ffff8116613252565b80358061326981613472565b6003811061033157600080fd5b80358061326981613488565b600067ffffffffffffffff8211156134bb576134bb61332b565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b82818337506000910152565b6000613506613501846134a1565b6133a5565b80915083815284848401111561351e5761351e600080fd5b61352c8460208301856134e7565b509392505050565b600082601f83011261354857613548600080fd5b613242838335602085016134f3565b60006040828403121561356c5761356c600080fd5b61357660406133a5565b8091506135838484613495565b8152602083013567ffffffffffffffff8111156135a2576135a2600080fd5b6135ae85828601613534565b6020830152505092915050565b60006135c9613501846133c3565b8381529050600583901b820160208201858211156135e9576135e9600080fd5b835b8281101561362857803567ffffffffffffffff81111561360d5761360d600080fd5b61361988828801613557565b835250602091820191016135eb565b5050509392505050565b600082601f83011261364657613646600080fd5b613242838335602085016135bb565b60006040828403121561366a5761366a600080fd5b61367460406133a5565b809150613681848461347c565b8152602083013567ffffffffffffffff8111156136a0576136a0600080fd5b6135ae85828601613632565b60006136ba613501846133c3565b8381529050600583901b820160208201858211156136da576136da600080fd5b835b8281101561362857803567ffffffffffffffff8111156136fe576136fe600080fd5b61370a88828801613655565b835250602091820191016136dc565b600082601f83011261372d5761372d600080fd5b613242838335602085016136ac565b6000610120828403121561375257613752600080fd5b61375d6101006133a5565b80915061376a848461325d565b8152613779846020850161325d565b602082015261378b8460408501613417565b604082015261379d8460808501613276565b60608201526137af8460a08501613466565b60808201526137c18460c08501613466565b60a08201526137d38460e085016132e9565b60c082015261010083013567ffffffffffffffff8111156137f6576137f6600080fd5b61380285828601613719565b60e0830152505092915050565b600061381d613501846133c3565b8381529050600583901b8201602082018582111561383d5761383d600080fd5b835b8281101561362857803567ffffffffffffffff81111561386157613861600080fd5b61386d8882880161373c565b8352506020918201910161383f565b600082601f83011261389057613890600080fd5b6132428383356020850161380f565b600080604083850312156138b5576138b5600080fd5b823567ffffffffffffffff8111156138cf576138cf600080fd5b6138db8582860161387c565b9250506132b18460208501613495565b60ff8116613252565b803580613269816138eb565b60006020828403121561391557613915600080fd5b61391f60206133a5565b80915061392c8484613276565b905292915050565b60008060006060848603121561394c5761394c600080fd5b61395685856132e9565b925061396585602086016138f4565b91506139748560408601613900565b90509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600281106103315761033161397d565b806139c6816139ac565b919050565b600061320c826139bc565b61321b816139cb565b62ffffff811661321b565b6139f58282516139d6565b602081015161044e60208401826139df565b80151561321b565b67ffffffffffffffff811661321b565b61ffff811661321b565b600381106103315761033161397d565b806139c681613a29565b600061320c82613a39565b61321b81613a43565b60005b83811015613a72578181015183820152602001613a5a565b50506000910152565b6000613a85825190565b80845260208401613a9a828260208701613a57565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b613ad4828251613a4e565b6000602082015160406020850152613aef6040850182613a7b565b949350505050565b60006132428383613ac9565b6000613b0d825190565b808452602084018094508160051b8101613b278560200190565b60005b84811015613b59578383038852613b42838351613af7565b925060208201602098909801979150600101613b2a565b50909695505050505050565b613b70828251613a1f565b6000602082015160406020850152613aef6040850182613b03565b60006132428383613b65565b6000613ba1825190565b808452602084018094508160051b8101613bbb8560200190565b60005b84811015613b59578383038852613bd6838351613b8b565b925060208201602098909801979150600101613bbe565b613bf8828251613212565b60006020820151613c0c6020850182613212565b506040820151613c1f60408501826139ea565b506060820151613c326080850182613221565b506080820151613c4560a0850182613a07565b5060a0820151613c5860c0850182613a07565b5060c0820151613c6b60e0850182613a0f565b5060e0820151610120610100850152613aef610120850182613b97565b600481106103315761033161397d565b806139c681613c88565b600061320c82613c98565b61321b81613ca2565b63ffffffff811661321b565b613ccc8282613221565b5060200190565b6000613cdd825190565b808452602093840193830160005b82811015613d0e57613cfe868351613cc2565b9550602082019150600101613ceb565b5093949350505050565b600081516101008452613d2f610100850182613bed565b90506020830151613d436020860182613cad565b506040830151613d566040860182613cb6565b506060830151613d696060860182613a0f565b506080830151613d7c6080860182613221565b5060a0830151613d8f60a0860182613221565b5060c083015184820360c0860152613da78282613cd3565b91505060e083015184820360e0860152613dc18282613cd3565b95945050505050565b6020815260006132426020830184613d18565b6020810161320c8284613212565b600061320c826131f2565b61325281613deb565b80358061326981613df6565b600080600060608486031215613e2357613e23600080fd5b613e2d8585613dff565b9250613e3c856020860161325d565b91506139748560408601613276565b6020810161320c8284613a0f565b600060208284031215613e6e57613e6e600080fd5b813567ffffffffffffffff811115613e8857613e88600080fd5b613aef8482850161373c565b60008060408385031215613eaa57613eaa600080fd5b6132a28484613dff565b6020810161320c8284613a07565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c908190831680613f3657607f821692505b602083108103613f4857613f48613ef1565b5050919050565b6020815260006132426020830184613a7b565b6020810161320c8284613221565b600481526000602082017f4f434f4d0000000000000000000000000000000000000000000000000000000081525b60200192915050565b60208152600061320c60208301613f70565b600281526000602082017f55520000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301613fb9565b60008260031b61402c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821b90565b94901b84169319919091169290921792915050565b600061320c61404d8381565b90565b61406761405f61404d85614041565b838354613ffd565b90555050565b61032360008383614050565b818110156103235761408c60008261406d565b600101614079565b601f82111561044e57600081815260209020601f840160051c810160208510156140bb5750805b612fc7601f850160051c830182614079565b60006140fb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8460031b1c90565b198216905092915050565b600061411283836140cd565b8360011b811791505092915050565b815167ffffffffffffffff81111561413b5761413b61332b565b61414f816141498454613f20565b84614094565b6020601f82116001811461417d576000831561416b5750848201515b6141758482614106565b855550612fc7565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156141cb57878501518255602094850194600190920191016141ab565b50848210156141e957838701516141e5601f8716826140cd565b8255505b50505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060ff821660ff810361423d5761423d6141f8565b60010192915050565b604081016142548285613a0f565b6132426020830184613314565b600281526000602082017f4e4f0000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614261565b606081016142b38286613212565b6142c06020830185613212565b613aef60408301846139df565b80518061326981613249565b6000602082840312156142ee576142ee600080fd5b61324283836142cd565b805180613269816133e7565b63ffffffff8116613252565b80518061326981614304565b60006040828403121561433157614331600080fd5b61433b60406133a5565b80915061434884846142f8565b81526134528460208501614310565b60006080828403121561436c5761436c600080fd5b61437660406133a5565b809150614383848461431c565b8152613452846040850161431c565b6000608082840312156143a7576143a7600080fd5b6132428383614357565b63ffffffff82811682821601908190811115613269576132696141f8565b600281526000602082017f54450000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016143cf565b600281526000602082017f544c0000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614413565b73ffffffffffffffffffffffffffffffffffffffff8116613252565b80518061326981614457565b6132528160020b90565b8051806132698161447f565b80518061326981613472565b805180613269816138eb565b8051806132698161345e565b600080600080600080600060e0888a0312156144d7576144d7600080fd5b6144e18989614473565b96506144f08960208a01614489565b95506144ff8960408a01614495565b945061450e8960608a01614495565b935061451d8960808a01614495565b925061452c8960a08a016144a1565b915061453b8960c08a016144ad565b905092959891949750929550565b6132528160130b90565b80518061326981614549565b600060a0828403121561457457614574600080fd5b61457e60a06133a5565b80915061458b84846144ad565b815261459a84602085016144ad565b60208201526145ac8460408501614310565b60408201526145be8460608501614473565b60608201526145d08460808501614553565b60808201525092915050565b600060a082840312156145f1576145f1600080fd5b613242838361455f565b601581526000602082017f726174696f206e6f7420696d706c656d656e74656400000000000000000000008152613f9e565b60208152600061320c602083016145fb565b818103818181811115614654576146546141f8565b505092915050565b818102818382600083127f800000000000000000000000000000000000000000000000000000000000000083141615614697576146976141f8565b82810582148315176146ab576146ab6141f8565b50505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008183806146f4576146f46146b4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81147f800000000000000000000000000000000000000000000000000000000000000083141615614748576147486141f8565b90059392505050565b8181016000821283821280158216821582161715614654576146546141f8565b600181526000602082017f4c000000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614771565b600281526000602082017f4e490000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016147b5565b600281526000602082017f55430000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016147f9565b81810281838282158382048314176146ab576146ab6141f8565b6000818380614868576148686146b4565b90049392505050565b600881526000602082017f4f56455246494c4c0000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614871565b600281526000602082017f54460000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016148b5565b818101818180821115614654576146546141f8565b6080810161491c8287613a0f565b6149296020830186613314565b6149366040830185613221565b613dc16060830184613221565b60006020828403121561495857614958600080fd5b61324283836144ad565b80518061326981613270565b60006020828403121561498357614983600080fd5b6132428383614962565b600381526000602082017f49494100000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c6020830161498d565b73ffffffffffffffffffffffffffffffffffffffff811661321b565b6149f8828251613212565b6020810151614a0a6020840182613212565b506040810151614a1d60408401826139df565b506060810151614a306060840182613212565b506080810151614a436080840182613221565b5060a0810151614a5660a0840182613221565b5060c0810151614a6960c0840182613221565b5060e081015161044e60e08401826149d1565b610100810161320c82846149ed565b600060033d111561404d5760046000803e5060005160e01c90565b600060443d1015614ab45790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d016004823e80513d602482011167ffffffffffffffff82111715614afc57505090565b808201805167ffffffffffffffff811115614b18575050505090565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d8501016020828401011115614b50575050505090565b61352c6020828501018561335a565b67ffffffffffffffff82811682821601908190811115613269576132696141f8565b6000614b8b825190565b83614b9a828260208701613a57565b019392505050565b60006132428284614b81565b600281526000602082017f53410000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614bae56fea26469706673582212204cf82481a51b5aeba98e93aaf50551304c3d1440ea1986dcfc34c4cc96a5b1ea64736f6c63430008160033a26469706673582212204b43bfa3c2fcb653fc7d844b7d1dc73cc4b694448b854030d7e34257e2205efa64736f6c6343000816003360806040523480156200001157600080fd5b50604051620011fd380380620011fd8339810160408190526200003491620001c9565b828260036200004483826200035d565b5060046200005382826200035d565b50506005805460ff191660ff9390931692909217909155506200042a915050565b634e487b7160e01b600052604160045260246000fd5b601f19601f83011681016001600160401b0381118282101715620000b257620000b262000074565b6040525050565b6000620000c560405190565b809150620000d483826200008a565b50919050565b60006001600160401b03821115620000f657620000f662000074565b50601f01601f191660200190565b60005b838110156200012157818101518382015260200162000107565b50506000910152565b6000620001416200013b84620000da565b620000b9565b8091508381528484840111156200015b576200015b600080fd5b6200016b84602083018562000104565b509392505050565b600082601f830112620001895762000189600080fd5b6200019a838351602085016200012a565b9392505050565b60ff81168114620001b157600080fd5b50565b805180620001c281620001a1565b5092915050565b600080600060608486031215620001e357620001e3600080fd5b83516001600160401b03811115620001fe57620001fe600080fd5b6200020c8682870162000173565b602086015190945090506001600160401b038111156200022f576200022f600080fd5b6200023d8682870162000173565b9250506200024f8560408601620001b4565b90509250925092565b634e487b7160e01b600052602260045260246000fd5b600181811c9081908316806200028557607f821692505b6020831081036200029a576200029a62000258565b5050919050565b6000620002b2620002af8381565b90565b92915050565b620002e1620002cb620002af85620002a1565b8254600385901b91821b60001990921b19161790565b90555050565b620002f560008383620002b8565b5050565b81811015620002f5576200030f600082620002e7565b600101620002f9565b601f8211156200035857600081815260209020601f840160051c81016020851015620003415750805b62000355601f850160051c830182620002f9565b50505b505050565b81516001600160401b0381111562000379576200037962000074565b62000391816200038a84546200026e565b8462000318565b6020601f821160018114620003ca5760008315620003af5750848201515b600019600385901b1c198116600185901b1785555062000355565b600084815260208120601f198516915b82811015620003fc5787850151825560209485019460019092019101620003da565b50848210156200041b5783870151600019600387901b60f8161c191681555b50505050600190811b01905550565b610dc3806200043a6000396000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c806340c10f1911610081578063a457c2d71161005b578063a457c2d7146101b4578063a9059cbb146101c7578063dd62ed3e146101da57600080fd5b806340c10f191461016157806370a082311461017657806395d89b41146101ac57600080fd5b806323b872dd116100b257806323b872dd14610128578063313ce5671461013b578063395093511461014e57600080fd5b806306fdde03146100d9578063095ea7b3146100f757806318160ddd14610117575b600080fd5b6100e1610220565b6040516100ee919061084f565b60405180910390f35b61010a6101053660046108c3565b6102b2565b6040516100ee9190610905565b6002545b6040516100ee9190610919565b61010a610136366004610927565b6102cc565b60055460ff166040516100ee9190610979565b61010a61015c3660046108c3565b6102f0565b61017461016f3660046108c3565b61033c565b005b61011b610184366004610987565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100e161034a565b61010a6101c23660046108c3565b610359565b61010a6101d53660046108c3565b6103dd565b61011b6101e83660046109a6565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461022f90610a04565b80601f016020809104026020016040519081016040528092919081815260200182805461025b90610a04565b80156102a85780601f1061027d576101008083540402835291602001916102a8565b820191906000526020600020905b81548152906001019060200180831161028b57829003601f168201915b5050505050905090565b6000336102c08185856103eb565b60019150505b92915050565b6000336102da8582856104fa565b6102e58585856105a1565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906102c09082908690610337908790610a62565b6103eb565b6103468282610713565b5050565b60606004805461022f90610a04565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156103d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610adc565b60405180910390fd5b6102e582868684036103eb565b6000336102c08185856105a1565b73ffffffffffffffffffffffffffffffffffffffff8316610438576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610b46565b73ffffffffffffffffffffffffffffffffffffffff8216610485576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610bb0565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906104ed908590610919565b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461059b578181101561058e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610bf9565b61059b84848484036103eb565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166105ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610c63565b73ffffffffffffffffffffffffffffffffffffffff821661063b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610ccd565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020548181101561069b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610d37565b73ffffffffffffffffffffffffffffffffffffffff80851660008181526020819052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610706908690610919565b60405180910390a361059b565b73ffffffffffffffffffffffffffffffffffffffff8216610760576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610d7b565b80600260008282546107729190610a62565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600081815260208190526040808220805485019055517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906107d1908590610919565b60405180910390a35050565b60005b838110156107f85781810151838201526020016107e0565b50506000910152565b600061080b825190565b808452602084016108208282602087016107dd565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b6020815260006108626020830184610801565b9392505050565b600073ffffffffffffffffffffffffffffffffffffffff82166102c6565b61089081610869565b811461089b57600080fd5b50565b8035806108aa81610887565b5092915050565b80610890565b8035806108aa816108b1565b600080604083850312156108d9576108d9600080fd5b6108e3848461089e565b91506108f284602085016108b7565b90509250929050565b8015155b82525050565b602081016102c682846108fb565b806108ff565b602081016102c68284610913565b60008060006060848603121561093f5761093f600080fd5b610949858561089e565b9250610958856020860161089e565b915061096785604086016108b7565b90509250925092565b60ff81166108ff565b602081016102c68284610970565b60006020828403121561099c5761099c600080fd5b610862838361089e565b600080604083850312156109bc576109bc600080fd5b6109c6848461089e565b91506108f2846020850161089e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c908190831680610a1a57607f821692505b602083108103610a2c57610a2c6109d5565b5050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818101818180821115610a7757610a77610a33565b505092915050565b602581526000602082017f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7781527f207a65726f00000000000000000000000000000000000000000000000000000060208201525b60400192915050565b6020815260006102c660208301610a7f565b602481526000602082017f45524332303a20617070726f76652066726f6d20746865207a65726f2061646481527f72657373000000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610aee565b602281526000602082017f45524332303a20617070726f766520746f20746865207a65726f20616464726581527f73730000000000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610b58565b601d81526000602082017f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000081525b60200192915050565b6020815260006102c660208301610bc2565b602581526000602082017f45524332303a207472616e736665722066726f6d20746865207a65726f20616481527f64726573730000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610c0b565b602381526000602082017f45524332303a207472616e7366657220746f20746865207a65726f206164647281527f65737300000000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610c75565b602681526000602082017f45524332303a207472616e7366657220616d6f756e742065786365656473206281527f616c616e636500000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610cdf565b601f81526000602082017f45524332303a206d696e7420746f20746865207a65726f2061646472657373008152610bf0565b6020815260006102c660208301610d4956fea2646970667358221220cd44a198e923f8e5e46b9869f813e11aa59f8930b4361f0f306ac53e161271d264736f6c634300081600336966207468697320697320746865206c617374206c696e65206265666f7265206120726576657274207468656e206d616b65207375726520746f2072756e20666f7267652077697468202d2d7270632d75726c7375636365737366756c6c79206661696c656420746f20657865637574652062656c6f77206c696d69742070726963657375636365737366756c6c79206578656375746564206174206c696d6974207072696365000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000464fb0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000008c9fb0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000008c9f6000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000d2ef60000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000046500a2646970667358221220ec235c3410207ac4a1e58d5ffcb4e1cdc084b9d866ed44ff47754a4db02013ef64736f6c63430008160033", "sourceMap": "257:6879:66:-:0;;;612:87:63;;;-1:-1:-1;;;;;;612:87:63;;;644:42:50;612:87:63;;;;;705:58;;;;;765:42:50;705:58:63;;;1572:26:0;;;-1:-1:-1;;;;1572:26:0;-1:-1:-1;;;1572:26:0;;;3126:44:4;;;-1:-1:-1;;3126:44:4;;;;;;257:6879:66;;;;;;;;;;;;;;;;", "linkReferences": { "src/Util.sol": { "Util": [ { "start": 14272, "length": 20 }, { "start": 14427, "length": 20 } ] } } }, "deployedBytecode": { "object": "0x60806040523480156200001157600080fd5b5060043610620002535760003560e01c8063916a17c61162000142578063d21220a711620000cc578063e1c7392a1162000097578063e3baf41a116200007a578063e3baf41a1462000565578063fa7626d4146200057c578063fbfa77cf14620005a357600080fd5b8063e1c7392a1462000551578063e20c9f71146200055b57600080fd5b8063d21220a714620004b9578063d6f1300214620004da578063ddca3f431462000503578063df791e50146200053a57600080fd5b8063b5508aa9116200010d578063b5508aa9146200046d578063ba414fa61462000477578063c45a01551462000481578063c578d91d14620004a257600080fd5b8063916a17c6146200041f5780639febdbf71462000429578063a035b1fe1462000433578063a54a72b7146200044c57600080fd5b80634a09d3dd11620001e15780636fe2ae0e11620001ac5780637303e913116200018f5780637303e91314620003db57806385226c8114620003fc5780638e3b558a146200041557600080fd5b80636fe2ae0e14620003c75780637083accc14620003d157600080fd5b80634a09d3dd146200033c57806353486e2f146200036257806366d9a9a0146200037957806367e368fc146200039257600080fd5b80631ed7831c11620002225780631ed7831c14620002ee5780632b3297f914620003075780633e5e3c2314620003285780633f7286f4146200033257600080fd5b80630a9254e414620002585780630dfe1681146200026457806316f0115b146200029d5780631bf6c21b14620002cd575b600080fd5b62000262620005c4565b005b600554620002859073ffffffffffffffffffffffffffffffffffffffff1681565b60405162000294919062003ae9565b60405180910390f35b600254620002be9073ffffffffffffffffffffffffffffffffffffffff1681565b60405162000294919062003b3d565b600454620002be9073ffffffffffffffffffffffffffffffffffffffff1681565b620002f862000982565b60405162000294919062003baa565b600154620002be9073ffffffffffffffffffffffffffffffffffffffff1681565b620002f8620009f3565b620002f862000a62565b620003536200034d36600462003c38565b62000ad1565b60405162000294919062003ca4565b620002626200037336600462003ccd565b62000c7c565b6200038362000cdc565b60405162000294919062003e33565b600654620003b89074010000000000000000000000000000000000000000900460ff1681565b60405162000294919062003e51565b6200026262000df1565b6200026262001229565b600054620002be9073ffffffffffffffffffffffffffffffffffffffff1681565b6200040662001a36565b60405162000294919062003f42565b6200026262001b10565b620003836200204c565b6200026262002158565b6200043d6200248c565b60405162000294919062003f74565b600354620002be9073ffffffffffffffffffffffffffffffffffffffff1681565b620004066200252f565b620003b862002609565b602154620002be9073ffffffffffffffffffffffffffffffffffffffff1681565b62000262620004b336600462003f84565b620027c3565b600654620002859073ffffffffffffffffffffffffffffffffffffffff1681565b620004f1620004eb36600462003fa7565b62002a15565b6040516200029494939291906200401a565b6002546200052b9074010000000000000000000000000000000000000000900462ffffff1681565b6040516200029491906200406c565b620003536200054b3660046200407c565b62002a3b565b6200026262002b59565b620002f862003109565b6200026262000576366004620040c4565b62003178565b600654620003b8907501000000000000000000000000000000000000000000900460ff1681565b602254620002be9073ffffffffffffffffffffffffffffffffffffffff1681565b620005ce62002b59565b604051620005dc9062003a9c565b604051809103906000f080158015620005f9573d6000803e3d6000fd5b50602180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691821790556040517f5eb512e7000000000000000000000000000000000000000000000000000000008152635eb512e7906200067a90309060040162003ae9565b6020604051808303816000875af11580156200069a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006c091906200411b565b602280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316179055600354604080517f313ce5670000000000000000000000000000000000000000000000000000000081529051600093929092169163313ce567916004808201926020929091908290030181865afa15801562000761573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000787919062004156565b6200079490600a620042d8565b620007a390620186a06200430b565b6003546022546040517f40c10f1900000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff918216926340c10f199262000803921690859060040162004336565b600060405180830381600087803b1580156200081e57600080fd5b505af115801562000833573d6000803e3d6000fd5b505050506000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015620008a7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008cd919062004156565b620008da90600a620042d8565b620008e990620186a06200430b565b600480546022546040517f40c10f1900000000000000000000000000000000000000000000000000000000815293945073ffffffffffffffffffffffffffffffffffffffff918216936340c10f19936200094a939092169186910162004336565b600060405180830381600087803b1580156200096557600080fd5b505af11580156200097a573d6000803e3d6000fd5b505050505050565b60606013805480602002602001604051908101604052809291908181526020018280548015620009e957602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311620009bd575b5050505050905090565b60606015805480602002602001604051908101604052809291908181526020018280548015620009e95760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311620009bd575050505050905090565b60606014805480602002602001604051908101604052809291908181526020018280548015620009e95760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311620009bd575050505050905090565b6001546040517f095ea7b300000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff8088169263095ea7b39262000b2e921690879060040162004336565b6020604051808303816000875af115801562000b4e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b7491906200436c565b50604080516101008101825273ffffffffffffffffffffffffffffffffffffffff8781168252868116602083015260025474010000000000000000000000000000000000000000900462ffffff168284015233606083015242608083015260a08201869052600060c083015284811660e083015260015492517f414bf3890000000000000000000000000000000000000000000000000000000081529192169063414bf3899062000c2a9084906004016200442e565b6020604051808303816000875af115801562000c4a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c7091906200444d565b9150505b949350505050565b6000600262000c9485670de0b6b3a76400006200430b565b62000ca091906200449f565b90506000600262000cb586620f42406200430b565b62000cc191906200449f565b905062000cd18282868662002a15565b505050505050505050565b60606018805480602002602001604051908101604052809291908181526020016000905b8282101562000de857600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff16835260018101805483518187028101870190945280845293949193858301939283018282801562000dcf57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152602001906004019060208260030104928301926001038202915080841162000d7b5790505b5050505050815250508152602001906001019062000d00565b50505050905090565b60408051600380825260808201909252600091816020015b60408051808201909152600081526060602082015281526020019060019003908162000e0957505060408051600180825281830190925291925060009190602082015b60408051808201909152600081526060602082015281526020019060019003908162000e4c579050506040805180820190915290915080600081526020016040518060a00160405280608081526020016200b4c9608091398152508160008151811062000ebd5762000ebd620044ec565b6020908102919091010152604080516001808252818301909252600091816020015b60408051808201909152600081526060602082015281526020019060019003908162000edf579050506040805180820190915290915080600081526020016040518060a00160405280608081526020016200b3c9608091398152508160008151811062000f505762000f50620044ec565b6020908102919091010152604080516001808252818301909252600091816020015b60408051808201909152600081526060602082015281526020019060019003908162000f72579050506040805180820190915290915080600081526020016040518060a00160405280608081526020016200b449608091398152508160008151811062000fe35762000fe3620044ec565b6020026020010181905250604051806040016040528061555561ffff16815260200184815250846000815181106200101f576200101f620044ec565b6020026020010181905250604051806040016040528061555561ffff16815260200183815250846001815181106200105b576200105b620044ec565b6020026020010181905250604051806040016040528061555561ffff1681526020018281525084600281518110620010975762001097620044ec565b6020026020010181905250600060405180610100016040528073fd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb973ffffffffffffffffffffffffffffffffffffffff1681526020017382af49447d8a07e3bd95bd0d56f35241523fbab173ffffffffffffffffffffffffffffffffffffffff1681526020016040518060400160405280600180811115620011305762001130620044bd565b81526101f460209182015290825268056bc75e2d631000008282015260016040808401919091526000606084015267ffffffffffffffff608084015260a09092018890529051919250620011a1916200118c9184910162004799565b6040516020818303038152906040526200324c565b6022546040517ff1c6d05100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063f1c6d05190620011f990849060040162004799565b600060405180830381600087803b1580156200121457600080fd5b505af115801562000cd1573d6000803e3d6000fd5b604080516001808252818301909252600091816020015b6040805180820190915260008152606060208201528152602001906001900390816200124057505060408051600180825281830190925291925060009190602082015b604080518082019091526000815260606020820152815260200190600190039081620012835790505090506000612710620012bd6200248c565b620012cb90612711620047ae565b620012d79190620047fd565b6040805160a081018252600181526000602080830182905282840182905273ffffffffffffffffffffffffffffffffffffffff85166060840152608083018290529251939450926200132a9201620048ab565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282019091529150806001815260200182815250836000815181106200137f576200137f620044ec565b6020026020010181905250604051806040016040528061ffff801681526020018481525084600081518110620013b957620013b9620044ec565b60200260200101819052506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600a8273ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200143b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001461919062004156565b6200146e90600a620042d8565b6200147b9060036200430b565b6200148791906200449f565b6022546040517f40c10f1900000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff808516926340c10f1992620014e4921690859060040162004336565b600060405180830381600087803b158015620014ff57600080fd5b505af115801562001514573d6000803e3d6000fd5b5050604080516101008101825260055473ffffffffffffffffffffffffffffffffffffffff9081168252600654811660208084019190915283518085018552600180825260025474010000000000000000000000000000000000000000900462ffffff168284015284860191909152606084018890526080840152600060a0840181905267ffffffffffffffff60c085015260e084018d905260225485517fe78f84e700000000000000000000000000000000000000000000000000000000815295519497509095509091169263e78f84e792600480830193928290030181865afa15801562001608573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200162e9190620048da565b6022546040517ff1c6d05100000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff169063f1c6d051906200168790859060040162004799565b600060405180830381600087803b158015620016a257600080fd5b505af1158015620016b7573d6000803e3d6000fd5b50505050620016fb6040518060400160405280600c81526020017f706c61636564206f726465720000000000000000000000000000000000000000815250620032df565b620017108167ffffffffffffffff1662003372565b604080518082018252600181527f4c00000000000000000000000000000000000000000000000000000000000000602082015290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f28dceb391620017939190600401620048fd565b600060405180830381600087803b158015620017ae57600080fd5b505af1158015620017c3573d6000803e3d6000fd5b505060225460408051602081018252600080825291517f6e98833d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9093169450636e98833d93506200182f92869291906004016200493a565b600060405180830381600087803b1580156200184a57600080fd5b505af11580156200185f573d6000803e3d6000fd5b50505050620018876040518060600160405280603081526020016200b37560309139620032df565b6200189286620027c3565b604080518082018252600181527f4c00000000000000000000000000000000000000000000000000000000000000602082015290517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d9163f28dceb391620019159190600401620048fd565b600060405180830381600087803b1580156200193057600080fd5b505af115801562001945573d6000803e3d6000fd5b505060225460408051602081018252600080825291517f6e98833d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9093169450636e98833d9350620019b192869291906004016200493a565b600060405180830381600087803b158015620019cc57600080fd5b505af1158015620019e1573d6000803e3d6000fd5b5050505062001a0861271087612711620019fc9190620047ae565b620004b39190620047fd565b62001a2c6040518060600160405280602481526020016200b3a560249139620032df565b5050505050505050565b60606017805480602002602001604051908101604052809291908181526020016000905b8282101562000de857838290600052602060002001805462001a7c9062004997565b80601f016020809104026020016040519081016040528092919081815260200182805462001aaa9062004997565b801562001afb5780601f1062001acf5761010080835404028352916020019162001afb565b820191906000526020600020905b81548152906001019060200180831162001add57829003601f168201915b50505050508152602001906001019062001a5a565b604080516001808252818301909252600091816020015b60408051808201909152600081526060602082015281526020019060019003908162001b2757505060408051600180825281830190925291925060009190602082015b60408051808201909152600081526060602082015281526020019060019003908162001b6a579050506040805180820190915290915080600081526020016040518060a00160405280608081526020016200b4c9608091398152508160008151811062001bdb5762001bdb620044ec565b6020026020010181905250604051806040016040528061ffff80168152602001828152508260008151811062001c155762001c15620044ec565b60200260200101819052506000600a600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001c92573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001cb8919062004156565b62001cc590600a620042d8565b62001cd29060036200430b565b62001cde91906200449f565b6003546022546040517f40c10f1900000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff918216926340c10f199262001d3e921690859060040162004336565b600060405180830381600087803b15801562001d5957600080fd5b505af115801562001d6e573d6000803e3d6000fd5b5050604080516101008101825260035473ffffffffffffffffffffffffffffffffffffffff908116825260048054821660208085019190915284518086018652600180825260025474010000000000000000000000000000000000000000900462ffffff168284015285870191909152606085018990526080850152600060a0850181905267ffffffffffffffff60c086015260e085018b905260225486517fe78f84e700000000000000000000000000000000000000000000000000000000815296519598509096509092169363e78f84e793818301939290918290030181865afa15801562001e63573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e899190620048da565b6022546040517ff1c6d05100000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff169063f1c6d0519062001ee290859060040162004799565b600060405180830381600087803b15801562001efd57600080fd5b505af115801562001f12573d6000803e3d6000fd5b5050505062001f566040518060400160405280600c81526020017f706c61636564206f726465720000000000000000000000000000000000000000815250620032df565b62001f6b8167ffffffffffffffff1662003372565b60225460408051602081018252600080825291517f6e98833d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90931692636e98833d9262001fd19286926004016200493a565b600060405180830381600087803b15801562001fec57600080fd5b505af115801562002001573d6000803e3d6000fd5b50505050620020456040518060400160405280600881526020017f6578656375746564000000000000000000000000000000000000000000000000815250620032df565b5050505050565b60606019805480602002602001604051908101604052809291908181526020016000905b8282101562000de857600084815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff1683526001810180548351818702810187019094528084529394919385830193928301828280156200213f57602002820191906000526020600020906000905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411620020eb5790505b5050505050815250508152602001906001019062002070565b604080516001808252818301909252600091816020015b6040805180820190915260008152606060208201528152602001906001900390816200216f57505060408051600180825281830190925291925060009190602082015b604080518082019091526000815260606020820152815260200190600190039081620021b2579050506040805180820190915290915080600081526020016040518060a00160405280608081526020016200b4c96080913981525081600081518110620022235762002223620044ec565b6020026020010181905250604051806040016040528061ffff8016815260200182815250826000815181106200225d576200225d620044ec565b60200260200101819052506000600a600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015620022da573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002300919062004156565b6200230d90600a620042d8565b6200231a9060036200430b565b6200232691906200449f565b6003546022546040517f40c10f1900000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff918216926340c10f199262002386921690859060040162004336565b600060405180830381600087803b158015620023a157600080fd5b505af1158015620023b6573d6000803e3d6000fd5b5050604080516101008101825260035473ffffffffffffffffffffffffffffffffffffffff908116825260048054821660208085019190915284518086018652600181526101f481830152848601526060840188905260006080850181905260a0850181905267ffffffffffffffff60c086015260e085018b905260225486517fe78f84e700000000000000000000000000000000000000000000000000000000815296519598509096509092169363e78f84e793818301939290918290030181865afa15801562001e63573d6000803e3d6000fd5b600254604080517f3850c7bd000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691633850c7bd9160048083019260e09291908290030181865afa158015620024fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620025239190620049ff565b50949695505050505050565b60606016805480602002602001604051908101604052809291908181526020016000905b8282101562000de8578382906000526020600020018054620025759062004997565b80601f0160208091040260200160405190810160405280929190818152602001828054620025a39062004997565b8015620025f45780601f10620025c857610100808354040283529160200191620025f4565b820191906000526020600020905b815481529060010190602001808311620025d657829003601f168201915b50505050508152602001906001019062002553565b600654600090760100000000000000000000000000000000000000000000900460ff1615620026565750600654760100000000000000000000000000000000000000000000900460ff1690565b6000737109709ecfa91a80626ff3989d68f67f5b1dd12d3b15620027be57604051600090737109709ecfa91a80626ff3989d68f67f5b1dd12d907f667f9d70ca411d70ead50d8d5c22070dafc36ad75f3dcf5e7237b22ade9aecc490620026e49083907f6661696c656400000000000000000000000000000000000000000000000000009060200162004336565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905262002722929160200162004ac3565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526200275c9162004ae0565b6000604051808303816000865af19150503d80600081146200279b576040519150601f19603f3d011682016040523d82523d6000602084013e620027a0565b606091505b5091505080806020019051810190620027ba91906200436c565b9150505b919050565b620028036040518060400160405280600b81526020017f73776170546f5072696365000000000000000000000000000000000000000000815250620032df565b620028248173ffffffffffffffffffffffffffffffffffffffff1662003372565b6000620028306200248c565b9050620028538173ffffffffffffffffffffffffffffffffffffffff1662003372565b8173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200288b575050565b60008273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1611620028e05760065473ffffffffffffffffffffffffffffffffffffffff16620028fa565b60055473ffffffffffffffffffffffffffffffffffffffff165b905060008373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1610620029515760065473ffffffffffffffffffffffffffffffffffffffff166200296b565b60055473ffffffffffffffffffffffffffffffffffffffff165b6040517f40c10f190000000000000000000000000000000000000000000000000000000081529091506c100000000000000000000000009073ffffffffffffffffffffffffffffffffffffffff8416906340c10f1990620029d3903090859060040162004336565b600060405180830381600087803b158015620029ee57600080fd5b505af115801562002a03573d6000803e3d6000fd5b505050506200097a8383838862000ad1565b60008060008062002a298888888862003405565b929b919a509850909650945050505050565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa15801562002aac573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062002ad291906200411b565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161462002b2c5762002b26600173fffd8963efd1fc6a506488495d951d5263988d2662004aee565b62002b3e565b62002b3e6401000276a3600162004b1f565b905062002b4e8585858462000ad1565b9150505b9392505050565b601260405162002b699062003aaa565b62002b75919062004bba565b604051809103906000f08015801562002b92573d6000803e3d6000fd5b50600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091178155604080518082019091529081527f4d45480000000000000000000000000000000000000000000000000000000000602082015262002c1690620032df565b60035462002c3a9073ffffffffffffffffffffffffffffffffffffffff16620039e8565b600660405162002c4a9062003aaa565b62002c56919062004c59565b604051809103906000f08015801562002c73573d6000803e3d6000fd5b50600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091178155604080518082019091529081527f5553584400000000000000000000000000000000000000000000000000000000602082015262002cf790620032df565b60045462002d1b9073ffffffffffffffffffffffffffffffffffffffff16620039e8565b600280547fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff167501f40000000000000000000000000000000000000000179055600454600354600680547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff94851694909316939093118202929092179182905560ff91041662002df05760035473ffffffffffffffffffffffffffffffffffffffff1662002e0a565b60045473ffffffffffffffffffffffffffffffffffffffff165b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560065474010000000000000000000000000000000000000000900460ff1662002e915760045473ffffffffffffffffffffffffffffffffffffffff1662002eab565b60035473ffffffffffffffffffffffffffffffffffffffff165b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179081905560009074010000000000000000000000000000000000000000900460ff1662002f26576910c6f7a0b5ed8d36b4c762002f37565b6e0f42400000000000000000000000005b905062002f5d6040518060800160405280605381526020016200b32260539139620032df565b6000546005546006546002546040517f13ead56200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff948516946313ead5629462002fe494908216939116917401000000000000000000000000000000000000000090910462ffffff1690879060040162004c80565b6020604051808303816000875af115801562003004573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200302a91906200411b565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560408051808201909152600781527f763320706f6f6c000000000000000000000000000000000000000000000000006020820152620030ae90620032df565b600254620030d29073ffffffffffffffffffffffffffffffffffffffff16620039e8565b62003106629896807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618620003738162004cbd565b50565b60606012805480602002602001604051908101604052809291908181526020018280548015620009e95760200282019190600052602060002090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311620009bd575050505050905090565b60008160020b136200318957600080fd5b600254604080517f3850c7bd000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691633850c7bd9160048083019260e09291908290030181865afa158015620031fa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620032209190620049ff565b5050505050915050620032478383836200323b919062004d05565b62000373858562004d5c565b505050565b6200310681604051602401620032639190620048fd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f560000000000000000000000000000000000000000000000000000000017905262003a76565b6200310681604051602401620032f69190620048fd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac0000000000000000000000000000000000000000000000000000000017905262003a76565b620031068160405160240162003389919062003ca4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff82c50f10000000000000000000000000000000000000000000000000000000017905262003a76565b6003546040517f40c10f1900000000000000000000000000000000000000000000000000000000815260009182918291829173ffffffffffffffffffffffffffffffffffffffff909116906340c10f1990620034689030908c9060040162004336565b600060405180830381600087803b1580156200348357600080fd5b505af115801562003498573d6000803e3d6000fd5b50506003546000546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316945063095ea7b39350620034fb92909116908c9060040162004336565b6020604051808303816000875af11580156200351b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200354191906200436c565b50600480546040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116916340c10f19916200359b9130918c910162004336565b600060405180830381600087803b158015620035b657600080fd5b505af1158015620035cb573d6000803e3d6000fd5b5050600480546000546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316955063095ea7b394506200362e9391909216918c910162004336565b6020604051808303816000875af11580156200364e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200367491906200436c565b50600254604080517fd0c93a7c000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163d0c93a7c9160048083019260209291908290030181865afa158015620036e6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200370c919062004db2565b6040517f97fd6da700000000000000000000000000000000000000000000000000000000815290915073__$74cfa661df799b6cc5f12f5b8f602e3b0f$__906397fd6da79062003763908a90859060040162004de0565b602060405180830381865af415801562003781573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620037a7919062004db2565b6040517f97fd6da700000000000000000000000000000000000000000000000000000000815290975073__$74cfa661df799b6cc5f12f5b8f602e3b0f$__906397fd6da790620037fe908990859060040162004de0565b602060405180830381865af41580156200381c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062003842919062004db2565b604080516101608101825260035473ffffffffffffffffffffffffffffffffffffffff908116825260048054821660208401526002805474010000000000000000000000000000000000000000900462ffffff16848601528c810b606085015285900b608084015260a083018e905260c083018d9052600060e08401819052610100840181905233610120850152426101408501525493517f88316456000000000000000000000000000000000000000000000000000000008152949a509193921691638831645691620039199185910162004ee3565b6080604051808303816000875af115801562003939573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200395f919062004f1b565b60408051808201909152600681527f6d696e7465640000000000000000000000000000000000000000000000000000602082015293995091975095509350620039a890620032df565b620039c5856fffffffffffffffffffffffffffffffff1662003372565b620039d08462003372565b620039db8362003372565b5050945094509450949050565b6200310681604051602401620039ff919062003ae9565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc2000000000000000000000000000000000000000000000000000000001790525b620031068180516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6151af8062004f7683390190565b6111fd806200a12583390190565b600073ffffffffffffffffffffffffffffffffffffffff82165b92915050565b62003ae38162003ab8565b82525050565b6020810162003ad2828462003ad8565b600073ffffffffffffffffffffffffffffffffffffffff821662003ad2565b600062003ad28262003af9565b600062003ad28262003b18565b62003ae38162003b25565b6020810162003ad2828462003b32565b62003b59828262003ad8565b5060200190565b600062003b6b825190565b808452602093840193830160005b8281101562003ba05762003b8f86835162003b4d565b955060208201915060010162003b79565b5093949350505050565b60208152600062002b52602083018462003b60565b600062003ad28262003ab8565b62003bd78162003bbf565b81146200310657600080fd5b80358062003bf18162003bcc565b5092915050565b8062003bd7565b80358062003bf18162003bf8565b73ffffffffffffffffffffffffffffffffffffffff811662003bd7565b80358062003bf18162003c0d565b6000806000806080858703121562003c535762003c53600080fd5b62003c5f868662003be3565b935062003c70866020870162003be3565b925062003c81866040870162003bff565b915062003c92866060870162003c2a565b905092959194509250565b8062003ae3565b6020810162003ad2828462003c9d565b62003bd78160020b90565b80358062003bf18162003cb4565b60008060006060848603121562003ce75762003ce7600080fd5b62003cf3858562003bff565b925062003d04856020860162003cbf565b915062003d15856040860162003cbf565b90509250925092565b7fffffffff00000000000000000000000000000000000000000000000000000000811662003ae3565b62003b59828262003d1e565b600062003d5e825190565b808452602093840193830160005b8281101562003ba05762003d8286835162003d47565b955060208201915060010162003d6c565b62003da082825162003ad8565b600060208201516040602085015262000c74604085018262003d53565b600062002b52838362003d93565b600062003dd6825190565b808452602084018094508160051b810162003df18560200190565b60005b8481101562003e2757838303885262003e0f83835162003dbd565b92506020820160209890980197915060010162003df4565b50909695505050505050565b60208152600062002b52602083018462003dcb565b80151562003ae3565b6020810162003ad2828462003e48565b60005b8381101562003e7e57818101518382015260200162003e64565b50506000910152565b600062003e92825190565b8084526020840162003ea982826020870162003e61565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b600062002b52838362003e87565b600062003ef1825190565b808452602084018094508160051b810162003f0c8560200190565b60005b8481101562003e2757838303885262003f2a83835162003ed8565b92506020820160209890980197915060010162003f0f565b60208152600062002b52602083018462003ee6565b73ffffffffffffffffffffffffffffffffffffffff811662003ae3565b6020810162003ad2828462003f57565b60006020828403121562003f9b5762003f9b600080fd5b62002b52838362003c2a565b6000806000806080858703121562003fc25762003fc2600080fd5b62003fce868662003bff565b935062003fdf866020870162003bff565b925062003ff0866040870162003cbf565b915062003c92866060870162003cbf565b6fffffffffffffffffffffffffffffffff811662003ae3565b608081016200402a828762003c9d565b62004039602083018662004001565b62004048604083018562003c9d565b62004057606083018462003c9d565b95945050505050565b62ffffff811662003ae3565b6020810162003ad2828462004060565b600080600060608486031215620040965762004096600080fd5b620040a2858562003be3565b9250620040b3856020860162003be3565b915062003d15856040860162003bff565b60008060408385031215620040dc57620040dc600080fd5b620040e8848462003bff565b9150620040f9846020850162003cbf565b90509250929050565b62003bd78162003ab8565b80518062003bf18162004102565b600060208284031215620041325762004132600080fd5b62002b5283836200410d565b60ff811662003bd7565b80518062003bf1816200413e565b6000602082840312156200416d576200416d600080fd5b62002b52838362004148565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80825b6001851115620041ee57808604811115620041ca57620041ca62004179565b6001851615620041d957908102905b8002620041e68560011c90565b9450620041ab565b94509492505050565b600082620042085750600162002b52565b81620042175750600062002b52565b81600181146200423057600281146200423b5762004271565b600191505062002b52565b60ff8411156200424f576200424f62004179565b6001841b8092508581111562004269576200426962004179565b505062002b52565b5060208310610133831016604e8410600b8410161715620042ab575081810a8084811115620042a457620042a462004179565b5062002b52565b620042ba8484846001620041a8565b808604821115620042cf57620042cf62004179565b02949350505050565b60008162000c747fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff861683620041f7565b600081838181025b80935082810482148315176200432d576200432d62004179565b50505092915050565b6040810162004346828562003ad8565b62002b52602083018462003c9d565b80151562003bd7565b80518062003bf18162004355565b600060208284031215620043835762004383600080fd5b62002b5283836200435e565b6200439c82825162003ad8565b6020810151620043b0602084018262003ad8565b506040810151620043c5604084018262004060565b506060810151620043da606084018262003ad8565b506080810151620043ef608084018262003c9d565b5060a08101516200440460a084018262003c9d565b5060c08101516200441960c084018262003c9d565b5060e08101516200324760e084018262003f57565b610100810162003ad282846200438f565b80518062003bf18162003bf8565b600060208284031215620044645762004464600080fd5b62002b5283836200443f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600081835b80620044b457620044b462004470565b90049392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60028110620031065762003106620044bd565b80620027be816200451b565b600062003ad2826200452e565b62003ae3816200453a565b6200455f82825162004547565b602081015162003247602084018262004060565b67ffffffffffffffff811662003ae3565b61ffff811662003ae3565b60038110620031065762003106620044bd565b80620027be816200458f565b600062003ad282620045a2565b62003ae381620045ae565b620045d3828251620045bb565b600060208201516040602085015262000c74604085018262003e87565b600062002b528383620045c6565b600062004609825190565b808452602084018094508160051b8101620046248560200190565b60005b8481101562003e2757838303885262004642838351620045f0565b92506020820160209890980197915060010162004627565b6200466782825162004584565b600060208201516040602085015262000c746040850182620045fe565b600062002b5283836200465a565b60006200469d825190565b808452602084018094508160051b8101620046b88560200190565b60005b8481101562003e27578383038852620046d683835162004684565b925060208201602098909801979150600101620046bb565b620046fb82825162003ad8565b6000602082015162004711602085018262003ad8565b50604082015162004726604085018262004552565b5060608201516200473b608085018262003c9d565b5060808201516200475060a085018262003e48565b5060a08201516200476560c085018262003e48565b5060c08201516200477a60e085018262004573565b5060e082015161012061010085015262000c7461012085018262004692565b60208152600062002b526020830184620046ee565b600073ffffffffffffffffffffffffffffffffffffffff821673ffffffffffffffffffffffffffffffffffffffff841673ffffffffffffffffffffffffffffffffffffffff8282021662004313565b600073ffffffffffffffffffffffffffffffffffffffff821673ffffffffffffffffffffffffffffffffffffffff8416620044a4565b63ffffffff811662003ae3565b62003ae38160130b90565b6200485882825162003e48565b60208101516200486c602084018262003e48565b50604081015162004881604084018262004833565b50606081015162004896606084018262003f57565b50608081015162003247608084018262004840565b60a0810162003ad282846200484b565b67ffffffffffffffff811662003bd7565b80518062003bf181620048bb565b600060208284031215620048f157620048f1600080fd5b62002b528383620048cc565b60208152600062002b52602083018462003e87565b600060ff821662003ad2565b62003ae38162004912565b6200493682825162003c9d565b5050565b606081016200494a828662004573565b6200495960208301856200491e565b62000c74604083018462004929565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c908190831680620049ae57607f821692505b602083108103620049c357620049c362004968565b5050919050565b80518062003bf18162003c0d565b80518062003bf18162003cb4565b61ffff811662003bd7565b80518062003bf181620049e6565b600080600080600080600060e0888a03121562004a1f5762004a1f600080fd5b62004a2b8989620049ca565b965062004a3c8960208a01620049d8565b955062004a4d8960408a01620049f1565b945062004a5e8960608a01620049f1565b935062004a6f8960808a01620049f1565b925062004a808960a08a0162004148565b915062004a918960c08a016200435e565b905092959891949750929550565b600062004aaa825190565b8362004abb82826020870162003e61565b019392505050565b62004acf818462003d1e565b600062000c74600483018462004a9f565b600062002b52828462004a9f565b73ffffffffffffffffffffffffffffffffffffffff8281168282160390819081111562003bf15762003bf162004179565b73ffffffffffffffffffffffffffffffffffffffff8281168282160190819081111562003bf15762003bf162004179565b601681526000602082017f4d6f636b20457468657265756d2048617264666f726b0000000000000000000081525b60200192915050565b600381526000602082017f4d45480000000000000000000000000000000000000000000000000000000000815262004b7e565b60608152600062004bce6060830162004b50565b828103602084015262004be18162004b87565b91505062003ad260408301846200491e565b601081526000602082017f4a6f6b652043757272656e637920584400000000000000000000000000000000815262004b7e565b600481526000602082017f5553584400000000000000000000000000000000000000000000000000000000815262004b7e565b60608152600062004c6d6060830162004bf3565b828103602084015262004be18162004c26565b6080810162004c90828762003ad8565b62004c9f602083018662003ad8565b62004cae604083018562004060565b62004057606083018462003f57565b600062004cca8260020b90565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800000810362004cfc5762004cfc62004179565b60000392915050565b600062004d128260020b90565b62004d1d8460020b90565b90039050807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008112627fffff8213171562003bf15762003bf162004179565b600062004d698260020b90565b62004d748460020b90565b01905080627fffff81137fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000008212171562003bf15762003bf162004179565b60006020828403121562004dc95762004dc9600080fd5b62002b528383620049d8565b62003ae38160020b90565b6040810162004df0828562004dd5565b62002b52602083018462004dd5565b62004e0c82825162003ad8565b602081015162004e20602084018262003ad8565b50604081015162004e35604084018262004060565b50606081015162004e4a606084018262004dd5565b50608081015162004e5f608084018262004dd5565b5060a081015162004e7460a084018262003c9d565b5060c081015162004e8960c084018262003c9d565b5060e081015162004e9e60e084018262003c9d565b5061010081015162004eb561010084018262003c9d565b5061012081015162004ecc61012084018262003ad8565b506101408101516200324761014084018262003c9d565b610160810162003ad2828462004dff565b6fffffffffffffffffffffffffffffffff811662003bd7565b80518062003bf18162004ef4565b6000806000806080858703121562004f365762004f36600080fd5b62004f4286866200443f565b935062004f53866020870162004f0d565b925062004f6486604087016200443f565b915062003c9286606087016200443f56fe608060405234801561001057600080fd5b50600180546001600160a01b0319163317905561517d806100326000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063901c4e4f11610050578063901c4e4f146100d3578063dd009fdc146100db578063f851a440146100ee57600080fd5b80631a48240f146100775780635eb512e7146100a057806389035730146100b3575b600080fd5b61008a6100853660046102ac565b61010e565b60405161009791906102f8565b60405180910390f35b61008a6100ae36600461031b565b610120565b60005461008a9073ffffffffffffffffffffffffffffffffffffffff1681565b61008a61012d565b61008a6100e936600461033a565b61013f565b60015461008a9073ffffffffffffffffffffffffffffffffffffffff1681565b600061011a3383610152565b92915050565b600061011a826000610152565b600061013a336000610152565b905090565b600061014b8383610152565b9392505050565b604080516020808201835273ffffffffffffffffffffffffffffffffffffffff851691829052600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169092178255915190916101b59185918591016103b2565b604051602081830303815290604052805190602001206040516101d790610279565b8190604051809103906000f59050801580156101f7573d6000803e3d6000fd5b50600080547fffffffffffffffffffffffff000000000000000000000000000000000000000016905560405190915073ffffffffffffffffffffffffffffffffffffffff8416907f416468bb91b91b2da4acfc37ed49064c0d99cb1d3ea6691055ce17e79137b8d49061026b9085906103db565b60405180910390a292915050565b614d5e806103ea83390190565b60ff81165b811461029657600080fd5b50565b8035806102a581610286565b5092915050565b6000602082840312156102c1576102c1600080fd5b61014b8383610299565b600073ffffffffffffffffffffffffffffffffffffffff821661011a565b6102f2816102cb565b82525050565b6020810161011a82846102e9565b61028b816102cb565b8035806102a581610306565b60006020828403121561033057610330600080fd5b61014b838361030f565b6000806040838503121561035057610350600080fd5b61035a848461030f565b91506103698460208501610299565b90509250929050565b600061011a8260601b90565b600061011a82610372565b6102f2610395826102cb565b61037e565b600061011a8260f81b90565b6102f260ff821661039a565b6103bc8184610389565b6103c960148201836103a6565b60150192915050565b60ff81166102f2565b6020810161011a82846103d256fe60c06040523480156200001157600080fd5b50336001600160a01b031663890357306040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000051573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000779190620000bc565b6001600160a01b031660a0526000608052620000e6565b6001600160a01b0381168114620000a457600080fd5b50565b805180620000b5816200008e565b5092915050565b600060208284031215620000d357620000d3600080fd5b620000df8383620000a7565b9392505050565b60805160a051614c2862000136600039600081816102460152818161034c015281816103ea0152818161042701528181610844015281816108da0152611fd60152600061018f0152614c286000f3fe6080604052600436106100d65760003560e01c806377bad6b51161007f578063e78f84e711610059578063e78f84e714610295578063f1c6d051146102b2578063f3fef3a3146102d2578063fbbc8731146102f257600080fd5b806377bad6b5146102075780638da5cb5b14610234578063c3b35a7e1461027557600080fd5b806354fd4d50116100b057806354fd4d501461017d578063625c061c146101c75780636e98833d146101e757600080fd5b8063205c28781461011b5780632e1a7d4d1461013d578063523eb5371461015d57600080fd5b36610116577ff17c7d05fbef2f7f7af4beefa0649a44e2f27ed60c8fc3fc371ff2c1de29880a333460405161010c929190613227565b60405180910390a1005b600080fd5b34801561012757600080fd5b5061013b610136366004613282565b610319565b005b34801561014957600080fd5b5061013b6101583660046132ba565b610327565b34801561016957600080fd5b5061013b6101783660046132f5565b610334565b34801561018957600080fd5b506101b17f000000000000000000000000000000000000000000000000000000000000000081565b6040516101be919061331d565b60405180910390f35b3480156101d357600080fd5b5061013b6101e236600461389f565b6103d2565b3480156101f357600080fd5b5061013b610202366004613934565b610420565b34801561021357600080fd5b506102276102223660046132f5565b610453565b6040516101be9190613dca565b34801561024057600080fd5b506102687f000000000000000000000000000000000000000000000000000000000000000081565b6040516101be9190613ddd565b34801561028157600080fd5b5061013b610290366004613e0b565b610821565b3480156102a157600080fd5b506001546040516101be9190613e4b565b3480156102be57600080fd5b5061013b6102cd366004613e59565b61082c565b3480156102de57600080fd5b5061013b6102ed366004613e94565b6108b7565b3480156102fe57600080fd5b5060005461030c9060ff1681565b6040516101be9190613eb4565b61032382826108c2565b5050565b61033133826108c2565b50565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461037657600080fd5b6103b46040518060400160405280600b81526020017f63616e63656c4f72646572000000000000000000000000000000000000000000815250610947565b6103c78167ffffffffffffffff166109d6565b610331600082610a65565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461041457600080fd5b61032360008383610b62565b61044e60007f00000000000000000000000000000000000000000000000000000000000000008585856111e9565b505050565b61045b61312e565b6001805467ffffffffffffffff841690811061047957610479613ec2565b600091825260209091206040805161020081018252600b909302909101805473ffffffffffffffffffffffffffffffffffffffff90811661010085019081526001808401549092166101208601528351808501909452600283018054939486949293869361014087019391839160ff16908111156104f9576104f961397d565b600181111561050a5761050a61397d565b815290546101009081900462ffffff16602092830152918352600384015483820152600484015460ff8082161515604080870191909152938204161515606085015262010000900467ffffffffffffffff16608084015260058401805483518184028101840190945280845260a090940193909160009084015b828210156106e5576000848152602080822060408051808201825260028702909201805461ffff168352600181018054835181870281018701909452808452939591948681019491929084015b828210156106ce57838290600052602060002090600202016040518060400160405290816000820160009054906101000a900460ff1660028111156106185761061861397d565b60028111156106295761062961397d565b815260200160018201805461063d90613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461066990613f20565b80156106b65780601f1061068b576101008083540402835291602001916106b6565b820191906000526020600020905b81548152906001019060200180831161069957829003601f168201915b505050505081525050815260200190600101906105d1565b505050508152505081526020019060010190610584565b505050915250508152600682015460209091019060ff16600381111561070d5761070d61397d565b600381111561071e5761071e61397d565b81526006820154610100810463ffffffff166020808401919091526501000000000090910467ffffffffffffffff16604080840191909152600784015460608401526008840154608084015260098401805482518185028101850190935280835260a09094019391929091908301828280156107b957602002820191906000526020600020905b8154815260200190600101908083116107a5575b50505050508152602001600a820180548060200260200160405190810160405280929190818152602001828054801561081157602002820191906000526020600020905b8154815260200190600101908083116107fd575b5050505050815250509050919050565b61044e838383611fbe565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461086e57600080fd5b6108ac6040518060400160405280601281526020017f5661756c742e706c6163654f7264657228290000000000000000000000000000815250610947565b61033160008261209d565b610323823383611fbe565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461090457600080fd5b60405173ffffffffffffffffffffffffffffffffffffffff83169082156108fc029083906000818181858888f1935050505015801561044e573d6000803e3d6000fd5b6103318160405160240161095b9190613f4f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f41304fac000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016109ea9190613f62565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff82c50f1000000000000000000000000000000000000000000000000000000001790526120fc565b6000826001018267ffffffffffffffff1681548110610a8657610a86613ec2565b6000918252602082206006600b90920201015460ff169150816003811115610ab057610ab061397d565b0361044e576001836001018367ffffffffffffffff1681548110610ad657610ad6613ec2565b600091825260209091206006600b909202010180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001836003811115610b2157610b2161397d565b02179055507f74a075ee230588b5c76ea493a6d21b086384f29139b7227b9c6329e66106dc4882604051610b559190613e4b565b60405180910390a1505050565b815160ff11610b7057600080fd5b600183015467ffffffffffffffff80821610610b8b57600080fd5b600080836002811115610ba057610ba061397d565b03610bb4575067ffffffffffffffff610d52565b6001836002811115610bc857610bc861397d565b1480610be557506002836002811115610be357610be361397d565b145b15610d175784600201805490509050846002016040518060600160405280856002811115610c1557610c1561397d565b815267ffffffffffffffff8516602080830191909152875160ff1660409092019190915282546001818101855560009485529190932082519301805492939092909183917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690836002811115610c8e57610c8e61397d565b02179055506020820151815460409093015160ff166901000000000000000000027fffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff67ffffffffffffffff90921661010002919091167fffffffffffffffffffffffffffffffffffffffffffff000000000000000000ff90931692909217919091179055610d52565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613fa7565b60405180910390fd5b60005b84518160ff1610156111a7576000858260ff1681518110610d7857610d78613ec2565b60200260200101519050600180811115610d9457610d9461397d565b6040820151516001811115610dab57610dab61397d565b14610de2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613feb565b600180880180549182018082556000828152919083908110610e0657610e06613ec2565b600091825260209182902060608601516003600b9093029091019182015560808501516004820180549115157fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009283161790558551825473ffffffffffffffffffffffffffffffffffffffff9182167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216178455938701516001808501805492909316919095161790556040860151805160028401805494965091949193909284929116908381811115610ede57610ede61397d565b02179055506020919091015181547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ff1661010062ffffff90921682021790915560c084015160048301805460a08701517fffffffffffffffffffffffffffffffffffffffffffff000000000000000000ff9091166201000067ffffffffffffffff909416939093027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169290921791151590920217905560005b8360e0015151811015611126576005820180546001018155600090815260e0850151805183908110610fcc57610fcc613ec2565b602002602001015190506000836000016005018381548110610ff057610ff0613ec2565b60009182526020822084516002929092020180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff90921691909117815591505b8260200151518110156110e857816001018360200151828151811061105c5761105c613ec2565b60209081029190910181015182546001818101855560009485529290932081516002948502909101805492949093919284927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009091169184908111156110c4576110c461397d565b0217905550602082015160018201906110dd9082614121565b505050600101611035565b5050506009820180546001818101835560009283526020808420909201839055600a8501805480830182559084529183209091019190915501610f98565b5060060180547fffffffffffffffffffffffffffffffffffffff00000000000000000000000000166101004263ffffffff16027fffffffffffffffffffffffffffffffffffffff0000000000000000ffffffffff16176501000000000067ffffffffffffffff8716021790555081905061119f81614227565b915050610d55565b507f704790b72d78f27fe222b5e80adb23b845160c560b9e927c2c87b75adc9c2e2b8285516040516111da929190614246565b60405180910390a15050505050565b6112276040518060400160405280600781526020017f6578656375746500000000000000000000000000000000000000000000000000815250610947565b61123030612105565b6112438367ffffffffffffffff166109d6565b61124f8260ff166109d6565b6000856001018467ffffffffffffffff168154811061127057611270613ec2565b600091825260208220600b909102019150600682015460ff16600381111561129a5761129a61397d565b146112d1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614293565b6000816000016005018460ff16815481106112ee576112ee613ec2565b600091825260208220845460018601546002808801546040517f1698ee8200000000000000000000000000000000000000000000000000000000815295909102909301955084938493731f98431c8ad98523631ae4a59f267346ea31f98493631698ee82936113889373ffffffffffffffffffffffffffffffffffffffff928316939290911691610100900462ffffff16906004016142a5565b602060405180830381865afa1580156113a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c991906142d9565b905060005b600185015460ff82161015611ab6576000856001018260ff16815481106113f7576113f7613ec2565b6000918252602082206002909102019150815460ff16600281111561141e5761141e61397d565b03611627576114616040518060400160405280600f81526020017f74696d6520636f6e73747261696e740000000000000000000000000000000000815250610947565b600081600101805461147290613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461149e90613f20565b80156114eb5780601f106114c0576101008083540402835291602001916114eb565b820191906000526020600020905b8154815290600101906020018083116114ce57829003601f168201915b50505050508060200190518101906115039190614392565b9050600080825151600181111561151c5761151c61397d565b146115465781516020015160068a01546115419190610100900463ffffffff166143b1565b61154d565b8151602001515b9050428163ffffffff16111561158f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614401565b600060208301515160018111156115a8576115a861397d565b146115d457602082810151015160068a01546115cf9190610100900463ffffffff166143b1565b6115de565b8160200151602001515b9050428163ffffffff161015611620576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614445565b5050611aa3565b6001815460ff16600281111561163f5761163f61397d565b036119e4576116826040518060400160405280600f81526020017f6c696e6520636f6e73747261696e740000000000000000000000000000000000815250610947565b8473ffffffffffffffffffffffffffffffffffffffff16600003611719578273ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa1580156116eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170f91906144b9565b5094995050505050505b600081600101805461172a90613f20565b80601f016020809104026020016040519081016040528092919081815260200182805461175690613f20565b80156117a35780601f10611778576101008083540402835291602001916117a3565b820191906000526020600020905b81548152906001019060200180831161178657829003601f168201915b50505050508060200190518101906117bb91906145dc565b602081015190915073ffffffffffffffffffffffffffffffffffffffff87169015611812576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499061462d565b6060820151608083015173ffffffffffffffffffffffffffffffffffffffff9091169060130b15611896576c01000000000000000000000000836080015160130b846040015163ffffffff1642611869919061463f565b611873919061465c565b61187d91906146e3565b6118879082614751565b90506000811215611896575060005b61189f81612194565b6118a8826109d6565b82516118b390612223565b8251819080156118d957508073ffffffffffffffffffffffffffffffffffffffff168311155b806119045750835115801561190457508073ffffffffffffffffffffffffffffffffffffffff168310155b1561193b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906147a3565b73ffffffffffffffffffffffffffffffffffffffff8816158061199257508351801561199257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16105b806119d2575083511580156119d257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16115b156119db578097505b50505050611aa3565b6002815460ff1660028111156119fc576119fc61397d565b03611a7157611a3f6040518060400160405280601281526020017f6261727269657220636f6e73747261696e740000000000000000000000000000815250610947565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906147e7565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499061482b565b5080611aae81614227565b9150506113ce565b50611af56040518060400160405280601081526020017f636f6d707574696e6720616d6f756e7400000000000000000000000000000000815250610947565b6003850154611b03906109d6565b8354611b129061ffff166109d6565b6004850154611b239060ff16612223565b611b3085600701546109d6565b611b3d85600801546109d6565b611b68856009018860ff1681548110611b5857611b58613ec2565b90600052602060002001546109d6565b611b8385600a018860ff1681548110611b5857611b58613ec2565b600485015460009060ff16611bba5785600a018860ff1681548110611baa57611baa613ec2565b9060005260206000200154611bde565b856009018860ff1681548110611bd257611bd2613ec2565b90600052602060002001545b8554600388015461ffff91611bf6919083169061483d565b611c009190614857565b611c0a919061463f565b9050611c4a6040518060400160405280600681526020017f616d6f756e740000000000000000000000000000000000000000000000000000815250610947565b611c53816109d6565b611c916040518060400160405280600581526020017f6c696d6974000000000000000000000000000000000000000000000000000000815250610947565b611cb08373ffffffffffffffffffffffffffffffffffffffff166109d6565b611cee6040518060400160405280600581526020017f7072696365000000000000000000000000000000000000000000000000000000815250610947565b611d0d8473ffffffffffffffffffffffffffffffffffffffff166109d6565b6003860154600487015460ff16611d28578660080154611d2e565b86600701545b1115611d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906148a3565b600486015460009060ff16611d7f578660080154611d85565b86600701545b6003880154611d94919061463f565b9050611dd46040518060400160405280600981526020017f72656d61696e696e670000000000000000000000000000000000000000000000815250610947565b611ddd816109d6565b80821115611de9578091505b60008211611e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906148e7565b611e2c826109d6565b6004870154600090610100900460ff16611e465730611e48565b8b5b9050611e5381612105565b600080600160028b015460ff166001811115611e7157611e7161397d565b03611e8d57611e83838b88888b6122b2565b9092509050611ebf565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613feb565b818a6007016000828254611ed391906148f9565b92505081905550808a6008016000828254611eee91906148f9565b92505081905550818a6009018d60ff1681548110611f0e57611f0e613ec2565b906000526020600020016000828254611f2791906148f9565b92505081905550808a600a018d60ff1681548110611f4757611f47613ec2565b906000526020600020016000828254611f6091906148f9565b90915550506040517f8b9a867d3ae2675d02744a1ce6d50e404d9af21941871223000c679e01911af890611f9b908f908f908690869061490e565b60405180910390a1611fad8f8b612417565b505050505050505050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461200057600080fd5b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84169063a9059cbb906120549085908590600401613227565b6020604051808303816000875af1158015612073573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120979190614943565b50505050565b604080516001808252818301909252600091816020015b6120bc613189565b8152602001906001900390816120b457905050905081816000815181106120e5576120e5613ec2565b602002602001018190525061044e83826000610b62565b61033181612559565b610331816040516024016121199190613ddd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2c2ecbc2000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016121a89190613f62565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f2d5b6cb9000000000000000000000000000000000000000000000000000000001790526120fc565b610331816040516024016122379190613eb4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f32458eed000000000000000000000000000000000000000000000000000000001790526120fc565b6000806122f36040518060400160405280600b81526020017f7072696365206c696d6974000000000000000000000000000000000000000000815250610947565b6123128373ffffffffffffffffffffffffffffffffffffffff166109d6565b600486015460ff1615612398576040805160e08101825273ffffffffffffffffffffffffffffffffffffffff8781168252885481166020830152600189015481169282019290925288821660608201526002880154610100900462ffffff16608082015260a0810186905290841660c082015261238e9061257a565b909250905061240d565b6040805160e08101825273ffffffffffffffffffffffffffffffffffffffff8781168252885481166020830152600189015481169282019290925288821660608201526002880154610100900462ffffff16608082015260a0810186905290841660c082015261240790612928565b90925090505b9550959350505050565b600481015460009060ff16612430578160080154612436565b81600701545b6003830154612445919061463f565b9050806000036124bb576006820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166002179081905567ffffffffffffffff6501000000000090910481161461044e57600682015461044e90849065010000000000900467ffffffffffffffff16612f2b565b600682015465010000000000900467ffffffffffffffff90811614801590612531575060016006830154600285018054909165010000000000900467ffffffffffffffff1690811061250f5761250f613ec2565b60009182526020909120015460ff16600281111561252f5761252f61397d565b145b1561044e57600682015461044e90849065010000000000900467ffffffffffffffff16612f2b565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6000806125bb6040518060400160405280601981526020017f737761704578616374496e70757420617070726f76652e2e2e00000000000000815250610947565b6125c430612105565b6125d18360200151612105565b6125de8360400151612105565b6125f0836080015162ffffff166109d6565b6125fd8360600151612105565b61260a8360a001516109d6565b61262d8360c0015173ffffffffffffffffffffffffffffffffffffffff166109d6565b61264a73e592427a0aece92de3edee1f18e0157c05861564612105565b8260a0015191506000836020015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016126909190613ddd565b602060405180830381865afa1580156126ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126d1919061496e565b90508060000361270d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906149bf565b82811015612719578092505b61273c846020015173e592427a0aece92de3edee1f18e0157c0586156485612fce565b61277a6040518060400160405280600b81526020017f7377617070696e672e2e2e000000000000000000000000000000000000000000815250610947565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663414bf389604051806101000160405280876020015173ffffffffffffffffffffffffffffffffffffffff168152602001876040015173ffffffffffffffffffffffffffffffffffffffff168152602001876080015162ffffff168152602001876060015173ffffffffffffffffffffffffffffffffffffffff168152602001428152602001868152602001600181526020018760c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b81526004016128729190614a7c565b6020604051808303816000875af1158015612891573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128b5919061496e565b91506128f56040518060400160405280600781526020017f7377617070656400000000000000000000000000000000000000000000000000815250610947565b6128fe826109d6565b612922846020015173e592427a0aece92de3edee1f18e0157c058615646000612fce565b50915091565b6000806000836020015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161296a9190613ddd565b602060405180830381865afa158015612987573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129ab919061496e565b9050806000036129e7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d49906149bf565b60408051808201909152601a81527f7377617045786163744f757470757420617070726f76652e2e2e00000000000060208201528190612a2690610947565b612a2f30612105565b612a3c8560200151612105565b612a498560400151612105565b612a5b856080015162ffffff166109d6565b612a688560600151612105565b612a758560a001516109d6565b612a988560c0015173ffffffffffffffffffffffffffffffffffffffff166109d6565b612ab573e592427a0aece92de3edee1f18e0157c05861564612105565b612af36040518060400160405280600781526020017f617070726f766500000000000000000000000000000000000000000000000000815250610947565b612afc816109d6565b612b1f856020015173e592427a0aece92de3edee1f18e0157c0586156483612fce565b612b5d6040518060400160405280600b81526020017f7377617070696e672e2e2e000000000000000000000000000000000000000000815250610947565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663db3e2198604051806101000160405280886020015173ffffffffffffffffffffffffffffffffffffffff168152602001886040015173ffffffffffffffffffffffffffffffffffffffff168152602001886080015162ffffff168152602001886060015173ffffffffffffffffffffffffffffffffffffffff1681526020014281526020018860a0015181526020018481526020018860c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b8152600401612c589190614a7c565b6020604051808303816000875af1925050508015612cb1575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612cae9181019061496e565b60015b612ea557612cbd614a8b565b806308c379a003612e8c5750612cd1614aa6565b80612cdc5750612e8e565b73e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663414bf389604051806101000160405280896020015173ffffffffffffffffffffffffffffffffffffffff168152602001896040015173ffffffffffffffffffffffffffffffffffffffff168152602001896080015162ffffff168152602001896060015173ffffffffffffffffffffffffffffffffffffffff168152602001428152602001858152602001600181526020018960c0015173ffffffffffffffffffffffffffffffffffffffff168152506040518263ffffffff1660e01b8152600401612dd49190614a7c565b6020604051808303816000875af1925050508015612e2d575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612e2a9181019061496e565b60015b612e9857612e39614a8b565b806308c379a003612e8c5750612e4d614aa6565b80612e585750612e8e565b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d499190613f4f565b505b3d6000803e3d6000fd5b8295508094505050612eb0565b60a086015190945092505b612eee6040518060400160405280600781526020017f7377617070656400000000000000000000000000000000000000000000000000815250610947565b612ef7846109d6565b612f00836109d6565b612f24856020015173e592427a0aece92de3edee1f18e0157c058615646000612fce565b5050915091565b6000826002018267ffffffffffffffff1681548110612f4c57612f4c613ec2565b600091825260208220018054909250612f84906901000000000000000000810460ff1690610100900467ffffffffffffffff16614b5f565b8254909150610100900467ffffffffffffffff165b8167ffffffffffffffff168167ffffffffffffffff161015612fc757612fbf8582610a65565b600101612f99565b5050505050565b6000808473ffffffffffffffffffffffffffffffffffffffff1663095ea7b360e01b8585604051602401613003929190613227565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905161308c9190614ba2565b6000604051808303816000865af19150503d80600081146130c9576040519150601f19603f3d011682016040523d82523d6000602084013e6130ce565b606091505b50915091508180156130f85750805115806130f85750808060200190518101906130f89190614943565b612fc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990614be0565b604051806101000160405280613142613189565b815260200160008152602001600063ffffffff168152602001600067ffffffffffffffff168152602001600081526020016000815260200160608152602001606081525090565b6040805161010081018252600080825260208201529081016131bb604080518082019091526000808252602082015290565b815260200160008152602001600015158152602001600015158152602001600067ffffffffffffffff168152602001606081525090565b600073ffffffffffffffffffffffffffffffffffffffff82165b92915050565b61321b816131f2565b82525050565b8061321b565b604081016132358285613212565b6132426020830184613221565b9392505050565b613252816131f2565b811461033157600080fd5b80358061326981613249565b5092915050565b80613252565b80358061326981613270565b6000806040838503121561329857613298600080fd5b6132a2848461325d565b91506132b18460208501613276565b90509250929050565b6000602082840312156132cf576132cf600080fd5b6132428383613276565b67ffffffffffffffff8116613252565b803580613269816132d9565b60006020828403121561330a5761330a600080fd5b61324283836132e9565b60ff811661321b565b6020810161320c8284613314565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff8211171561339e5761339e61332b565b6040525050565b60006133b060405190565b8091506133bd838261335a565b50919050565b600067ffffffffffffffff8211156133dd576133dd61332b565b5060051b60200190565b6002811061033157600080fd5b803580613269816133e7565b62ffffff8116613252565b80358061326981613400565b60006040828403121561342c5761342c600080fd5b61343660406133a5565b80915061344384846133f4565b8152613452846020850161340b565b60208201525092915050565b801515613252565b8035806132698161345e565b61ffff8116613252565b80358061326981613472565b6003811061033157600080fd5b80358061326981613488565b600067ffffffffffffffff8211156134bb576134bb61332b565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b82818337506000910152565b6000613506613501846134a1565b6133a5565b80915083815284848401111561351e5761351e600080fd5b61352c8460208301856134e7565b509392505050565b600082601f83011261354857613548600080fd5b613242838335602085016134f3565b60006040828403121561356c5761356c600080fd5b61357660406133a5565b8091506135838484613495565b8152602083013567ffffffffffffffff8111156135a2576135a2600080fd5b6135ae85828601613534565b6020830152505092915050565b60006135c9613501846133c3565b8381529050600583901b820160208201858211156135e9576135e9600080fd5b835b8281101561362857803567ffffffffffffffff81111561360d5761360d600080fd5b61361988828801613557565b835250602091820191016135eb565b5050509392505050565b600082601f83011261364657613646600080fd5b613242838335602085016135bb565b60006040828403121561366a5761366a600080fd5b61367460406133a5565b809150613681848461347c565b8152602083013567ffffffffffffffff8111156136a0576136a0600080fd5b6135ae85828601613632565b60006136ba613501846133c3565b8381529050600583901b820160208201858211156136da576136da600080fd5b835b8281101561362857803567ffffffffffffffff8111156136fe576136fe600080fd5b61370a88828801613655565b835250602091820191016136dc565b600082601f83011261372d5761372d600080fd5b613242838335602085016136ac565b6000610120828403121561375257613752600080fd5b61375d6101006133a5565b80915061376a848461325d565b8152613779846020850161325d565b602082015261378b8460408501613417565b604082015261379d8460808501613276565b60608201526137af8460a08501613466565b60808201526137c18460c08501613466565b60a08201526137d38460e085016132e9565b60c082015261010083013567ffffffffffffffff8111156137f6576137f6600080fd5b61380285828601613719565b60e0830152505092915050565b600061381d613501846133c3565b8381529050600583901b8201602082018582111561383d5761383d600080fd5b835b8281101561362857803567ffffffffffffffff81111561386157613861600080fd5b61386d8882880161373c565b8352506020918201910161383f565b600082601f83011261389057613890600080fd5b6132428383356020850161380f565b600080604083850312156138b5576138b5600080fd5b823567ffffffffffffffff8111156138cf576138cf600080fd5b6138db8582860161387c565b9250506132b18460208501613495565b60ff8116613252565b803580613269816138eb565b60006020828403121561391557613915600080fd5b61391f60206133a5565b80915061392c8484613276565b905292915050565b60008060006060848603121561394c5761394c600080fd5b61395685856132e9565b925061396585602086016138f4565b91506139748560408601613900565b90509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600281106103315761033161397d565b806139c6816139ac565b919050565b600061320c826139bc565b61321b816139cb565b62ffffff811661321b565b6139f58282516139d6565b602081015161044e60208401826139df565b80151561321b565b67ffffffffffffffff811661321b565b61ffff811661321b565b600381106103315761033161397d565b806139c681613a29565b600061320c82613a39565b61321b81613a43565b60005b83811015613a72578181015183820152602001613a5a565b50506000910152565b6000613a85825190565b80845260208401613a9a828260208701613a57565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b613ad4828251613a4e565b6000602082015160406020850152613aef6040850182613a7b565b949350505050565b60006132428383613ac9565b6000613b0d825190565b808452602084018094508160051b8101613b278560200190565b60005b84811015613b59578383038852613b42838351613af7565b925060208201602098909801979150600101613b2a565b50909695505050505050565b613b70828251613a1f565b6000602082015160406020850152613aef6040850182613b03565b60006132428383613b65565b6000613ba1825190565b808452602084018094508160051b8101613bbb8560200190565b60005b84811015613b59578383038852613bd6838351613b8b565b925060208201602098909801979150600101613bbe565b613bf8828251613212565b60006020820151613c0c6020850182613212565b506040820151613c1f60408501826139ea565b506060820151613c326080850182613221565b506080820151613c4560a0850182613a07565b5060a0820151613c5860c0850182613a07565b5060c0820151613c6b60e0850182613a0f565b5060e0820151610120610100850152613aef610120850182613b97565b600481106103315761033161397d565b806139c681613c88565b600061320c82613c98565b61321b81613ca2565b63ffffffff811661321b565b613ccc8282613221565b5060200190565b6000613cdd825190565b808452602093840193830160005b82811015613d0e57613cfe868351613cc2565b9550602082019150600101613ceb565b5093949350505050565b600081516101008452613d2f610100850182613bed565b90506020830151613d436020860182613cad565b506040830151613d566040860182613cb6565b506060830151613d696060860182613a0f565b506080830151613d7c6080860182613221565b5060a0830151613d8f60a0860182613221565b5060c083015184820360c0860152613da78282613cd3565b91505060e083015184820360e0860152613dc18282613cd3565b95945050505050565b6020815260006132426020830184613d18565b6020810161320c8284613212565b600061320c826131f2565b61325281613deb565b80358061326981613df6565b600080600060608486031215613e2357613e23600080fd5b613e2d8585613dff565b9250613e3c856020860161325d565b91506139748560408601613276565b6020810161320c8284613a0f565b600060208284031215613e6e57613e6e600080fd5b813567ffffffffffffffff811115613e8857613e88600080fd5b613aef8482850161373c565b60008060408385031215613eaa57613eaa600080fd5b6132a28484613dff565b6020810161320c8284613a07565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c908190831680613f3657607f821692505b602083108103613f4857613f48613ef1565b5050919050565b6020815260006132426020830184613a7b565b6020810161320c8284613221565b600481526000602082017f4f434f4d0000000000000000000000000000000000000000000000000000000081525b60200192915050565b60208152600061320c60208301613f70565b600281526000602082017f55520000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301613fb9565b60008260031b61402c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821b90565b94901b84169319919091169290921792915050565b600061320c61404d8381565b90565b61406761405f61404d85614041565b838354613ffd565b90555050565b61032360008383614050565b818110156103235761408c60008261406d565b600101614079565b601f82111561044e57600081815260209020601f840160051c810160208510156140bb5750805b612fc7601f850160051c830182614079565b60006140fb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8460031b1c90565b198216905092915050565b600061411283836140cd565b8360011b811791505092915050565b815167ffffffffffffffff81111561413b5761413b61332b565b61414f816141498454613f20565b84614094565b6020601f82116001811461417d576000831561416b5750848201515b6141758482614106565b855550612fc7565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156141cb57878501518255602094850194600190920191016141ab565b50848210156141e957838701516141e5601f8716826140cd565b8255505b50505050600190811b01905550565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600060ff821660ff810361423d5761423d6141f8565b60010192915050565b604081016142548285613a0f565b6132426020830184613314565b600281526000602082017f4e4f0000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614261565b606081016142b38286613212565b6142c06020830185613212565b613aef60408301846139df565b80518061326981613249565b6000602082840312156142ee576142ee600080fd5b61324283836142cd565b805180613269816133e7565b63ffffffff8116613252565b80518061326981614304565b60006040828403121561433157614331600080fd5b61433b60406133a5565b80915061434884846142f8565b81526134528460208501614310565b60006080828403121561436c5761436c600080fd5b61437660406133a5565b809150614383848461431c565b8152613452846040850161431c565b6000608082840312156143a7576143a7600080fd5b6132428383614357565b63ffffffff82811682821601908190811115613269576132696141f8565b600281526000602082017f54450000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016143cf565b600281526000602082017f544c0000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614413565b73ffffffffffffffffffffffffffffffffffffffff8116613252565b80518061326981614457565b6132528160020b90565b8051806132698161447f565b80518061326981613472565b805180613269816138eb565b8051806132698161345e565b600080600080600080600060e0888a0312156144d7576144d7600080fd5b6144e18989614473565b96506144f08960208a01614489565b95506144ff8960408a01614495565b945061450e8960608a01614495565b935061451d8960808a01614495565b925061452c8960a08a016144a1565b915061453b8960c08a016144ad565b905092959891949750929550565b6132528160130b90565b80518061326981614549565b600060a0828403121561457457614574600080fd5b61457e60a06133a5565b80915061458b84846144ad565b815261459a84602085016144ad565b60208201526145ac8460408501614310565b60408201526145be8460608501614473565b60608201526145d08460808501614553565b60808201525092915050565b600060a082840312156145f1576145f1600080fd5b613242838361455f565b601581526000602082017f726174696f206e6f7420696d706c656d656e74656400000000000000000000008152613f9e565b60208152600061320c602083016145fb565b818103818181811115614654576146546141f8565b505092915050565b818102818382600083127f800000000000000000000000000000000000000000000000000000000000000083141615614697576146976141f8565b82810582148315176146ab576146ab6141f8565b50505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008183806146f4576146f46146b4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81147f800000000000000000000000000000000000000000000000000000000000000083141615614748576147486141f8565b90059392505050565b8181016000821283821280158216821582161715614654576146546141f8565b600181526000602082017f4c000000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614771565b600281526000602082017f4e490000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016147b5565b600281526000602082017f55430000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016147f9565b81810281838282158382048314176146ab576146ab6141f8565b6000818380614868576148686146b4565b90049392505050565b600881526000602082017f4f56455246494c4c0000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614871565b600281526000602082017f54460000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c602083016148b5565b818101818180821115614654576146546141f8565b6080810161491c8287613a0f565b6149296020830186613314565b6149366040830185613221565b613dc16060830184613221565b60006020828403121561495857614958600080fd5b61324283836144ad565b80518061326981613270565b60006020828403121561498357614983600080fd5b6132428383614962565b600381526000602082017f49494100000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c6020830161498d565b73ffffffffffffffffffffffffffffffffffffffff811661321b565b6149f8828251613212565b6020810151614a0a6020840182613212565b506040810151614a1d60408401826139df565b506060810151614a306060840182613212565b506080810151614a436080840182613221565b5060a0810151614a5660a0840182613221565b5060c0810151614a6960c0840182613221565b5060e081015161044e60e08401826149d1565b610100810161320c82846149ed565b600060033d111561404d5760046000803e5060005160e01c90565b600060443d1015614ab45790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d016004823e80513d602482011167ffffffffffffffff82111715614afc57505090565b808201805167ffffffffffffffff811115614b18575050505090565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3d8501016020828401011115614b50575050505090565b61352c6020828501018561335a565b67ffffffffffffffff82811682821601908190811115613269576132696141f8565b6000614b8b825190565b83614b9a828260208701613a57565b019392505050565b60006132428284614b81565b600281526000602082017f53410000000000000000000000000000000000000000000000000000000000008152613f9e565b60208152600061320c60208301614bae56fea26469706673582212204cf82481a51b5aeba98e93aaf50551304c3d1440ea1986dcfc34c4cc96a5b1ea64736f6c63430008160033a26469706673582212204b43bfa3c2fcb653fc7d844b7d1dc73cc4b694448b854030d7e34257e2205efa64736f6c6343000816003360806040523480156200001157600080fd5b50604051620011fd380380620011fd8339810160408190526200003491620001c9565b828260036200004483826200035d565b5060046200005382826200035d565b50506005805460ff191660ff9390931692909217909155506200042a915050565b634e487b7160e01b600052604160045260246000fd5b601f19601f83011681016001600160401b0381118282101715620000b257620000b262000074565b6040525050565b6000620000c560405190565b809150620000d483826200008a565b50919050565b60006001600160401b03821115620000f657620000f662000074565b50601f01601f191660200190565b60005b838110156200012157818101518382015260200162000107565b50506000910152565b6000620001416200013b84620000da565b620000b9565b8091508381528484840111156200015b576200015b600080fd5b6200016b84602083018562000104565b509392505050565b600082601f830112620001895762000189600080fd5b6200019a838351602085016200012a565b9392505050565b60ff81168114620001b157600080fd5b50565b805180620001c281620001a1565b5092915050565b600080600060608486031215620001e357620001e3600080fd5b83516001600160401b03811115620001fe57620001fe600080fd5b6200020c8682870162000173565b602086015190945090506001600160401b038111156200022f576200022f600080fd5b6200023d8682870162000173565b9250506200024f8560408601620001b4565b90509250925092565b634e487b7160e01b600052602260045260246000fd5b600181811c9081908316806200028557607f821692505b6020831081036200029a576200029a62000258565b5050919050565b6000620002b2620002af8381565b90565b92915050565b620002e1620002cb620002af85620002a1565b8254600385901b91821b60001990921b19161790565b90555050565b620002f560008383620002b8565b5050565b81811015620002f5576200030f600082620002e7565b600101620002f9565b601f8211156200035857600081815260209020601f840160051c81016020851015620003415750805b62000355601f850160051c830182620002f9565b50505b505050565b81516001600160401b0381111562000379576200037962000074565b62000391816200038a84546200026e565b8462000318565b6020601f821160018114620003ca5760008315620003af5750848201515b600019600385901b1c198116600185901b1785555062000355565b600084815260208120601f198516915b82811015620003fc5787850151825560209485019460019092019101620003da565b50848210156200041b5783870151600019600387901b60f8161c191681555b50505050600190811b01905550565b610dc3806200043a6000396000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c806340c10f1911610081578063a457c2d71161005b578063a457c2d7146101b4578063a9059cbb146101c7578063dd62ed3e146101da57600080fd5b806340c10f191461016157806370a082311461017657806395d89b41146101ac57600080fd5b806323b872dd116100b257806323b872dd14610128578063313ce5671461013b578063395093511461014e57600080fd5b806306fdde03146100d9578063095ea7b3146100f757806318160ddd14610117575b600080fd5b6100e1610220565b6040516100ee919061084f565b60405180910390f35b61010a6101053660046108c3565b6102b2565b6040516100ee9190610905565b6002545b6040516100ee9190610919565b61010a610136366004610927565b6102cc565b60055460ff166040516100ee9190610979565b61010a61015c3660046108c3565b6102f0565b61017461016f3660046108c3565b61033c565b005b61011b610184366004610987565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100e161034a565b61010a6101c23660046108c3565b610359565b61010a6101d53660046108c3565b6103dd565b61011b6101e83660046109a6565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461022f90610a04565b80601f016020809104026020016040519081016040528092919081815260200182805461025b90610a04565b80156102a85780601f1061027d576101008083540402835291602001916102a8565b820191906000526020600020905b81548152906001019060200180831161028b57829003601f168201915b5050505050905090565b6000336102c08185856103eb565b60019150505b92915050565b6000336102da8582856104fa565b6102e58585856105a1565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906102c09082908690610337908790610a62565b6103eb565b6103468282610713565b5050565b60606004805461022f90610a04565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156103d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610adc565b60405180910390fd5b6102e582868684036103eb565b6000336102c08185856105a1565b73ffffffffffffffffffffffffffffffffffffffff8316610438576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610b46565b73ffffffffffffffffffffffffffffffffffffffff8216610485576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610bb0565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906104ed908590610919565b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461059b578181101561058e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610bf9565b61059b84848484036103eb565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166105ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610c63565b73ffffffffffffffffffffffffffffffffffffffff821661063b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610ccd565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020548181101561069b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610d37565b73ffffffffffffffffffffffffffffffffffffffff80851660008181526020819052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610706908690610919565b60405180910390a361059b565b73ffffffffffffffffffffffffffffffffffffffff8216610760576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c790610d7b565b80600260008282546107729190610a62565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600081815260208190526040808220805485019055517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906107d1908590610919565b60405180910390a35050565b60005b838110156107f85781810151838201526020016107e0565b50506000910152565b600061080b825190565b808452602084016108208282602087016107dd565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011601949350505050565b6020815260006108626020830184610801565b9392505050565b600073ffffffffffffffffffffffffffffffffffffffff82166102c6565b61089081610869565b811461089b57600080fd5b50565b8035806108aa81610887565b5092915050565b80610890565b8035806108aa816108b1565b600080604083850312156108d9576108d9600080fd5b6108e3848461089e565b91506108f284602085016108b7565b90509250929050565b8015155b82525050565b602081016102c682846108fb565b806108ff565b602081016102c68284610913565b60008060006060848603121561093f5761093f600080fd5b610949858561089e565b9250610958856020860161089e565b915061096785604086016108b7565b90509250925092565b60ff81166108ff565b602081016102c68284610970565b60006020828403121561099c5761099c600080fd5b610862838361089e565b600080604083850312156109bc576109bc600080fd5b6109c6848461089e565b91506108f2846020850161089e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600181811c908190831680610a1a57607f821692505b602083108103610a2c57610a2c6109d5565b5050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818101818180821115610a7757610a77610a33565b505092915050565b602581526000602082017f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7781527f207a65726f00000000000000000000000000000000000000000000000000000060208201525b60400192915050565b6020815260006102c660208301610a7f565b602481526000602082017f45524332303a20617070726f76652066726f6d20746865207a65726f2061646481527f72657373000000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610aee565b602281526000602082017f45524332303a20617070726f766520746f20746865207a65726f20616464726581527f73730000000000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610b58565b601d81526000602082017f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000081525b60200192915050565b6020815260006102c660208301610bc2565b602581526000602082017f45524332303a207472616e736665722066726f6d20746865207a65726f20616481527f64726573730000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610c0b565b602381526000602082017f45524332303a207472616e7366657220746f20746865207a65726f206164647281527f65737300000000000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610c75565b602681526000602082017f45524332303a207472616e7366657220616d6f756e742065786365656473206281527f616c616e636500000000000000000000000000000000000000000000000000006020820152610ad3565b6020815260006102c660208301610cdf565b601f81526000602082017f45524332303a206d696e7420746f20746865207a65726f2061646472657373008152610bf0565b6020815260006102c660208301610d4956fea2646970667358221220cd44a198e923f8e5e46b9869f813e11aa59f8930b4361f0f306ac53e161271d264736f6c634300081600336966207468697320697320746865206c617374206c696e65206265666f7265206120726576657274207468656e206d616b65207375726520746f2072756e20666f7267652077697468202d2d7270632d75726c7375636365737366756c6c79206661696c656420746f20657865637574652062656c6f77206c696d69742070726963657375636365737366756c6c79206578656375746564206174206c696d6974207072696365000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000464fb0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000008c9fb0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000008c9f6000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000d2ef60000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000046500a2646970667358221220ec235c3410207ac4a1e58d5ffcb4e1cdc084b9d866ed44ff47754a4db02013ef64736f6c63430008160033", "sourceMap": "257:6879:66:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;444:353;;;:::i;:::-;;877:21:63;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;769:26;;;;;;;;;;;;;;;;:::i;851:20::-;;;;;;;;;2170:134:7;;;:::i;:::-;;;;;;;:::i;705:58:63:-;;;;;;;;;2939:133:7;;;:::i;2640:141::-;;;:::i;5079:824:63:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2667:221::-;;;;;;:::i;:::-;;:::i;2456:178:7:-;;;:::i;:::-;;;;;;;:::i;988:20:63:-;;;;;;;;;;;;;;;;;;;:::i;804:1973:66:-;;;:::i;5341:1792::-;;;:::i;612:87:63:-;;;;;;;;;2310:140:7;;;:::i;:::-;;;;;;;:::i;4062:1272:66:-;;;:::i;2787:146:7:-;;;:::i;2783:1272:66:-;;;:::i;5909:112:63:-;;;:::i;:::-;;;;;;;:::i;824:21::-;;;;;;;;;1875:141:7;;;:::i;1819:584:0:-;;;:::i;344:22:66:-;;;;;;;;;6027:683:63;;;;;;:::i;:::-;;:::i;961:21::-;;;;;;;;;2895:279;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;801:17::-;;;;;;;;;;;;;;;;;;;:::i;4784:289::-;;;;;;:::i;:::-;;:::i;1349:1125::-;;;:::i;2022:142:7:-;;;:::i;2481:179:63:-;;;;;;:::i;:::-;;:::i;1572:26:0:-;;;;;;;;;;;;372:18:66;;;;;;;;;444:353;478:6;:4;:6::i;:::-;504:13;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;494:7:66;:23;;;;;;;;;;;;;;541:34;;;;;:19;;:34;;569:4;;541:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;527:5;:49;;;;;;;;;;;623:4;;:15;;;;;;;;-1:-1:-1;;623:4:66;;;;;:13;;:15;;;;;;;;;;;;;;;:4;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;617:21;;:2;:21;:::i;:::-;607:31;;:7;:31;:::i;:::-;648:4;;666:5;;648:37;;;;;586:52;;-1:-1:-1;648:4:66;;;;;:9;;:37;;666:5;;586:52;;648:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;695:17;731:3;;;;;;;;;;;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;725:20;;:2;:20;:::i;:::-;715:30;;:7;:30;:::i;:::-;755:3;;;772:5;;755:35;;;;;695:50;;-1:-1:-1;755:3:66;;;;;:8;;:35;;772:5;;;;695:50;;755:35;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;468:329;;444:353::o;2170:134:7:-;2217:33;2281:16;2262:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2170:134;:::o;2939:133::-;2985:33;3049:16;3030:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2939:133;:::o;2640:141::-;2688:35;2756:18;2735:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2640:141;:::o;5079:824:63:-;5246:7;;5222:43;;;;;5193:17;;5222:15;;;;;;;:43;;5246:7;;5256:8;;5222:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5688:159:63;;;;;;;;;;;;;;;;;;;;;5773:3;;;;;;;5688:159;;;;5778:10;5688:159;;;;5790:15;5688:159;;;;;;;;;;-1:-1:-1;5688:159:63;;;;;;;;;;;5864:7;;:32;;;;;5688:159;;5864:7;;:24;;:32;;5688:159;;5864:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5857:39;;;5079:824;;;;;;;:::o;2667:221::-;2741:18;2780:1;2762:15;:6;2771;2762:15;:::i;:::-;:19;;;;:::i;:::-;2741:40;-1:-1:-1;2791:17:63;2828:1;2811:14;:6;2820:5;2811:14;:::i;:::-;:18;;;;:::i;:::-;2791:38;;2839:42;2845:10;2857:9;2868:5;2875;2839;:42::i;:::-;;;;;2731:157;;2667:221;;;:::o;2456:178:7:-;2512:48;2601:26;2572:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2456:178;:::o;804:1973:66:-;884:25;;;907:1;884:25;;;;;;;;;847:34;;884:25;;;;-1:-1:-1;;;;;;;;;;;;;;;;;884:25:66;;;;;;;;;;;;-1:-1:-1;;963:28:66;;;989:1;963:28;;;;;;;;;847:62;;-1:-1:-1;919:41:66;;963:28;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;963:28:66;;;;;;;;;;;;;;-1:-1:-1;1019:319:66;;;;;;;;;919:72;;-1:-1:-1;1019:319:66;-1:-1:-1;1019:319:66;;;;1069:268;;;;;;;;;;;;;;;;;1019:319;;;1001:12;1014:1;1001:15;;;;;;;;:::i;:::-;;;;;;;;;;:337;1392:28;;;1418:1;1392:28;;;;;;;;;1348:41;;1392:28;;;;-1:-1:-1;;;;;;;;;;;;;;;;;1392:28:66;;;;;;;;;;;;;;-1:-1:-1;1448:319:66;;;;;;;;;1348:72;;-1:-1:-1;1448:319:66;-1:-1:-1;1448:319:66;;;;1498:268;;;;;;;;;;;;;;;;;1448:319;;;1430:12;1443:1;1430:15;;;;;;;;:::i;:::-;;;;;;;;;;:337;1821:28;;;1847:1;1821:28;;;;;;;;;1777:41;;1821:28;;;;-1:-1:-1;;;;;;;;;;;;;;;;;1821:28:66;;;;;;;;;;;;;;-1:-1:-1;1877:319:66;;;;;;;;;1777:72;;-1:-1:-1;1877:319:66;-1:-1:-1;1877:319:66;;;;1927:268;;;;;;;;;;;;;;;;;1877:319;;;1859:12;1872:1;1859:15;;;;;;;;:::i;:::-;;;;;;:337;;;;2220:36;;;;;;;;2237:5;2220:36;;;;;;2243:12;2220:36;;;2206:8;2215:1;2206:11;;;;;;;;:::i;:::-;;;;;;:50;;;;2280:36;;;;;;;;2297:5;2280:36;;;;;;2303:12;2280:36;;;2266:8;2275:1;2266:11;;;;;;;;:::i;:::-;;;;;;:50;;;;2340:36;;;;;;;;2357:5;2340:36;;;;;;2363:12;2340:36;;;2326:8;2335:1;2326:11;;;;;;;;:::i;:::-;;;;;;:50;;;;2386:31;2421:270;;;;;;;;2453:42;2421:270;;;;;;2497:42;2421:270;;;;;;2553:48;;;;;;;;2568:27;2553:48;;;;;;;;:::i;:::-;;;2597:3;2553:48;;;;;2421:270;;;2603:21;2421:270;;;;2626:4;2421:270;;;;;;;;-1:-1:-1;2421:270:66;;;;2651:20;2421:270;;;;;;;;;;;2719:17;;2386:305;;-1:-1:-1;2701:36:66;;2719:17;;2386:305;;2719:17;;:::i;:::-;;;;;;;;;;;;;2701;:36::i;:::-;2747:5;;:23;;;;;:5;;;;;:16;;:23;;2764:5;;2747:23;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5341:1792;5481:25;;;5504:1;5481:25;;;;;;;;;5444:34;;5481:25;;;;-1:-1:-1;;;;;;;;;;;;;;;;;5481:25:66;;;;;;;;;;;;-1:-1:-1;;5560:28:66;;;5586:1;5560:28;;;;;;;;;5444:62;;-1:-1:-1;5516:41:66;;5560:28;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;5560:28:66;;;;;;;;;;;;;;;5516:72;;5598:13;5632:5;5614:7;:5;:7::i;:::-;:15;;5624:5;5614:15;:::i;:::-;:23;;;;:::i;:::-;5716:49;;;;;;;;5740:4;5716:49;;5678:23;5716:49;;;;;;;;;;;;;;;;;;;;;;;;;;5704:63;;5598:39;;-1:-1:-1;5678:23:66;5704:63;;;;:::i;:::-;;;;;;;;;;;5795:61;;;;;;5704:63;-1:-1:-1;5704:63:66;5815:28;5795:61;;;;5845:10;5795:61;;;5777:12;5790:1;5777:15;;;;;;;;:::i;:::-;;;;;;:79;;;;5880:47;;;;;;;;5897:16;5880:47;;;;;;5914:12;5880:47;;;5866:8;5875:1;5866:11;;;;;;;;:::i;:::-;;;;;;:61;;;;5937:15;5965:6;;;;;;;;;;;5937:35;;5982:14;6024:2;6005:5;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6001:20;;:2;:20;:::i;:::-;5999:22;;:1;:22;:::i;:::-;:27;;;;:::i;:::-;6077:5;;6058:34;;;;;5982:44;;-1:-1:-1;6058:10:66;;;;;;;:34;;6077:5;;5982:44;;6058:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6137:188:66;;;;;;;;6169:6;;;;;;6137:188;;6177:6;;;;6137:188;;;;;;;;6205:48;;;;;;;6169:6;6205:48;;;6249:3;;;;;;;6205:48;;;;6137:188;;;;;;;;;;;;;;;;;-1:-1:-1;6137:188:66;;;;;;350:16:54;6137:188:66;;;;;;;;;;6355:5;;:21;;;;;;;6137:188;;-1:-1:-1;;;;6355:5:66;;;;:19;;:21;;;;;6137:188;6355:21;;;;;:5;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6386:5;;:23;;;;;6335:41;;-1:-1:-1;6386:5:66;;;:16;;:23;;6403:5;;6386:23;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6419:28;;;;;;;;;;;;;;;;;;:12;:28::i;:::-;6457:30;6475:10;6470:16;;6457:12;:30::i;:::-;6514:10;;;;;;;;;;;;;;;;6498:27;;;;;:15;;;;:27;;6514:10;6498:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6535:5:66;;6564:22;;;;;;;;6535:5;6564:22;;;6535:52;;;;;:5;;;;;-1:-1:-1;6535:13:66;;-1:-1:-1;6535:52:66;;6549:10;;6535:5;6564:22;6535:52;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6628:64;;;;;;;;;;;;;;;;;;:12;:64::i;:::-;6703:18;6715:5;6703:11;:18::i;:::-;6782:10;;;;;;;;;;;;;;;;6766:27;;;;;:15;;;;:27;;6782:10;6766:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6881:5:66;;6910:22;;;;;;;;6881:5;6910:22;;;6881:52;;;;;:5;;;;;-1:-1:-1;6881:13:66;;-1:-1:-1;6881:52:66;;6895:10;;6881:5;6910:22;6881:52;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6993:30;7017:5;7005;7011;7005:11;;;;:::i;:::-;:17;;;;:::i;6993:30::-;7074:52;;;;;;;;;;;;;;;;;;:12;:52::i;:::-;5381:1752;;;;;;;;5341:1792::o;2310:140:7:-;2358:34;2425:18;2404:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4062:1272:66;4154:25;;;4177:1;4154:25;;;;;;;;;4117:34;;4154:25;;;;-1:-1:-1;;;;;;;;;;;;;;;;;4154:25:66;;;;;;;;;;;;-1:-1:-1;;4233:28:66;;;4259:1;4233:28;;;;;;;;;4117:62;;-1:-1:-1;4189:41:66;;4233:28;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;4233:28:66;;;;;;;;;;;;;;-1:-1:-1;4289:319:66;;;;;;;;;4189:72;;-1:-1:-1;4289:319:66;-1:-1:-1;4289:319:66;;;;4339:268;;;;;;;;;;;;;;;;;4289:319;;;4271:12;4284:1;4271:15;;;;;;;;:::i;:::-;;;;;;:337;;;;4632:47;;;;;;;;4649:16;4632:47;;;;;;4666:12;4632:47;;;4618:8;4627:1;4618:11;;;;;;;;:::i;:::-;;;;;;:61;;;;4689:14;4730:2;4712:4;;;;;;;;;;;:13;;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4708:19;;:2;:19;:::i;:::-;4706:21;;:1;:21;:::i;:::-;:26;;;;:::i;:::-;4754:4;;4772:5;;4754:33;;;;;4689:43;;-1:-1:-1;4754:4:66;;;;;:9;;:33;;4772:5;;4689:43;;4754:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4855:214:66;;;;;;;;4895:4;;;;;;4855:214;;4910:3;;;;;4855:214;;;;;;;;4949:48;;;;;;;4895:4;4949:48;;;4993:3;;;;;;;4949:48;;;;4855:214;;;;;;;;;;;;;;;;;-1:-1:-1;4855:214:66;;;;;;350:16:54;4855:214:66;;;;;;;;;;5099:5;;:21;;;;;;;4855:214;;-1:-1:-1;;;;5099:5:66;;;;:19;;:21;;;;4855:214;5099:21;;;;;;;:5;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5130:5;;:23;;;;;5079:41;;-1:-1:-1;5130:5:66;;;:16;;:23;;5147:5;;5130:23;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5163:28;;;;;;;;;;;;;;;;;;:12;:28::i;:::-;5201:30;5219:10;5214:16;;5201:12;:30::i;:::-;5241:5;;5270:22;;;;;;;;5241:5;5270:22;;;5241:52;;;;;:5;;;;;:13;;:52;;5255:10;;5241:52;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5303:24;;;;;;;;;;;;;;;;;;:12;:24::i;:::-;4107:1227;;;;;4062:1272::o;2787:146:7:-;2835:40;2908:18;2887:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2783:1272:66;2876:25;;;2899:1;2876:25;;;;;;;;;2839:34;;2876:25;;;;-1:-1:-1;;;;;;;;;;;;;;;;;2876:25:66;;;;;;;;;;;;-1:-1:-1;;2955:28:66;;;2981:1;2955:28;;;;;;;;;2839:62;;-1:-1:-1;2911:41:66;;2955:28;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;2955:28:66;;;;;;;;;;;;;;-1:-1:-1;3011:319:66;;;;;;;;;2911:72;;-1:-1:-1;3011:319:66;-1:-1:-1;3011:319:66;;;;3061:268;;;;;;;;;;;;;;;;;3011:319;;;2993:12;3006:1;2993:15;;;;;;;;:::i;:::-;;;;;;:337;;;;3354:47;;;;;;;;3371:16;3354:47;;;;;;3388:12;3354:47;;;3340:8;3349:1;3340:11;;;;;;;;:::i;:::-;;;;;;:61;;;;3411:14;3451:2;3434:3;;;;;;;;;;;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3430:18;;:2;:18;:::i;:::-;3428:20;;:1;:20;:::i;:::-;:25;;;;:::i;:::-;3474:4;;3492:5;;3474:33;;;;;3411:42;;-1:-1:-1;3474:4:66;;;;;:9;;:33;;3492:5;;3411:42;;3474:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3575:215:66;;;;;;;;3615:4;;;;;;3575:215;;3630:3;;;;;3575:215;;;;;;;;3669:48;;;;;;;3615:4;3669:48;;3713:3;3669:48;;;;3575:215;;;;;;;;;;-1:-1:-1;3575:215:66;;;;;;;;;;;;350:16:54;3575:215:66;;;;;;;;;;3820:5;;:21;;;;;;;3575:215;;-1:-1:-1;;;;3820:5:66;;;;:19;;:21;;;;3575:215;3820:21;;;;;;;:5;:21;;;;;;;;;;;;;;5909:112:63;6002:4;;:12;;;;;;;;5947:20;;6002:4;;;:10;;:12;;;;;;;;;;;;;;:4;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5979:35:63;;5909:112;-1:-1:-1;;;;;;5909:112:63:o;1875:141:7:-;1924:34;1991:18;1970:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1819:584:0;1873:7;;1853:4;;1873:7;;;;;1869:528;;;-1:-1:-1;1903:7:0;;;;;;;;1819:584::o;1869:528::-;1941:17;2997:42;2985:55;3066:16;1980:374;;2196:43;;2023:20;;1671:64;;2135:34;;2196:43;;1671:64;;2221:17;;2196:43;;;:::i;:::-;;;;;;;;;;;;;;;2086:175;;;2196:43;2086:175;;:::i;:::-;;;;;;;;;;;;;;;2047:232;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2020:259;;;2323:7;2312:27;;;;;;;;;;;;:::i;:::-;2297:42;;2002:352;1980:374;2374:12;1819:584;-1:-1:-1;1819:584:0:o;6027:683:63:-;6092:27;;;;;;;;;;;;;;;;;;:12;:27::i;:::-;6129:31;6142:17;6129:31;;:12;:31::i;:::-;6170:16;6189:7;:5;:7::i;:::-;6170:26;;6206:22;6219:8;6206:22;;:12;:22::i;:::-;6254:17;6242:29;;:8;:29;;;6238:55;;6286:7;6027:683;:::o;6238:55::-;6302:17;6333;6322:28;;:8;:28;;;:68;;6383:6;;;;6322:68;;;6363:6;;;;6322:68;6302:88;;6400:18;6432:17;6421:28;;:8;:28;;;:68;;6482:6;;;;6421:68;;;6462:6;;;;6421:68;6612:33;;;;;6400:89;;-1:-1:-1;6596:6:63;;6612:12;;;;;;:33;;6633:4;;6596:6;;6612:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6655:48;6660:7;6669:8;6679:4;6685:17;6655:4;:48::i;2895:279::-;3004:15;3029:17;3056:15;3081;3124:43;3131:10;3143:9;3154:5;3161;3124:6;:43::i;:::-;3117:50;;;;-1:-1:-1;3117:50:63;-1:-1:-1;3117:50:63;;-1:-1:-1;2895:279:63;-1:-1:-1;;;;;2895:279:63:o;4784:289::-;4871:17;4900:13;4936:4;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4916:33;;4924:7;4916:33;;;:93;;4982:27;5008:1;997:49:38;4982:27:63;:::i;:::-;4916:93;;;4952:27;817:10:38;4978:1:63;4952:27;:::i;:::-;4900:109;;5026:40;5031:7;5040:8;5050;5060:5;5026:4;:40::i;:::-;5019:47;;;4784:289;;;;;;:::o;1349:1125::-;1436:2;1389:50;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1382:4:63;:57;;;;;;;;;;;;;;;1449:19;;;;;;;;;;;;;;;;;;;:12;:19::i;:::-;1499:4;;1478:27;;1499:4;;1478:12;:27::i;:::-;1563:1;1521:44;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1515:3:63;:50;;;;;;;;;;;;;;;1575:20;;;;;;;;;;;;;;;;;;;:12;:20::i;:::-;1626:3;;1605:26;;1626:3;;1605:12;:26::i;:::-;1641:3;:9;;;;;;;;1695:3;;1679:4;;1660:8;:39;;;;1641:9;1695:3;;;;1679:4;;;;1671:28;;;;1660:39;;;;;;;;;;;1718:8;;;:39;;1752:4;;;;1718:39;;;1737:3;;;;1718:39;1709:6;:48;;;;;;;;;;;;;;;1776:8;;;;;;;:39;;1811:3;;;;1776:39;;;1795:4;;;;1776:39;1767:6;:48;;;;;;;;;;;;;;;;;-1:-1:-1;;1848:8:63;;;;;:90;;1914:23;1848:90;;;1867:35;1848:90;1825:113;;1957:99;;;;;;;;;;;;;;;;;;:12;:99::i;:::-;2188:4;;2228:6;;2236;;2244:3;;2188:74;;;;;:4;;;;;:39;;:74;;2228:6;;;;2236;;;2244:3;;;;;;;2249:12;;2188:74;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2166:4;:97;;;;;;;;;;;;;;;2273:23;;;;;;;;;;;;;;;;;;;:12;:23::i;:::-;2327:4;;2306:27;;2327:4;;2306:12;:27::i;:::-;2412:55;2418:10;477:7:38;637:9;477:7;637:9;:::i;2412:55:63:-;1372:1102;1349:1125::o;2022:142:7:-;2071:35;2139:18;2118:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2022:142;:::o;2481:179:63:-;2556:1;2550:5;:7;;;2542:16;;;;;;2594:4;;:12;;;;;;;;2571:10;;2594:4;;;:10;;:12;;;;;;;;;;;;;;:4;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2568:38;;;;;;;;2616:37;2622:6;2635:5;2630:4;:10;;;;:::i;:::-;2642;2647:5;2642:4;:10;:::i;2616:37::-;2532:128;2481:179;;:::o;2125:124:16:-;2184:58;2238:2;2200:41;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;2184:15;:58::i;6598:121::-;6653:59;6708:2;6669:42;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;6653:15;:59::i;6356:116::-;6405:60;6461:2;6421:43;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;6405:15;:60::i;3180:1597:63:-;3516:4;;:36;;;;;3291:15;;;;;;;;3516:4;;;;;:9;;:36;;3534:4;;3541:10;;3516:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3562:4:63;;;3583;3562:39;;;;;:4;;;;;-1:-1:-1;3562:12:63;;-1:-1:-1;3562:39:63;;3583:4;;;;3590:10;;3562:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3650:3:63;;;:34;;;;;:3;;;;;:8;;:34;;3667:4;;3674:9;;3650:34;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3694:3:63;;;;3714:4;3694:37;;;;;:3;;;;;-1:-1:-1;3694:11:63;;-1:-1:-1;3694:37:63;;3714:4;;;;;3721:9;;3694:37;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;4240:4:63;;:18;;;;;;;;4229:8;;4240:4;;;:16;;:18;;;;;;;;;;;;;;:4;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4276:25;;;;;4229:29;;-1:-1:-1;4276:4:63;;:14;;:25;;4291:5;;4229:29;;4276:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4319;;;;;4268:33;;-1:-1:-1;4319:4:63;;:14;;:25;;4334:5;;4341:2;;4319:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4409:166;;;;;;;;4469:4;;;;;;4409:166;;4484:3;;;;;4409:166;;;;4490:3;;;;;;;;4409:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4409:166:63;;;;;;4469:4;4409:166;;;;;4538:10;4409:166;;;;4550:15;4409:166;;;;4626:4;:17;;;;;4409:166;;-1:-1:-1;4409:166:63;;4626:4;;;:9;;:17;;4409:166;;4626:17;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4653:22;;;;;;;;;;;;;;;;;4585:58;;-1:-1:-1;4585:58:63;;-1:-1:-1;4585:58:63;-1:-1:-1;4585:58:63;-1:-1:-1;4653:22:63;;:12;:22::i;:::-;4685:23;4698:9;4685:23;;:12;:23::i;:::-;4718:21;4731:7;4718:12;:21::i;:::-;4749;4762:7;4749:12;:21::i;:::-;3394:1383;;3180:1597;;;;;;;;;:::o;6841:116:16:-;6890:60;6946:2;6906:43;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;868:133;939:55;986:7;1105:14;;591:42;1278:2;1265:16;;1081:21;;1105:14;1265:16;591:42;1314:5;1303:68;1294:77;;1231:150;;1007:380;:::o;-1:-1:-1:-;;;;;;;;:::o;:::-;;;;;;;;:::o;147:96:69:-;182:7;93:42;82:54;;215:22;204:33;147:96;-1:-1:-1;;147:96:69:o;248:95::-;314:22;330:5;314:22;:::i;:::-;309:3;302:35;;;248:95::o;348:189::-;482:2;467:18;;494:37;471:9;513:6;494:37;:::i;599:138::-;645:9;93:42;82:54;;682:49;14:128;742:122;788:9;825:33;852:5;825:33;:::i;869:138::-;931:9;968:33;995:5;968:33;:::i;1012:138::-;1094:49;1137:5;1094:49;:::i;1155:229::-;1313:2;1298:18;;1325:53;1302:9;1360:6;1325:53;:::i;2343:164::-;2422:42;2460:3;2452:6;2422:42;:::i;:::-;-1:-1:-1;2496:4:69;2487:14;;2343:164::o;2605:506::-;2658:3;2690:37;2721:5;1957:12;;1884:87;2690:37;2074:19;;;2126:4;2117:14;;;;2211;;2882:1;2892:194;2906:6;2903:1;2900:13;2892:194;;;2962:48;3006:3;2997:6;2991:13;2962:48;:::i;:::-;2955:55;-1:-1:-1;2220:4:69;2211:14;;3023:53;-1:-1:-1;2928:1:69;2921:9;2892:194;;;-1:-1:-1;3102:3:69;;2605:506;-1:-1:-1;;;;2605:506:69:o;3116:261::-;3295:2;3284:9;3277:21;3258:4;3315:56;3367:2;3356:9;3352:18;3344:6;3315:56;:::i;4001:107::-;4047:7;4080:22;4096:5;4080:22;:::i;4113:144::-;4199:33;4226:5;4199:33;:::i;:::-;4192:5;4189:44;4179:72;;4247:1;4244;4237:12;4262:194;4352:20;;;4406:44;4352:20;4406:44;:::i;:::-;;4262:194;;;;:::o;4533:122::-;4624:5;4608:22;542:52;4660:172;4739:20;;;4793:33;4739:20;4793:33;:::i;4837:122::-;93:42;82:54;;4912:22;14:128;4964:172;5043:20;;;5097:33;5043:20;5097:33;:::i;5141:600::-;5265:6;5273;5281;5289;5342:3;5330:9;5321:7;5317:23;5313:33;5310:148;;;5369:79;257:6879:66;;;5369:79:69;5477:49;5518:7;5507:9;5477:49;:::i;:::-;5467:59;;5545:58;5595:7;5590:2;5579:9;5575:18;5545:58;:::i;:::-;5535:68;;5622:47;5661:7;5656:2;5645:9;5641:18;5622:47;:::i;:::-;5612:57;;5688:47;5727:7;5722:2;5711:9;5707:18;5688:47;:::i;:::-;5678:57;;5141:600;;;;;;;:::o;5746:106::-;5839:5;5823:22;542:52;5857:200;5991:2;5976:18;;6003:48;5980:9;6033:6;6003:48;:::i;6159:118::-;6232:20;6246:5;6139:1;6128:20;;6062:92;6282:168;6359:20;;;6413:31;6359:20;6413:31;:::i;6455:448::-;6528:6;6536;6544;6597:2;6585:9;6576:7;6572:23;6568:32;6565:147;;;6623:79;257:6879:66;;;6623:79:69;6731:38;6761:7;6750:9;6731:38;:::i;:::-;6721:48;;6788:45;6825:7;6820:2;6809:9;6805:18;6788:45;:::i;:::-;6778:55;;6852:45;6889:7;6884:2;6873:9;6869:18;6852:45;:::i;:::-;6842:55;;6455:448;;;;;:::o;7793:93::-;7715:66;7704:78;;7858:21;7637:151;7891;7969:30;7995:3;7987:6;7969:30;:::i;8139:500::-;8191:3;8223:36;8253:5;1957:12;;1884:87;8223:36;2074:19;;;2126:4;2117:14;;;;2211;;8412:1;8422:192;8436:6;8433:1;8430:13;8422:192;;;8492:47;8535:3;8526:6;8520:13;8492:47;:::i;:::-;8485:54;-1:-1:-1;2220:4:69;2211:14;;8552:52;-1:-1:-1;8458:1:69;8451:9;8422:192;;8644:289;8717:48;8761:3;8753:5;8747:12;8717:48;:::i;:::-;8699:3;8811:4;8804:5;8800:16;8794:23;8849:4;8842;8837:3;8833:14;8826:28;8870:57;8921:4;8916:3;8912:14;8898:12;8870:57;:::i;8938:154::-;9004:10;9043:43;9082:3;9074:6;9043:43;:::i;9202:731::-;9267:3;9299:49;9342:5;1957:12;;1884:87;9299:49;2074:19;;;2126:4;2117:14;;9457:5;9450:12;;9501:6;9498:1;9494:14;9487:5;9483:26;9532:51;9577:5;2220:4;2211:14;;2142:85;9532:51;9601:1;9611:296;9625:6;9622:1;9619:13;9611:296;;;9696:5;9690:4;9686:16;9681:3;9674:29;9724:61;9780:4;9771:6;9765:13;9724:61;:::i;:::-;9716:69;-1:-1:-1;2220:4:69;2211:14;;9892:4;9883:14;;;;;9798:65;-1:-1:-1;9647:1:69;9640:9;9611:296;;;-1:-1:-1;9923:4:69;;9202:731;-1:-1:-1;;;;;;9202:731:69:o;9938:333::-;10177:2;10166:9;10159:21;10140:4;10197:68;10261:2;10250:9;10246:18;10238:6;10197:68;:::i;10373:97::-;10348:13;;10341:21;10444:19;10276:92;10475:188;10603:2;10588:18;;10615:42;10592:9;10639:6;10615:42;:::i;11834:250::-;11919:1;11929:113;11943:6;11940:1;11937:13;11929:113;;;12019:11;;;12013:18;12000:11;;;11993:39;11965:2;11958:10;11929:113;;;-1:-1:-1;;12076:1:69;12058:16;;12051:27;11834:250::o;12256:317::-;12309:3;12341:26;12361:5;1957:12;;1884:87;12341:26;2074:19;;;2126:4;2117:14;;12446:67;12506:6;12499:5;12492:4;12485:5;12481:16;12446:67;:::i;:::-;12178:66;12173:2;12162:14;;12158:87;12529:38;;12256:317;-1:-1:-1;;;;12256:317:69:o;12578:139::-;12631:10;12670:41;12707:3;12699:6;12670:41;:::i;12814:653::-;12866:3;12898:36;12928:5;1957:12;;1884:87;12898:36;2074:19;;;2126:4;2117:14;;13030:5;13023:12;;13074:6;13071:1;13067:14;13060:5;13056:26;13105:38;13137:5;2220:4;2211:14;;2142:85;13105:38;13161:1;13171:270;13185:6;13182:1;13179:13;13171:270;;;13256:5;13250:4;13246:16;13241:3;13234:29;13284:48;13327:4;13318:6;13312:13;13284:48;:::i;:::-;13276:56;-1:-1:-1;2220:4:69;2211:14;;13426:4;13417:14;;;;;13345:52;-1:-1:-1;13207:1:69;13200:9;13171:270;;13472:280;13671:2;13660:9;13653:21;13634:4;13691:55;13742:2;13731:9;13727:18;13719:6;13691:55;:::i;13757:106::-;93:42;82:54;;13834:22;14:128;13868:200;14002:2;13987:18;;14014:48;13991:9;14044:6;14014:48;:::i;14558:290::-;14617:6;14670:2;14658:9;14649:7;14645:23;14641:32;14638:147;;;14696:79;257:6879:66;;;14696:79:69;14804:38;14834:7;14823:9;14804:38;:::i;14853:532::-;14935:6;14943;14951;14959;15012:3;15000:9;14991:7;14987:23;14983:33;14980:148;;;15039:79;257:6879:66;;;15039:79:69;15147:38;15177:7;15166:9;15147:38;:::i;:::-;15137:48;;15204:47;15243:7;15238:2;15227:9;15223:18;15204:47;:::i;:::-;15194:57;;15270:45;15307:7;15302:2;15291:9;15287:18;15270:45;:::i;:::-;15260:55;;15334:45;15371:7;15366:2;15355:9;15351:18;15334:45;:::i;15515:95::-;15469:34;15458:46;;15581:22;15390:120;15615:472;15833:3;15818:19;;15846:48;15822:9;15876:6;15846:48;:::i;:::-;15903:46;15945:2;15934:9;15930:18;15922:6;15903:46;:::i;:::-;15958:57;16011:2;16000:9;15996:18;15988:6;15958:57;:::i;:::-;16024;16077:2;16066:9;16062:18;16054:6;16024:57;:::i;:::-;15615:472;;;;;;;:::o;16190:93::-;16170:8;16159:20;;16255:21;16092:93;16288:186;16420:2;16405:18;;16432:36;16409:9;16450:6;16432:36;:::i;16479:516::-;16594:6;16602;16610;16663:2;16651:9;16642:7;16638:23;16634:32;16631:147;;;16689:79;257:6879:66;;;16689:79:69;16797:49;16838:7;16827:9;16797:49;:::i;:::-;16787:59;;16865:58;16915:7;16910:2;16899:9;16895:18;16865:58;:::i;:::-;16855:68;;16942:47;16981:7;16976:2;16965:9;16961:18;16942:47;:::i;17000:369::-;17066:6;17074;17127:2;17115:9;17106:7;17102:23;17098:32;17095:147;;;17153:79;257:6879:66;;;17153:79:69;17261:38;17291:7;17280:9;17261:38;:::i;:::-;17251:48;;17318:45;17355:7;17350:2;17339:9;17335:18;17318:45;:::i;:::-;17308:55;;17000:369;;;;;:::o;18125:138::-;18208:30;18232:5;18208:30;:::i;18268:192::-;18366:13;;;18413:41;18366:13;18413:41;:::i;18465:328::-;18543:6;18596:2;18584:9;18575:7;18571:23;18567:32;18564:147;;;18622:79;257:6879:66;;;18622:79:69;18730:57;18779:7;18768:9;18730:57;:::i;18879:118::-;18867:4;18856:16;;18952:20;18798:76;19002:172;19090:13;;;19137:31;19090:13;19137:31;:::i;19179:308::-;19247:6;19300:2;19288:9;19279:7;19275:23;19271:32;19268:147;;;19326:79;257:6879:66;;;19326:79:69;19434:47;19473:7;19462:9;19434:47;:::i;19492:184::-;19544:77;19541:1;19534:88;19641:4;19638:1;19631:15;19665:4;19662:1;19655:15;19768:402;19864:6;19887:5;19901:263;19922:1;19912:8;19909:15;19901:263;;;19972:4;19967:3;19963:14;19957:4;19954:24;19951:50;;;19981:18;;:::i;:::-;20031:1;20021:8;20017:16;20014:49;;;20045:16;;;;20014:49;20084:15;;20124:30;20145:8;19752:1;19748:13;;19681:82;20124:30;20112:42;;19901:263;;;19768:402;;;;;;;:::o;20175:996::-;20229:5;20259:8;20249:80;;-1:-1:-1;20300:1:69;20314:5;;20249:80;20348:4;20338:76;;-1:-1:-1;20385:1:69;20399:5;;20338:76;20430:4;20448:1;20443:59;;;;20516:1;20511:220;;;;20423:308;;20443:59;20473:1;20464:10;;20487:5;;;20511:220;20548:3;20538:8;20535:17;20532:43;;;20555:18;;:::i;:::-;20617:1;20607:8;20603:16;20641:7;20632:16;;20676:3;20667:7;20664:16;20661:42;;;20683:18;;:::i;:::-;20661:42;20716:5;;;20423:308;;20815:2;20805:8;20802:16;20796:3;20790:4;20787:13;20783:36;20777:2;20767:8;20764:16;20759:2;20753:4;20750:12;20746:35;20743:77;20740:249;;;-1:-1:-1;20858:19:69;;;;20922:16;;;20919:42;;;20941:18;;:::i;:::-;20919:42;20974:5;;20740:249;21021:42;21059:3;21049:8;21043:4;21040:1;21021:42;:::i;:::-;21096:6;21091:3;21087:16;21078:7;21075:29;21072:55;;;21107:18;;:::i;:::-;21145:20;;20175:996;-1:-1:-1;;;;20175:996:69:o;21176:258::-;21234:5;21284:4;21307:121;21361:66;18867:4;18856:16;;21328:6;21307:121;:::i;21439:308::-;21479:7;21528:1;21566;21610:13;;;21594:30;21644:9;21633:20;;21711:3;21700:9;21696:19;21691:3;21688:28;21682:3;21675:11;21672:45;21662:79;;21721:18;;:::i;:::-;21662:79;;;21439:308;;;;:::o;21752:283::-;21914:2;21899:18;;21926:37;21903:9;21945:6;21926:37;:::i;:::-;21972:57;22025:2;22014:9;22010:18;22002:6;21972:57;:::i;22040:116::-;10348:13;;10341:21;22112:19;10276:92;22161:170;22248:13;;;22295:30;22248:13;22295:30;:::i;22336:306::-;22403:6;22456:2;22444:9;22435:7;22431:23;22427:32;22424:147;;;22482:79;257:6879:66;;;22482:79:69;22590:46;22628:7;22617:9;22590:46;:::i;22955:948::-;23031:48;23075:3;23067:5;23061:12;23031:48;:::i;:::-;23125:4;23118:5;23114:16;23108:23;23140:59;23193:4;23188:3;23184:14;23170:12;23140:59;:::i;:::-;;23247:4;23240:5;23236:16;23230:23;23262:59;23315:4;23310:3;23306:14;23290;23262:59;:::i;:::-;;23369:4;23362:5;23358:16;23352:23;23384:61;23439:4;23434:3;23430:14;23414;23384:61;:::i;:::-;;23493:4;23486:5;23482:16;23476:23;23508:50;23552:4;23547:3;23543:14;23527;23508:50;:::i;:::-;;23606:4;23599:5;23595:16;23589:23;23621:50;23665:4;23660:3;23656:14;23640;23621:50;:::i;:::-;;23719:4;23712:5;23708:16;23702:23;23734:50;23778:4;23773:3;23769:14;23753;23734:50;:::i;:::-;;23832:4;23825:5;23821:16;23815:23;23847:50;23891:4;23886:3;23882:14;23866;23847:50;:::i;23908:294::-;24124:3;24109:19;;24137:59;24113:9;24178:6;24137:59;:::i;24207:176::-;24297:13;;;24344:33;24297:13;24344:33;:::i;24388:312::-;24458:6;24511:2;24499:9;24490:7;24486:23;24482:32;24479:147;;;24537:79;257:6879:66;;;24537:79:69;24645:49;24686:7;24675:9;24645:49;:::i;24705:184::-;24757:77;24754:1;24747:88;24854:4;24851:1;24844:15;24878:4;24875:1;24868:15;24894:202;24934:1;24977;25015;24999:18;25036:3;25026:37;;25043:18;;:::i;:::-;25077:13;;;24894:202;-1:-1:-1;;;24894:202:69:o;25290:184::-;25342:77;25339:1;25332:88;25439:4;25436:1;25429:15;25463:4;25460:1;25453:15;25479:184;25531:77;25528:1;25521:88;25628:4;25625:1;25618:15;25652:4;25649:1;25642:15;25668:113;25749:1;25742:5;25739:12;25729:46;;25755:18;;:::i;25786:131::-;25860:5;25874:37;25860:5;25874:37;:::i;25922:121::-;25972:9;26009:28;26031:5;26009:28;:::i;26048:116::-;26120:37;26151:5;26120:37;:::i;26169:226::-;26228:43;26267:3;26259:5;26253:12;26228:43;:::i;:::-;26317:4;26310:5;26306:16;26300:23;26332:57;26383:4;26378:3;26374:14;26360:12;26332:57;:::i;26602:93::-;26572:18;26561:30;;26667:21;26494:103;27153:93;27139:6;27128:18;;27218:21;27069:79;27629:119;27716:1;27709:5;27706:12;27696:46;;27722:18;;:::i;27753:143::-;27833:5;27847:43;27833:5;27847:43;:::i;27901:133::-;27957:9;27994:34;28022:5;27994:34;:::i;28039:128::-;28117:43;28154:5;28117:43;:::i;28745:286::-;28816:49;28861:3;28853:5;28847:12;28816:49;:::i;:::-;28798:3;28911:4;28904:5;28900:16;28894:23;28949:4;28942;28937:3;28933:14;28926:28;28970:55;29019:4;29014:3;29010:14;28996:12;28970:55;:::i;29036:150::-;29100:10;29139:41;29176:3;29168:6;29139:41;:::i;29294:719::-;29357:3;29389:47;29430:5;1957:12;;1884:87;29389:47;2074:19;;;2126:4;2117:14;;29543:5;29536:12;;29587:6;29584:1;29580:14;29573:5;29569:26;29618:49;29661:5;2220:4;2211:14;;2142:85;29618:49;29685:1;29695:292;29709:6;29706:1;29703:13;29695:292;;;29780:5;29774:4;29770:16;29765:3;29758:29;29808:59;29862:4;29853:6;29847:13;29808:59;:::i;:::-;29800:67;-1:-1:-1;2220:4:69;2211:14;;29972:4;29963:14;;;;;29880:63;-1:-1:-1;29731:1:69;29724:9;29695:292;;30018:283;30086:36;30118:3;30110:5;30104:12;30086:36;:::i;:::-;30068:3;30168:4;30161:5;30157:16;30151:23;30206:4;30199;30194:3;30190:14;30183:28;30227:68;30289:4;30284:3;30280:14;30266:12;30227:68;:::i;30306:144::-;30367:10;30406:38;30440:3;30432:6;30406:38;:::i;30555:701::-;30615:3;30647:44;30685:5;1957:12;;1884:87;30647:44;2074:19;;;2126:4;2117:14;;30795:5;30788:12;;30839:6;30836:1;30832:14;30825:5;30821:26;30870:46;30910:5;2220:4;2211:14;;2142:85;30870:46;30934:1;30944:286;30958:6;30955:1;30952:13;30944:286;;;31029:5;31023:4;31019:16;31014:3;31007:29;31057:56;31108:4;31099:6;31093:13;31057:56;:::i;:::-;31049:64;-1:-1:-1;2220:4:69;2211:14;;31215:4;31206:14;;;;;31126:60;-1:-1:-1;30980:1:69;30973:9;30944:286;;31261:987;31331:48;31375:3;31367:5;31361:12;31331:48;:::i;:::-;31313:3;31425:4;31418:5;31414:16;31408:23;31440:59;31493:4;31488:3;31484:14;31470:12;31440:59;:::i;:::-;;31547:4;31540:5;31536:16;31530:23;31562:55;31611:4;31606:3;31602:14;31586;31562:55;:::i;:::-;;31665:4;31658:5;31654:16;31648:23;31680:50;31724:4;31719:3;31715:14;31699;31680:50;:::i;:::-;;31778:4;31771:5;31767:16;31761:23;31793:47;31834:4;31829:3;31825:14;31809;31793:47;:::i;:::-;;31888:4;31881:5;31877:16;31871:23;31903:47;31944:4;31939:3;31935:14;31919;31903:47;:::i;:::-;;31998:4;31991:5;31987:16;31981:23;32013:49;32056:4;32051:3;32047:14;32031;32013:49;:::i;:::-;;32110:4;32103:5;32099:16;32093:23;32150:6;32141;32136:3;32132:16;32125:32;32173:69;32234:6;32229:3;32225:16;32209:14;32173:69;:::i;32253:266::-;32438:2;32427:9;32420:21;32401:4;32458:55;32509:2;32498:9;32494:18;32486:6;32458:55;:::i;32524:308::-;32564:7;93:42;82:54;;93:42;82:54;;93:42;32695:13;;;82:54;32679:30;14:128;32837:202;32877:1;93:42;82:54;;93:42;82:54;;32942:18;14:128;33144:93;33122:10;33111:22;;33209:21;33044:95;33341:93;33406:21;33421:5;33320:2;33309:21;;33242:94;33439:551;33507:34;33537:3;33529:5;33523:12;33507:34;:::i;:::-;33587:4;33580:5;33576:16;33570:23;33602:45;33641:4;33636:3;33632:14;33618:12;33602:45;:::i;:::-;;33695:4;33688:5;33684:16;33678:23;33710:49;33753:4;33748:3;33744:14;33728;33710:49;:::i;:::-;;33807:4;33800:5;33796:16;33790:23;33822:50;33866:4;33861:3;33857:14;33841;33822:50;:::i;:::-;;33920:4;33913:5;33909:16;33903:23;33935:49;33978:4;33973:3;33969:14;33953;33935:49;:::i;33995:270::-;34195:3;34180:19;;34208:51;34184:9;34241:6;34208:51;:::i;34270:120::-;26572:18;26561:30;;34344:21;26494:103;34395:174;34484:13;;;34531:32;34484:13;34531:32;:::i;34574:310::-;34643:6;34696:2;34684:9;34675:7;34671:23;34667:32;34664:147;;;34722:79;257:6879:66;;;34722:79:69;34830:48;34870:7;34859:9;34830:48;:::i;35362:228::-;35509:2;35498:9;35491:21;35472:4;35529:55;35580:2;35569:9;35565:18;35557:6;35529:55;:::i;35781:148::-;35833:9;18867:4;18856:16;;35870:53;18798:76;35934:116;36004:39;36037:5;36004:39;:::i;36055:107::-;36119:37;36152:3;36144:5;36138:12;36119:37;:::i;:::-;;;36055:107::o;36167:440::-;36419:2;36404:18;;36431:46;36408:9;36459:6;36431:46;:::i;:::-;36486:50;36532:2;36521:9;36517:18;36509:6;36486:50;:::i;:::-;36545:56;36597:2;36586:9;36582:18;36574:6;36545:56;:::i;36612:184::-;36664:77;36661:1;36654:88;36761:4;36758:1;36751:15;36785:4;36782:1;36775:15;36801:318;36886:1;36882:12;;;;;;36956;;;36977:63;;37033:4;37023:8;37019:19;37009:29;;36977:63;37086:2;37078:6;37075:14;37055:18;37052:38;37049:64;;37093:18;;:::i;:::-;37049:64;;36801:318;;;:::o;37124:176::-;37214:13;;;37261:33;37214:13;37261:33;:::i;37305:172::-;37393:13;;;37440:31;37393:13;37440:31;:::i;37482:120::-;27139:6;27128:18;;37556:21;27069:79;37607:174;37696:13;;;37743:32;37696:13;37743:32;:::i;37786:860::-;37900:6;37908;37916;37924;37932;37940;37948;38001:3;37989:9;37980:7;37976:23;37972:33;37969:148;;;38028:79;257:6879:66;;;38028:79:69;38136:49;38177:7;38166:9;38136:49;:::i;:::-;38126:59;;38204:56;38252:7;38247:2;38236:9;38232:18;38204:56;:::i;:::-;38194:66;;38279:57;38328:7;38323:2;38312:9;38308:18;38279:57;:::i;:::-;38269:67;;38355:57;38404:7;38399:2;38388:9;38384:18;38355:57;:::i;:::-;38345:67;;38431:58;38481:7;38475:3;38464:9;38460:19;38431:58;:::i;:::-;38421:68;;38508:57;38557:7;38551:3;38540:9;38536:19;38508:57;:::i;:::-;38498:67;;38584:56;38632:7;38626:3;38615:9;38611:19;38584:56;:::i;:::-;38574:66;;37786:860;;;;;;;;;;:::o;39438:301::-;39479:3;39511:25;39530:5;1957:12;;1884:87;39511:25;39611:3;39632:67;39692:6;39685:5;39678:4;39671:5;39667:16;39632:67;:::i;:::-;39715:18;;39438:301;-1:-1:-1;;;39438:301:69:o;39744:290::-;39917:58;39971:3;39963:6;39917:58;:::i;:::-;39899:3;39991:37;40025:1;40020:3;40016:11;40008:6;39991:37;:::i;40039:189::-;40168:3;40193:29;40218:3;40210:6;40193:29;:::i;40858:257::-;93:42;82:54;;;;;;40969:28;;;;41032:54;;41029:80;;;41089:18;;:::i;41120:252::-;93:42;82:54;;;;;;41229:28;;;;41290:53;;41287:79;;;41346:18;;:::i;41713:272::-;41842:2;2074:19;;41760:3;2126:4;2117:14;;41677:24;41662:40;;41854:95;41976:2;41965:14;;41713:272;-1:-1:-1;;41713:272:69:o;42130:271::-;42259:1;2074:19;;42177:3;2126:4;2117:14;;42117:5;42102:21;;42270:95;41990:135;42773:610;43111:2;43100:9;43093:21;43074:4;43137:49;43182:2;43171:9;43167:18;43137:49;:::i;:::-;43234:9;43226:6;43222:22;43217:2;43206:9;43202:18;43195:50;43262:37;43292:6;43262:37;:::i;:::-;43254:45;;;43308:69;43373:2;43362:9;43358:18;43350:6;43308:69;:::i;43553:272::-;43682:2;2074:19;;43600:3;2126:4;2117:14;;43523:18;43508:34;;43694:95;43388:160;43971:271;44100:1;2074:19;;44018:3;2126:4;2117:14;;43957:6;43942:22;;44111:95;43830:136;44600:599;44937:2;44926:9;44919:21;44900:4;44963:49;45008:2;44997:9;44993:18;44963:49;:::i;:::-;45060:9;45052:6;45048:22;45043:2;45032:9;45028:18;45021:50;45088:37;45118:6;45088:37;:::i;45204:447::-;45420:3;45405:19;;45433:37;45409:9;45452:6;45433:37;:::i;:::-;45479:46;45521:2;45510:9;45506:18;45498:6;45479:46;:::i;:::-;45534:45;45575:2;45564:9;45560:18;45552:6;45534:45;:::i;:::-;45588:57;45641:2;45630:9;45626:18;45618:6;45588:57;:::i;45656:238::-;45690:3;45723:20;45737:5;6139:1;6128:20;;6062:92;45723:20;45767:66;45758:7;45755:79;45752:105;;45837:18;;:::i;:::-;45877:1;45873:15;;45656:238;-1:-1:-1;;45656:238:69:o;45899:303::-;45937:4;45967:16;45981:1;6139;6128:20;;6062:92;45967:16;46015;46029:1;6139;6128:20;;6062:92;46015:16;46006:26;;;-1:-1:-1;46006:26:69;46082:66;46070:79;;46163:8;46151:21;;46067:106;46064:132;;;46176:18;;:::i;46207:297::-;46245:3;46274:16;46288:1;6139;6128:20;;6062:92;46274:16;46321;46335:1;6139;6128:20;;6062:92;46321:16;46312:26;;-1:-1:-1;46312:26:69;46385:8;46374:20;;46407:66;46396:78;;46371:104;46368:130;;;46478:18;;:::i;47055:308::-;47123:6;47176:2;47164:9;47155:7;47151:23;47147:32;47144:147;;;47202:79;257:6879:66;;;47202:79:69;47310:47;47349:7;47338:9;47310:47;:::i;47368:91::-;47432:20;47446:5;6139:1;6128:20;;6062:92;47464:268;47626:2;47611:18;;47638:35;47615:9;47655:6;47638:35;:::i;:::-;47682:44;47722:2;47711:9;47707:18;47699:6;47682:44;:::i;47842:1301::-;47906:48;47950:3;47942:5;47936:12;47906:48;:::i;:::-;48000:4;47993:5;47989:16;47983:23;48015:59;48068:4;48063:3;48059:14;48045:12;48015:59;:::i;:::-;;48122:4;48115:5;48111:16;48105:23;48137:59;48190:4;48185:3;48181:14;48165;48137:59;:::i;:::-;;48244:4;48237:5;48233:16;48227:23;48259:57;48310:4;48305:3;48301:14;48285;48259:57;:::i;:::-;;48364:4;48357:5;48353:16;48347:23;48379:57;48430:4;48425:3;48421:14;48405;48379:57;:::i;:::-;;48484:4;48477:5;48473:16;48467:23;48499:50;48543:4;48538:3;48534:14;48518;48499:50;:::i;:::-;;48597:4;48590:5;48586:16;48580:23;48612:50;48656:4;48651:3;48647:14;48631;48612:50;:::i;:::-;;48710:4;48703:5;48699:16;48693:23;48725:50;48769:4;48764:3;48760:14;48744;48725:50;:::i;:::-;;48823:6;48816:5;48812:18;48806:25;48840:52;48884:6;48879:3;48875:16;48859:14;48840:52;:::i;:::-;;48940:6;48933:5;48929:18;48923:25;48957:63;49012:6;49007:3;49003:16;48987:14;48957:63;:::i;:::-;;49068:6;49061:5;49057:18;49051:25;49085:52;49129:6;49124:3;49120:16;49104:14;49085:52;:::i;49148:258::-;49340:3;49325:19;;49353:47;49329:9;49382:6;49353:47;:::i;49411:122::-;15469:34;15458:46;;49486:22;15390:120;49538:176;49628:13;;;49675:33;49628:13;49675:33;:::i;49719:595::-;49816:6;49824;49832;49840;49893:3;49881:9;49872:7;49868:23;49864:33;49861:148;;;49920:79;257:6879:66;;;49920:79:69;50028:49;50069:7;50058:9;50028:49;:::i;:::-;50018:59;;50096:58;50146:7;50141:2;50130:9;50126:18;50096:58;:::i;:::-;50086:68;;50173:58;50223:7;50218:2;50207:9;50203:18;50173:58;:::i;:::-;50163:68;;50250:58;50300:7;50295:2;50284:9;50280:18;50250:58;:::i", "linkReferences": { "src/Util.sol": { "Util": [ { "start": 14135, "length": 20 }, { "start": 14290, "length": 20 } ] } } }, "methodIdentifiers": { "COIN()": "a54a72b7", "IS_TEST()": "fa7626d4", "USD()": "1bf6c21b", "excludeArtifacts()": "b5508aa9", "excludeContracts()": "e20c9f71", "excludeSenders()": "1ed7831c", "factory()": "c45a0155", "failed()": "ba414fa6", "fee()": "ddca3f43", "init()": "e1c7392a", "inverted()": "67e368fc", "nfpm()": "7303e913", "pool()": "16f0115b", "price()": "a035b1fe", "setUp()": "0a9254e4", "stake(uint256,int24)": "e3baf41a", "stake(uint256,int24,int24)": "53486e2f", "stake(uint256,uint256,int24,int24)": "d6f13002", "swap(address,address,uint256)": "df791e50", "swap(address,address,uint256,uint160)": "4a09d3dd", "swapToPrice(uint160)": "c578d91d", "swapper()": "2b3297f9", "targetArtifactSelectors()": "66d9a9a0", "targetArtifacts()": "85226c81", "targetContracts()": "3f7286f4", "targetSelectors()": "916a17c6", "targetSenders()": "3e5e3c23", "testExecuteLimitOrder()": "7083accc", "testExecuteOrderExactInput()": "8e3b558a", "testExecuteOrderExactOutput()": "9febdbf7", "testPlaceOrder()": "6fe2ae0e", "token0()": "0dfe1681", "token1()": "d21220a7", "vault()": "fbfa77cf" }, "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"log_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"log_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"log_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"name\":\"log_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"val\",\"type\":\"address\"}],\"name\":\"log_named_address\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"val\",\"type\":\"uint256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256[]\",\"name\":\"val\",\"type\":\"int256[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"val\",\"type\":\"address[]\"}],\"name\":\"log_named_array\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"val\",\"type\":\"bytes\"}],\"name\":\"log_named_bytes\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"val\",\"type\":\"bytes32\"}],\"name\":\"log_named_bytes32\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"decimals\",\"type\":\"uint256\"}],\"name\":\"log_named_decimal_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"val\",\"type\":\"int256\"}],\"name\":\"log_named_int\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"val\",\"type\":\"string\"}],\"name\":\"log_named_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"val\",\"type\":\"uint256\"}],\"name\":\"log_named_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"log_string\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"log_uint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"logs\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"COIN\",\"outputs\":[{\"internalType\":\"contract MockERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"IS_TEST\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"USD\",\"outputs\":[{\"internalType\":\"contract MockERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"excludedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"excludeSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"excludedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"contract Factory\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"failed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fee\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"init\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"inverted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nfpm\",\"outputs\":[{\"internalType\":\"contract INonfungiblePositionManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pool\",\"outputs\":[{\"internalType\":\"contract IUniswapV3Pool\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price\",\"outputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"setUp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"int24\",\"name\":\"lower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"upper\",\"type\":\"int24\"}],\"name\":\"stake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"coinAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"usdAmount\",\"type\":\"uint256\"},{\"internalType\":\"int24\",\"name\":\"lower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"upper\",\"type\":\"int24\"}],\"name\":\"stake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"int24\",\"name\":\"width\",\"type\":\"int24\"}],\"name\":\"stake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract MockERC20\",\"name\":\"inToken\",\"type\":\"address\"},{\"internalType\":\"contract MockERC20\",\"name\":\"outToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract MockERC20\",\"name\":\"inToken\",\"type\":\"address\"},{\"internalType\":\"contract MockERC20\",\"name\":\"outToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"name\":\"swapToPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"swapper\",\"outputs\":[{\"internalType\":\"contract ISwapRouter\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifactSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedArtifactSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetArtifacts\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"targetedArtifacts_\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetContracts\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedContracts_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSelectors\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes4[]\",\"name\":\"selectors\",\"type\":\"bytes4[]\"}],\"internalType\":\"struct StdInvariant.FuzzSelector[]\",\"name\":\"targetedSelectors_\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"targetSenders\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"targetedSenders_\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testExecuteLimitOrder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testExecuteOrderExactInput\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testExecuteOrderExactOutput\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"testPlaceOrder\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"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\"},{\"inputs\":[],\"name\":\"vault\",\"outputs\":[{\"internalType\":\"contract Vault\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"test/TestOrder.sol\":\"TestOrder\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoD[xarrscLMcCTU]uljmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":999999999},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/=lib_uniswap/v3-core/\",\":@uniswap/v3-periphery/=lib_uniswap/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":v3-core/=lib_uniswap/v3-core/\",\":v3-periphery/libraries/=lib_uniswap/v3-periphery/contracts/libraries/\"]},\"sources\":{\"lib/forge-std/lib/ds-test/src/test.sol\":{\"keccak256\":\"0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240\",\"dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k\"]},\"lib/forge-std/src/Base.sol\":{\"keccak256\":\"0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224\",\"dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK\"]},\"lib/forge-std/src/StdAssertions.sol\":{\"keccak256\":\"0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b\",\"dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL\"]},\"lib/forge-std/src/StdChains.sol\":{\"keccak256\":\"0x51e6eb138fc953fac1ac78012a39b3f16d9289ce06a222ba93bb0621768f96e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://653c577e054cf578594148a07b286571d494f401b6d4a940d3ccabd47b29233d\",\"dweb:/ipfs/QmTWDVvR4m82MGXWYY8BCaVN89TguQJSLqRgzHzrMkFHtx\"]},\"lib/forge-std/src/StdCheats.sol\":{\"keccak256\":\"0x2e1b4b99283c16efaf155f7e55ea357943cf6e61fc02aad060534349f63b6cd5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d471a35903e8a367a145ca5b5955caf691c723fe1117c6dcffd928d9f8d7c95a\",\"dweb:/ipfs/QmXGnFUGiX9APL8xit7NZQEYBoEL3wWyW1YyFoJQd2pGPe\"]},\"lib/forge-std/src/StdError.sol\":{\"keccak256\":\"0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6\",\"dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj\"]},\"lib/forge-std/src/StdInvariant.sol\":{\"keccak256\":\"0xf5762db8ef95099bbe77578cd9349511ed77f4dd63ec98cc6b7cd711447830c1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6b0360806a9804eac0f7e07492b5db9c4953c521dabb9a11b17dd610d5b804c\",\"dweb:/ipfs/QmUFozSt3W7drBRdm1cdRow61EABqSLJtkvYZXWmoHUPss\"]},\"lib/forge-std/src/StdJson.sol\":{\"keccak256\":\"0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c\",\"dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV\"]},\"lib/forge-std/src/StdMath.sol\":{\"keccak256\":\"0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92\",\"dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC\"]},\"lib/forge-std/src/StdStorage.sol\":{\"keccak256\":\"0x391a28a2e54aea51a6fb03a3a48035304ca4d24bc669ddf3d4c152c7162e514d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://475fd0d87ccb0fdc4418dea2babffb4adb4aafb817e61f7ef31c2303f10c6c26\",\"dweb:/ipfs/QmQgcgtZxpkW6DRmbJszN1F8mU6zhaTZGdWWsj77yCuWN9\"]},\"lib/forge-std/src/StdStyle.sol\":{\"keccak256\":\"0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8\",\"dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK\"]},\"lib/forge-std/src/StdUtils.sol\":{\"keccak256\":\"0x8758c42ba9d9e46868b796e2330ac239006ede07bd438a4b36dd6f2c47d27dc1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11f5752e0187b1e3631b875efdbe05d45929d05f1c1717105a9115d0a6628140\",\"dweb:/ipfs/QmUKkx9jfsUvjyYBw45RvrW1hTFXDXi2Jv5tbHP86mnzpi\"]},\"lib/forge-std/src/Test.sol\":{\"keccak256\":\"0xf3b62c75cea11a0e8ef8e6526e5e5c74ae47a892b9bcefc0e98d76066e1ffd24\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a41faaf836453e02c71fc272c80b3c90a614b30c9ba636512db0d033c7b93beb\",\"dweb:/ipfs/QmeQAreYYaxztQtFLQdHCzCPEorj9T5foSu2hQmxk7xT5x\"]},\"lib/forge-std/src/Vm.sol\":{\"keccak256\":\"0xb569d0b4398fad95f508fb854e832143edf69a897af4250f5f60fe195a2066c5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84b722ada97ea7bb841cdc0fa556aa36a02ff2d380fa24f6dc0717a71c6d9c7c\",\"dweb:/ipfs/QmfCH9Q4tvJhPM286GFsE4UCP4YncLpRu4Nwa2ZkHdRfbw\"]},\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70\",\"dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec\"]},\"lib/forge-std/src/console2.sol\":{\"keccak256\":\"0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973\",\"dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF\"]},\"lib/forge-std/src/interfaces/IMulticall3.sol\":{\"keccak256\":\"0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0\",\"dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2\"]},\"lib/forge-std/src/safeconsole.sol\":{\"keccak256\":\"0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae\",\"dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x4ffc0547c02ad22925310c585c0f166f8759e2648a09e9b489100c42f15dd98d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://15f52f51413a9de1ff191e2f6367c62178e1df7806d7880fe857a98b0b66253d\",\"dweb:/ipfs/QmaQG1fwfgUt5E9nu2cccFiV47B2V78MM1tCy1qB7n4MsH\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xab28a56179c1db258c9bf5235b382698cb650debecb51b23d12be9e241374b68\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://daae589a9d6fa7e55f99f86c0a16796ca490f243fb3693632c3711c0646c1d56\",\"dweb:/ipfs/QmR3zpd7wNw3rcUdekwiv6FYHJqksuTCXLVioTxu6Fbxk3\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"keccak256\":\"0xd1556954440b31c97a142c6ba07d5cade45f96fafd52091d33a14ebe365aecbf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26fef835622b46a5ba08b3ef6b46a22e94b5f285d0f0fb66b703bd30217d2c34\",\"dweb:/ipfs/QmZ548qdwfL1qF7aXz3xh1GCdTiST81kGGuKRqVUfYmPZR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol\":{\"keccak256\":\"0xcc3d0c93fc9ac0febbe09f941b465b57f750bcf3b48432da0b97dc289cfdc489\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b9379ad954680c44a0bc523b314ae4c4da735f9fe1d02aa56ea5bdba6f1136f2\",\"dweb:/ipfs/QmZXdgQNXKAckrXWz9R3mc47F1fvDvr28a2ewJrwNAw71B\"]},\"lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol\":{\"keccak256\":\"0xfe6113d518466cd6652c85b111e01f33eb62157f49ae5ed7d5a3947a2044adb1\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://1c42b9e6f5902ac38dd43e25750939baa7e0c1425dc75afd717c4412731065d5\",\"dweb:/ipfs/QmWaoacnzsucTvBME2o7YgZBZMhaHv7fkj83htHMVWJKWh\"]},\"lib_uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol\":{\"keccak256\":\"0x3f485fb1a44e8fbeadefb5da07d66edab3cfe809f0ac4074b1e54e3eb3c4cf69\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://095ce0626b41318c772b3ebf19d548282607f6a8f3d6c41c13edfbd5370c8652\",\"dweb:/ipfs/QmVDZfJJ89UUCE1hMyzqpkZAtQ8jUsBgZNE5AMRG7RzRFS\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol\":{\"keccak256\":\"0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5\",\"dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol\":{\"keccak256\":\"0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7\",\"dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol\":{\"keccak256\":\"0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03\",\"dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol\":{\"keccak256\":\"0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047\",\"dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol\":{\"keccak256\":\"0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735\",\"dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u\"]},\"lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol\":{\"keccak256\":\"0x852dc1f5df7dcf7f11e7bb3eed79f0cea72ad4b25f6a9d2c35aafb48925fd49f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ed63907c38ff36b0e22bc9ffc53e791ea74f0d4f0e7c257fdfb5aaf8825b1f0f\",\"dweb:/ipfs/QmSQrckghEjs6HVsA5GVgpNpZWvTXMY5eQLF7cN6deFeEg\"]},\"lib_uniswap/v3-core/contracts/libraries/FixedPoint96.sol\":{\"keccak256\":\"0x0ba8a9b95a956a4050749c0158e928398c447c91469682ca8a7cc7e77a7fe032\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://186d3b528866065a5856f96d2aeec698efa99f8da913e9adf34f8cc296cc993d\",\"dweb:/ipfs/QmUAiMvtAQp8c9dy57bqJYzG7hkb1uChiPaQmt264skoqP\"]},\"lib_uniswap/v3-core/contracts/libraries/FullMath.sol\":{\"keccak256\":\"0x77608bce1ddeb28ed9963b554b55e8a083277eda7be31e2c7255ef532cc408be\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8fcb307cf783b612ab9abd339296391d202974e7aa158deff23d9fb3aaac832d\",\"dweb:/ipfs/QmXhcwQajcGZADQtVoQpSWYNY4tB3Y42GPPyiaW62M5JH2\"]},\"lib_uniswap/v3-core/contracts/libraries/TickMath.sol\":{\"keccak256\":\"0x350d6743e4d8ff3b7f3bcc569919b22dd13e46918a7994d29d7cb5c60080ee4d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://513f138148bd8b28edb0625d27c593b09155a1f71cc3c081659d448d079ca8d3\",\"dweb:/ipfs/QmRhWsD9JhoKLVT9ShUkDC2kYcNneDKXbt3NTHEpDkRZ2G\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IERC721Permit.sol\":{\"keccak256\":\"0x9e3c2a4ee65ddf95b2dfcb0815784eea3a295707e6f8b83e4c4f0f8fe2e3a1d4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://bfd939085b3618101b955f87c7fabf38338ba1aad480295acb8102ebc5d72471\",\"dweb:/ipfs/QmauQD8bGDHTztmTDfaKXjzM7Wacrq2XU7VcTbwn1WrDBL\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/INonfungiblePositionManager.sol\":{\"keccak256\":\"0x3357b065654abb7f4a9ebd184a260bc39efde2afa4e99dca2e72ffc28e9c2984\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f7682dab014724be8e0a5a401b047788ff9c70b77fa5bd567ea6adc333cb3b56\",\"dweb:/ipfs/QmatH1Gc6z3AkP4dHjAEBKfCBbgBfD4vCceF4TuZU2bCyW\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryImmutableState.sol\":{\"keccak256\":\"0x7affcfeb5127c0925a71d6a65345e117c33537523aeca7bc98085ead8452519d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e16b291294210e71cb0f20cd0afe62ae2dc6878d627f5ccc19c4dc9cd80aec3f\",\"dweb:/ipfs/QmQGitSyBr26nour81BZmpmDMyJpvZRqHQZvnCD1Acb127\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryPayments.sol\":{\"keccak256\":\"0xb547e10f1e69bed03621a62b73a503e260643066c6b4054867a4d1fef47eb274\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f9a90f58f5fd5fb42f7811f4094113b532f307b14a73764c91f977590747f407\",\"dweb:/ipfs/QmSeNH2mfiDMKf3Q6V2sqtNxx1s72JNuA1VVxRM9HoMqYp\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/IPoolInitializer.sol\":{\"keccak256\":\"0x9d7695e8d94c22cc5fcced602017aabb988de89981ea7bee29ea629d5328a862\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://61b50933026ee1017db2a6273af8cedc3238c95dca58880db0918dbdbb2f064f\",\"dweb:/ipfs/QmUebR26pqG25d18aBELKz8aFFKkmHa8PxntzXTA7o9Ldu\"]},\"lib_uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol\":{\"keccak256\":\"0x9bfaf1feb32814623e627ab70f2409760b15d95f1f9b058e2b3399a8bb732975\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a8a2c3e55965b61bcd91993d8e1d5d34b8b8a63e0fdfce87a85f6af92526fd53\",\"dweb:/ipfs/QmQj2CSCSwqDSU4KMNWxGsN2336Cy64WgpV1X1EHXNZWxM\"]},\"lib_uniswap/v3-periphery/contracts/libraries/LiquidityAmounts.sol\":{\"keccak256\":\"0xf149581d28e1c81736dfe72be73ee1301d4945340cc6282fcdd63fe3c85abf24\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://0b67f375180bb62fe6753601cd09740496dcdcec4c0a4f9eaa6e94c5e1bb6844\",\"dweb:/ipfs/QmWYwkmqynRq7g81Nijg4eEkPgSRGnegDrbbEKkkTC1k2w\"]},\"lib_uniswap/v3-periphery/contracts/libraries/PoolAddress.sol\":{\"keccak256\":\"0x0a107d09991fd2dc9a3ca13bf0745f0b6f6f6ffea3e55ad3677ecdbadef089b4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e179110a9ec825b7f15384a9c61f90261fe6227b289dac9996b0ed9cf1655b48\",\"dweb:/ipfs/Qma2amC8zJSW2PzPCk1nBYiFd4mjZiAW9z4kxjoYZPCtRr\"]},\"lib_uniswap/v3-periphery/contracts/libraries/TransferHelper.sol\":{\"keccak256\":\"0x9af98b0908c96320ca6d08b22f0efca864742f6adbe5794cafe2d1d2e808b0cd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://da1d1e81e5bf534f0bf2934b3193db6cb1933f91ec006d2b88e9ad10a617a2d2\",\"dweb:/ipfs/QmcPBk47QLMFWcX2y2S9eMFsJgoYWBd3R8ey55Bgmv6w6v\"]},\"src/Constants.sol\":{\"keccak256\":\"0x41bf66b69d0d8c9c32c43fd3af5396d1288ac512fd5c6c14e06dbb06a06adf3f\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://283443c74eef1b4ff300c1465a46877957188c3f65ed71aea60bd11362938418\",\"dweb:/ipfs/QmQPn2nrbKVei7HUooGXy7msfoXNT8E2yVkT1kZAC9T3ds\"]},\"src/Factory.sol\":{\"keccak256\":\"0x505f51c4877723756acd154753934f8ffa7088ffec29c70a073d4f1b8f0c6d15\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://81c36502d1b0eb0d882d13f751d3eb2d0cb4f89bb04935d4f0a024d1143d3e05\",\"dweb:/ipfs/QmQmwaDTVuzKzduxGX7zkimJyKc4SVvhHYeFvwNUamDJcG\"]},\"src/MockERC20.sol\":{\"keccak256\":\"0x0b7b50cebfa9265beaa40b0df4c94f25b6834fc6854addf5bba878eb65164089\",\"urls\":[\"bzz-raw://d67d08b0e0fd1ab66bd98341eb93a4850a9f2200bc5ab53d996508fb7c330db4\",\"dweb:/ipfs/QmbNCZyArZvRYTQeXcXJAFytnjuZse8dthoExDZSTwYpAK\"]},\"src/OrderLib.sol\":{\"keccak256\":\"0x3141c71ba0edb4839dcee8f6d461c8969ec85548d756178c94e19e76075a9e89\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://f7b1efe6062b9095fe9d71475066743a7c80a1cb6b6c37e9e710195689a54424\",\"dweb:/ipfs/QmcdVcXijUv1CBW1V7nvM9s8gteb3QnmtuDEkrMGmcYEV5\"]},\"src/UniswapSwapper.sol\":{\"keccak256\":\"0xeba32c1f50322147452a5e8bb33daf0de90d0abaa26929f00da4cea788f92825\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ccef611297b80392e32363f9dce4f10403d2a9b3780475ffde7c38f1f2d23781\",\"dweb:/ipfs/QmVCN2oa3aQCx1KMxGN7EM4reJNFxegXyLSCQoe62dM2Kx\"]},\"src/Util.sol\":{\"keccak256\":\"0xbf0a5fb064064aa53474e43777176662a9f09fdb61b823b87705bd0c6d1909ad\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://6dbdd417018821ed9cc564f5d64e92b5efaf067cdc559e7f1dd7bff2afa07a80\",\"dweb:/ipfs/QmPQTGJbnrV4PSCCXNbBQKZ3enF5r7Wv115ivoHFCjVCJr\"]},\"src/Vault.sol\":{\"keccak256\":\"0xb9f8667aab5f5235d8364faa7a04610e5aa14af2fe29a04b27713a13fe955935\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://027c8699c68d1a3ca3a67f4362624d4bb1cb705ac125b6a72ad7638d81b1e045\",\"dweb:/ipfs/QmPcu3E3b2xzbeo15vvWNhrKGgT9sPfm9HVXXiftBc4Qu8\"]},\"src/VaultDeployer.sol\":{\"keccak256\":\"0x1a833cc5151d7acfbb5b665adb938fa0af59aa5aed873b4abf5720966d28ce10\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://52a9f4d146eca466e146956662f8ce76282eeb8a239b9aedf08d6924df724fd3\",\"dweb:/ipfs/Qmcu4qDuw9U7AucKBgSQ4hciNPJygErFxRL9YkqoQz5euu\"]},\"src/interface/IVaultDeployer.sol\":{\"keccak256\":\"0x2985c864a3b5cf99244cc443871b356b47bb6bfb758bbf89b9cceb2e15c68886\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://2d3df393bad985f53c8a31e9907badd10766891d5951a3ab95acea2cc6d2092a\",\"dweb:/ipfs/QmbE7z2SwfCnCF2XxKM1FEEPaddrS6WNbCJ5yqSP2Zn8d7\"]},\"test/MockEnv.sol\":{\"keccak256\":\"0x0f80e0ca443ca0421f29720c89ddfc2545a890d9b65b250ac388ae560780692b\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://2eb22831d8fe14a3b10e5eff82f9066ce931240e103460ef18297cdc37578368\",\"dweb:/ipfs/QmSiRsGE26WwtG8cJ3a3FodEPp68trUW3n4cNWbgZGFv3V\"]},\"test/TestOrder.sol\":{\"keccak256\":\"0x18219354c6344dc8e29dbc09a3c92a3a1769f8b842259b5d49d2f89e8f6a0eaa\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://06331877831b4bcf9745b1995e2c0f5fe4338765914ffd0f4a68b1dfc7b4acfb\",\"dweb:/ipfs/QmdeviTRXT8wG4vAAD9i7LNSTiPQDYDfhokKFwn8oNZiuB\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.22+commit.4fc1097e" }, "language": "Solidity", "output": { "abi": [ { "inputs": [ { "internalType": "string", "name": "", "type": "string", "indexed": false } ], "type": "event", "name": "log", "anonymous": false }, { "inputs": [ { "internalType": "address", "name": "", "type": "address", "indexed": false } ], "type": "event", "name": "log_address", "anonymous": false }, { "inputs": [ { "internalType": "uint256[]", "name": "val", "type": "uint256[]", "indexed": false } ], "type": "event", "name": "log_array", "anonymous": false }, { "inputs": [ { "internalType": "int256[]", "name": "val", "type": "int256[]", "indexed": false } ], "type": "event", "name": "log_array", "anonymous": false }, { "inputs": [ { "internalType": "address[]", "name": "val", "type": "address[]", "indexed": false } ], "type": "event", "name": "log_array", "anonymous": false }, { "inputs": [ { "internalType": "bytes", "name": "", "type": "bytes", "indexed": false } ], "type": "event", "name": "log_bytes", "anonymous": false }, { "inputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32", "indexed": false } ], "type": "event", "name": "log_bytes32", "anonymous": false }, { "inputs": [ { "internalType": "int256", "name": "", "type": "int256", "indexed": false } ], "type": "event", "name": "log_int", "anonymous": false }, { "inputs": [ { "internalType": "string", "name": "key", "type": "string", "indexed": false }, { "internalType": "address", "name": "val", "type": "address", "indexed": false } ], "type": "event", "name": "log_named_address", "anonymous": false }, { "inputs": [ { "internalType": "string", "name": "key", "type": "string", "indexed": false }, { "internalType": "uint256[]", "name": "val", "type": "uint256[]", "indexed": false } ], "type": "event", "name": "log_named_array", "anonymous": false }, { "inputs": [ { "internalType": "string", "name": "key", "type": "string", "indexed": false }, { "internalType": "int256[]", "name": "val", "type": "int256[]", "indexed": false } ], "type": "event", "name": "log_named_array", "anonymous": false }, { "inputs": [ { "internalType": "string", "name": "key", "type": "string", "indexed": false }, { "internalType": "address[]", "name": "val", "type": "address[]", "indexed": false } ], "type": "event", "name": "log_named_array", "anonymous": false }, { "inputs": [ { "internalType": "string", "name": "key", "type": "string", "indexed": false }, { "internalType": "bytes", "name": "val", "type": "bytes", "indexed": false } ], "type": "event", "name": "log_named_bytes", "anonymous": false }, { "inputs": [ { "internalType": "string", "name": "key", "type": "string", "indexed": false }, { "internalType": "bytes32", "name": "val", "type": "bytes32", "indexed": false } ], "type": "event", "name": "log_named_bytes32", "anonymous": false }, { "inputs": [ { "internalType": "string", "name": "key", "type": "string", "indexed": false }, { "internalType": "int256", "name": "val", "type": "int256", "indexed": false }, { "internalType": "uint256", "name": "decimals", "type": "uint256", "indexed": false } ], "type": "event", "name": "log_named_decimal_int", "anonymous": false }, { "inputs": [ { "internalType": "string", "name": "key", "type": "string", "indexed": false }, { "internalType": "uint256", "name": "val", "type": "uint256", "indexed": false }, { "internalType": "uint256", "name": "decimals", "type": "uint256", "indexed": false } ], "type": "event", "name": "log_named_decimal_uint", "anonymous": false }, { "inputs": [ { "internalType": "string", "name": "key", "type": "string", "indexed": false }, { "internalType": "int256", "name": "val", "type": "int256", "indexed": false } ], "type": "event", "name": "log_named_int", "anonymous": false }, { "inputs": [ { "internalType": "string", "name": "key", "type": "string", "indexed": false }, { "internalType": "string", "name": "val", "type": "string", "indexed": false } ], "type": "event", "name": "log_named_string", "anonymous": false }, { "inputs": [ { "internalType": "string", "name": "key", "type": "string", "indexed": false }, { "internalType": "uint256", "name": "val", "type": "uint256", "indexed": false } ], "type": "event", "name": "log_named_uint", "anonymous": false }, { "inputs": [ { "internalType": "string", "name": "", "type": "string", "indexed": false } ], "type": "event", "name": "log_string", "anonymous": false }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256", "indexed": false } ], "type": "event", "name": "log_uint", "anonymous": false }, { "inputs": [ { "internalType": "bytes", "name": "", "type": "bytes", "indexed": false } ], "type": "event", "name": "logs", "anonymous": false }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "COIN", "outputs": [ { "internalType": "contract MockERC20", "name": "", "type": "address" } ] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "IS_TEST", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "USD", "outputs": [ { "internalType": "contract MockERC20", "name": "", "type": "address" } ] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "excludeArtifacts", "outputs": [ { "internalType": "string[]", "name": "excludedArtifacts_", "type": "string[]" } ] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "excludeContracts", "outputs": [ { "internalType": "address[]", "name": "excludedContracts_", "type": "address[]" } ] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "excludeSenders", "outputs": [ { "internalType": "address[]", "name": "excludedSenders_", "type": "address[]" } ] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "factory", "outputs": [ { "internalType": "contract Factory", "name": "", "type": "address" } ] }, { "inputs": [], "stateMutability": "nonpayable", "type": "function", "name": "failed", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "fee", "outputs": [ { "internalType": "uint24", "name": "", "type": "uint24" } ] }, { "inputs": [], "stateMutability": "nonpayable", "type": "function", "name": "init" }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "inverted", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "nfpm", "outputs": [ { "internalType": "contract INonfungiblePositionManager", "name": "", "type": "address" } ] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "pool", "outputs": [ { "internalType": "contract IUniswapV3Pool", "name": "", "type": "address" } ] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "price", "outputs": [ { "internalType": "uint160", "name": "sqrtPriceX96", "type": "uint160" } ] }, { "inputs": [], "stateMutability": "nonpayable", "type": "function", "name": "setUp" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "int24", "name": "lower", "type": "int24" }, { "internalType": "int24", "name": "upper", "type": "int24" } ], "stateMutability": "nonpayable", "type": "function", "name": "stake" }, { "inputs": [ { "internalType": "uint256", "name": "coinAmount", "type": "uint256" }, { "internalType": "uint256", "name": "usdAmount", "type": "uint256" }, { "internalType": "int24", "name": "lower", "type": "int24" }, { "internalType": "int24", "name": "upper", "type": "int24" } ], "stateMutability": "nonpayable", "type": "function", "name": "stake", "outputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint128", "name": "liquidity", "type": "uint128" }, { "internalType": "uint256", "name": "amount0", "type": "uint256" }, { "internalType": "uint256", "name": "amount1", "type": "uint256" } ] }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "int24", "name": "width", "type": "int24" } ], "stateMutability": "nonpayable", "type": "function", "name": "stake" }, { "inputs": [ { "internalType": "contract MockERC20", "name": "inToken", "type": "address" }, { "internalType": "contract MockERC20", "name": "outToken", "type": "address" }, { "internalType": "uint256", "name": "amountIn", "type": "uint256" }, { "internalType": "uint160", "name": "sqrtPriceLimitX96", "type": "uint160" } ], "stateMutability": "nonpayable", "type": "function", "name": "swap", "outputs": [ { "internalType": "uint256", "name": "amountOut", "type": "uint256" } ] }, { "inputs": [ { "internalType": "contract MockERC20", "name": "inToken", "type": "address" }, { "internalType": "contract MockERC20", "name": "outToken", "type": "address" }, { "internalType": "uint256", "name": "amountIn", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function", "name": "swap", "outputs": [ { "internalType": "uint256", "name": "amountOut", "type": "uint256" } ] }, { "inputs": [ { "internalType": "uint160", "name": "sqrtPriceLimitX96", "type": "uint160" } ], "stateMutability": "nonpayable", "type": "function", "name": "swapToPrice" }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "swapper", "outputs": [ { "internalType": "contract ISwapRouter", "name": "", "type": "address" } ] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "targetArtifactSelectors", "outputs": [ { "internalType": "struct StdInvariant.FuzzSelector[]", "name": "targetedArtifactSelectors_", "type": "tuple[]", "components": [ { "internalType": "address", "name": "addr", "type": "address" }, { "internalType": "bytes4[]", "name": "selectors", "type": "bytes4[]" } ] } ] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "targetArtifacts", "outputs": [ { "internalType": "string[]", "name": "targetedArtifacts_", "type": "string[]" } ] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "targetContracts", "outputs": [ { "internalType": "address[]", "name": "targetedContracts_", "type": "address[]" } ] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "targetSelectors", "outputs": [ { "internalType": "struct StdInvariant.FuzzSelector[]", "name": "targetedSelectors_", "type": "tuple[]", "components": [ { "internalType": "address", "name": "addr", "type": "address" }, { "internalType": "bytes4[]", "name": "selectors", "type": "bytes4[]" } ] } ] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "targetSenders", "outputs": [ { "internalType": "address[]", "name": "targetedSenders_", "type": "address[]" } ] }, { "inputs": [], "stateMutability": "nonpayable", "type": "function", "name": "testExecuteLimitOrder" }, { "inputs": [], "stateMutability": "nonpayable", "type": "function", "name": "testExecuteOrderExactInput" }, { "inputs": [], "stateMutability": "nonpayable", "type": "function", "name": "testExecuteOrderExactOutput" }, { "inputs": [], "stateMutability": "nonpayable", "type": "function", "name": "testPlaceOrder" }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "token0", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "token1", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ] }, { "inputs": [], "stateMutability": "view", "type": "function", "name": "vault", "outputs": [ { "internalType": "contract Vault", "name": "", "type": "address" } ] } ], "devdoc": { "kind": "dev", "methods": {}, "version": 1 }, "userdoc": { "kind": "user", "methods": {}, "version": 1 } }, "settings": { "remappings": [ "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/", "@uniswap/v3-core/=lib_uniswap/v3-core/", "@uniswap/v3-periphery/=lib_uniswap/v3-periphery/", "ds-test/=lib/forge-std/lib/ds-test/src/", "forge-std/=lib/forge-std/src/", "openzeppelin-contracts/=lib/openzeppelin-contracts/", "v3-core/=lib_uniswap/v3-core/", "v3-periphery/libraries/=lib_uniswap/v3-periphery/contracts/libraries/" ], "optimizer": { "runs": 999999999, "details": { "peephole": true, "inliner": true, "jumpdestRemover": true, "orderLiterals": true, "deduplicate": true, "cse": true, "constantOptimizer": true, "yul": true, "yulDetails": { "stackAllocation": true, "optimizerSteps": "dhfoD[xarrscLMcCTU]uljmul:fDnTOcmu" } } }, "metadata": { "bytecodeHash": "ipfs" }, "compilationTarget": { "test/TestOrder.sol": "TestOrder" }, "libraries": {} }, "sources": { "lib/forge-std/lib/ds-test/src/test.sol": { "keccak256": "0x8758531bbac3972efcf1fa46383dbe1d276406fe527bc7abb2f236486278e83b", "urls": [ "bzz-raw://1f64264d61506847acf8761e84aff690cebe830958eac00bac7924d8be569240", "dweb:/ipfs/QmSekDJvJ82MZAmr63n7YvfLzQ7gS4NLSHPmHL3GN3rw8k" ], "license": "GPL-3.0-or-later" }, "lib/forge-std/src/Base.sol": { "keccak256": "0x4ff1a785311017d1eedb1b4737956fa383067ad34eb439abfec1d989754dde1c", "urls": [ "bzz-raw://f553622969b9fdb930246704a4c10dfaee6b1a4468c142fa7eb9dc292a438224", "dweb:/ipfs/QmcxqHnqdQsMVtgsfH9VNLmZ3g7GhgNagfq7yvNCDcCHFK" ], "license": "MIT" }, "lib/forge-std/src/StdAssertions.sol": { "keccak256": "0x1a0dee4d8b2c81e9318e87dd85ef009467ebf7dba6575530d1fce94d34dbae60", "urls": [ "bzz-raw://ddd790c86ddde1013d1f7a552a80168eacf2e9244077f96799180644ad523a5b", "dweb:/ipfs/QmYinBFt9uEVFXP9ytT9CDoNpzWieQVgLWRFRNiypMzJaL" ], "license": "MIT" }, "lib/forge-std/src/StdChains.sol": { "keccak256": "0x51e6eb138fc953fac1ac78012a39b3f16d9289ce06a222ba93bb0621768f96e6", "urls": [ "bzz-raw://653c577e054cf578594148a07b286571d494f401b6d4a940d3ccabd47b29233d", "dweb:/ipfs/QmTWDVvR4m82MGXWYY8BCaVN89TguQJSLqRgzHzrMkFHtx" ], "license": "MIT" }, "lib/forge-std/src/StdCheats.sol": { "keccak256": "0x2e1b4b99283c16efaf155f7e55ea357943cf6e61fc02aad060534349f63b6cd5", "urls": [ "bzz-raw://d471a35903e8a367a145ca5b5955caf691c723fe1117c6dcffd928d9f8d7c95a", "dweb:/ipfs/QmXGnFUGiX9APL8xit7NZQEYBoEL3wWyW1YyFoJQd2pGPe" ], "license": "MIT" }, "lib/forge-std/src/StdError.sol": { "keccak256": "0xbf477b11a42d7611696956546bcfaa29317d1166bf65e402344599c05943fc77", "urls": [ "bzz-raw://bc2e117d1135e030862b96a6526a43feb38d396cc79857f1fb696d4eff0e5fd6", "dweb:/ipfs/QmdSuQ5RrQudTLsNmWXGEeVJX8gR5U9XPm6m4dwwuQnJrj" ], "license": "MIT" }, "lib/forge-std/src/StdInvariant.sol": { "keccak256": "0xf5762db8ef95099bbe77578cd9349511ed77f4dd63ec98cc6b7cd711447830c1", "urls": [ "bzz-raw://a6b0360806a9804eac0f7e07492b5db9c4953c521dabb9a11b17dd610d5b804c", "dweb:/ipfs/QmUFozSt3W7drBRdm1cdRow61EABqSLJtkvYZXWmoHUPss" ], "license": "MIT" }, "lib/forge-std/src/StdJson.sol": { "keccak256": "0x9e2a7521190c462a0667706385f1c52a816220a9813ca8ac520fba7ba45d660b", "urls": [ "bzz-raw://7d23017fe6570b28130a731b86179352b93a5fb5af32f11559837afc1186293c", "dweb:/ipfs/QmR3p6zG5Kmcr8gKocFCSopLHfXv1AziPJbH17nKyMxwxV" ], "license": "MIT" }, "lib/forge-std/src/StdMath.sol": { "keccak256": "0xd90ad4fd8aeaeb8929964e686e769fdedd5eded3fc3815df194a0ab9f91a3fb2", "urls": [ "bzz-raw://7919b70f636c7b805223992f28ad1ad0145d6c1385b5931a3589aface5fe6c92", "dweb:/ipfs/QmY7FRaULwoGgFteF8GawjQJRfasNgpWnU2aiMsFrYpuTC" ], "license": "MIT" }, "lib/forge-std/src/StdStorage.sol": { "keccak256": "0x391a28a2e54aea51a6fb03a3a48035304ca4d24bc669ddf3d4c152c7162e514d", "urls": [ "bzz-raw://475fd0d87ccb0fdc4418dea2babffb4adb4aafb817e61f7ef31c2303f10c6c26", "dweb:/ipfs/QmQgcgtZxpkW6DRmbJszN1F8mU6zhaTZGdWWsj77yCuWN9" ], "license": "MIT" }, "lib/forge-std/src/StdStyle.sol": { "keccak256": "0x43e2a8a9b9c2574dabe74f11adf6f782df218f463540e3b5b563609fe108597d", "urls": [ "bzz-raw://51363ca97404cf4128e1141428949768c31929e75e014b02c85e887fbbb4f1b8", "dweb:/ipfs/QmVhtbQc2fU4rRmbcfBtz34mAgG4BAZBsbna1Ca4SkoPsK" ], "license": "MIT" }, "lib/forge-std/src/StdUtils.sol": { "keccak256": "0x8758c42ba9d9e46868b796e2330ac239006ede07bd438a4b36dd6f2c47d27dc1", "urls": [ "bzz-raw://11f5752e0187b1e3631b875efdbe05d45929d05f1c1717105a9115d0a6628140", "dweb:/ipfs/QmUKkx9jfsUvjyYBw45RvrW1hTFXDXi2Jv5tbHP86mnzpi" ], "license": "MIT" }, "lib/forge-std/src/Test.sol": { "keccak256": "0xf3b62c75cea11a0e8ef8e6526e5e5c74ae47a892b9bcefc0e98d76066e1ffd24", "urls": [ "bzz-raw://a41faaf836453e02c71fc272c80b3c90a614b30c9ba636512db0d033c7b93beb", "dweb:/ipfs/QmeQAreYYaxztQtFLQdHCzCPEorj9T5foSu2hQmxk7xT5x" ], "license": "MIT" }, "lib/forge-std/src/Vm.sol": { "keccak256": "0xb569d0b4398fad95f508fb854e832143edf69a897af4250f5f60fe195a2066c5", "urls": [ "bzz-raw://84b722ada97ea7bb841cdc0fa556aa36a02ff2d380fa24f6dc0717a71c6d9c7c", "dweb:/ipfs/QmfCH9Q4tvJhPM286GFsE4UCP4YncLpRu4Nwa2ZkHdRfbw" ], "license": "MIT" }, "lib/forge-std/src/console.sol": { "keccak256": "0x91d5413c2434ca58fd278b6e1e79fd98d10c83931cc2596a6038eee4daeb34ba", "urls": [ "bzz-raw://91ccea707361e48b9b7a161fe81f496b9932bc471e9c4e4e1e9c283f2453cc70", "dweb:/ipfs/QmcB66sZhQ6Kz7MUHcLE78YXRUZxoZnnxZjN6yATsbB2ec" ], "license": "MIT" }, "lib/forge-std/src/console2.sol": { "keccak256": "0x954646445d1014c3cd85c7918f5e7adeeca5ee44b68c00bafa237e597a4e35ea", "urls": [ "bzz-raw://516fa3be52da4763147175bfba4be0aa011fadbb0c1afb01f97265bd4cee7973", "dweb:/ipfs/QmdixAyMJefx7qePChgdxcBH5MxhmN7vsqPuPLx3CgrVmF" ], "license": "MIT" }, "lib/forge-std/src/interfaces/IMulticall3.sol": { "keccak256": "0x7aac1389150499a922d1f9ef5749c908cef127cb2075b92fa17e9cb611263d0a", "urls": [ "bzz-raw://d95ebb7c7c463e08ebc12dab639945752fb2480acfc6e86da32f72732a7fd0c0", "dweb:/ipfs/QmNXK8P8oPWwajsQHvAHw3JPyQidPLCGQN3hWu1Lk6PBL2" ], "license": "MIT" }, "lib/forge-std/src/safeconsole.sol": { "keccak256": "0xbaf41fdc6c54297e7cd8250e48b0f20eaac918e342a1028cef3f9a52ac086381", "urls": [ "bzz-raw://a500ad81dea226f9910e6b50f99a9ff930105e393a692cbfb2185e4cdb4424ae", "dweb:/ipfs/QmVbUQpXNMmMWRiy4FvBNczzq46BMGfUoBikvSHNiCxVTq" ], "license": "MIT" }, "lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol": { "keccak256": "0x4ffc0547c02ad22925310c585c0f166f8759e2648a09e9b489100c42f15dd98d", "urls": [ "bzz-raw://15f52f51413a9de1ff191e2f6367c62178e1df7806d7880fe857a98b0b66253d", "dweb:/ipfs/QmaQG1fwfgUt5E9nu2cccFiV47B2V78MM1tCy1qB7n4MsH" ], "license": "MIT" }, "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol": { "keccak256": "0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b", "urls": [ "bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34", "dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr" ], "license": "MIT" }, "lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol": { "keccak256": "0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca", "urls": [ "bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd", "dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8" ], "license": "MIT" }, "lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol": { "keccak256": "0xab28a56179c1db258c9bf5235b382698cb650debecb51b23d12be9e241374b68", "urls": [ "bzz-raw://daae589a9d6fa7e55f99f86c0a16796ca490f243fb3693632c3711c0646c1d56", "dweb:/ipfs/QmR3zpd7wNw3rcUdekwiv6FYHJqksuTCXLVioTxu6Fbxk3" ], "license": "MIT" }, "lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Enumerable.sol": { "keccak256": "0xd1556954440b31c97a142c6ba07d5cade45f96fafd52091d33a14ebe365aecbf", "urls": [ "bzz-raw://26fef835622b46a5ba08b3ef6b46a22e94b5f285d0f0fb66b703bd30217d2c34", "dweb:/ipfs/QmZ548qdwfL1qF7aXz3xh1GCdTiST81kGGuKRqVUfYmPZR" ], "license": "MIT" }, "lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol": { "keccak256": "0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9", "urls": [ "bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146", "dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf" ], "license": "MIT" }, "lib/openzeppelin-contracts/contracts/utils/Context.sol": { "keccak256": "0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7", "urls": [ "bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92", "dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3" ], "license": "MIT" }, "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol": { "keccak256": "0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1", "urls": [ "bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f", "dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy" ], "license": "MIT" }, "lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol": { "keccak256": "0xcc3d0c93fc9ac0febbe09f941b465b57f750bcf3b48432da0b97dc289cfdc489", "urls": [ "bzz-raw://b9379ad954680c44a0bc523b314ae4c4da735f9fe1d02aa56ea5bdba6f1136f2", "dweb:/ipfs/QmZXdgQNXKAckrXWz9R3mc47F1fvDvr28a2ewJrwNAw71B" ], "license": "GPL-2.0-or-later" }, "lib_uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol": { "keccak256": "0xfe6113d518466cd6652c85b111e01f33eb62157f49ae5ed7d5a3947a2044adb1", "urls": [ "bzz-raw://1c42b9e6f5902ac38dd43e25750939baa7e0c1425dc75afd717c4412731065d5", "dweb:/ipfs/QmWaoacnzsucTvBME2o7YgZBZMhaHv7fkj83htHMVWJKWh" ], "license": "GPL-2.0-or-later" }, "lib_uniswap/v3-core/contracts/interfaces/callback/IUniswapV3SwapCallback.sol": { "keccak256": "0x3f485fb1a44e8fbeadefb5da07d66edab3cfe809f0ac4074b1e54e3eb3c4cf69", "urls": [ "bzz-raw://095ce0626b41318c772b3ebf19d548282607f6a8f3d6c41c13edfbd5370c8652", "dweb:/ipfs/QmVDZfJJ89UUCE1hMyzqpkZAtQ8jUsBgZNE5AMRG7RzRFS" ], "license": "GPL-2.0-or-later" }, "lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolActions.sol": { "keccak256": "0x9453dd0e7442188667d01d9b65de3f1e14e9511ff3e303179a15f6fc267f7634", "urls": [ "bzz-raw://982f4328f956c3e60e67501e759eb292ac487f76460c774c50e9ae4fcc92aae5", "dweb:/ipfs/QmRnzEDsaqtd9PJEVcgQi7p5aV5pMSvRUoGZJAdwFUJxgZ" ], "license": "GPL-2.0-or-later" }, "lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolDerivedState.sol": { "keccak256": "0xe603ac5b17ecdee73ba2b27efdf386c257a19c14206e87eee77e2017b742d9e5", "urls": [ "bzz-raw://8febc9bdb399a4d94bb89f5377732652e2400e4a8dee808201ade6848f9004e7", "dweb:/ipfs/QmaKDqYYFU4d2W2iN77aDHptfbFmYZRrMYXHeGpJmM8C1c" ], "license": "GPL-2.0-or-later" }, "lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolEvents.sol": { "keccak256": "0x8071514d0fe5d17d6fbd31c191cdfb703031c24e0ece3621d88ab10e871375cd", "urls": [ "bzz-raw://d0b571930cc7488b1d546a7e9cea7c52d8b3c4e207da657ed0e0db7343b8cd03", "dweb:/ipfs/QmaGK6vVwB95QSTR1XMYvrh7ivYAYZxi3fD7v6VMA4jZ39" ], "license": "GPL-2.0-or-later" }, "lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolImmutables.sol": { "keccak256": "0xf6e5d2cd1139c4c276bdbc8e1d2b256e456c866a91f1b868da265c6d2685c3f7", "urls": [ "bzz-raw://b99c8c9ae8e27ee6559e5866bea82cbc9ffc8247f8d15b7422a4deb287d4d047", "dweb:/ipfs/QmfL8gaqt3ffAnm6nVj5ksuNpLygXuL3xq5VBqrkwC2JJ3" ], "license": "GPL-2.0-or-later" }, "lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolOwnerActions.sol": { "keccak256": "0x759b78a2918af9e99e246dc3af084f654e48ef32bb4e4cb8a966aa3dcaece235", "urls": [ "bzz-raw://64144fb96e1c7fdba87305acadb98a198d26a3d46c097cb3a666e567f6f29735", "dweb:/ipfs/QmUnWVwN9FKB9uV5Pr8YfLpWZnYM2DENnRMaadZ492JS9u" ], "license": "GPL-2.0-or-later" }, "lib_uniswap/v3-core/contracts/interfaces/pool/IUniswapV3PoolState.sol": { "keccak256": "0x852dc1f5df7dcf7f11e7bb3eed79f0cea72ad4b25f6a9d2c35aafb48925fd49f", "urls": [ "bzz-raw://ed63907c38ff36b0e22bc9ffc53e791ea74f0d4f0e7c257fdfb5aaf8825b1f0f", "dweb:/ipfs/QmSQrckghEjs6HVsA5GVgpNpZWvTXMY5eQLF7cN6deFeEg" ], "license": "GPL-2.0-or-later" }, "lib_uniswap/v3-core/contracts/libraries/FixedPoint96.sol": { "keccak256": "0x0ba8a9b95a956a4050749c0158e928398c447c91469682ca8a7cc7e77a7fe032", "urls": [ "bzz-raw://186d3b528866065a5856f96d2aeec698efa99f8da913e9adf34f8cc296cc993d", "dweb:/ipfs/QmUAiMvtAQp8c9dy57bqJYzG7hkb1uChiPaQmt264skoqP" ], "license": "GPL-2.0-or-later" }, "lib_uniswap/v3-core/contracts/libraries/FullMath.sol": { "keccak256": "0x77608bce1ddeb28ed9963b554b55e8a083277eda7be31e2c7255ef532cc408be", "urls": [ "bzz-raw://8fcb307cf783b612ab9abd339296391d202974e7aa158deff23d9fb3aaac832d", "dweb:/ipfs/QmXhcwQajcGZADQtVoQpSWYNY4tB3Y42GPPyiaW62M5JH2" ], "license": "MIT" }, "lib_uniswap/v3-core/contracts/libraries/TickMath.sol": { "keccak256": "0x350d6743e4d8ff3b7f3bcc569919b22dd13e46918a7994d29d7cb5c60080ee4d", "urls": [ "bzz-raw://513f138148bd8b28edb0625d27c593b09155a1f71cc3c081659d448d079ca8d3", "dweb:/ipfs/QmRhWsD9JhoKLVT9ShUkDC2kYcNneDKXbt3NTHEpDkRZ2G" ], "license": "GPL-2.0-or-later" }, "lib_uniswap/v3-periphery/contracts/interfaces/IERC721Permit.sol": { "keccak256": "0x9e3c2a4ee65ddf95b2dfcb0815784eea3a295707e6f8b83e4c4f0f8fe2e3a1d4", "urls": [ "bzz-raw://bfd939085b3618101b955f87c7fabf38338ba1aad480295acb8102ebc5d72471", "dweb:/ipfs/QmauQD8bGDHTztmTDfaKXjzM7Wacrq2XU7VcTbwn1WrDBL" ], "license": "GPL-2.0-or-later" }, "lib_uniswap/v3-periphery/contracts/interfaces/INonfungiblePositionManager.sol": { "keccak256": "0x3357b065654abb7f4a9ebd184a260bc39efde2afa4e99dca2e72ffc28e9c2984", "urls": [ "bzz-raw://f7682dab014724be8e0a5a401b047788ff9c70b77fa5bd567ea6adc333cb3b56", "dweb:/ipfs/QmatH1Gc6z3AkP4dHjAEBKfCBbgBfD4vCceF4TuZU2bCyW" ], "license": "GPL-2.0-or-later" }, "lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryImmutableState.sol": { "keccak256": "0x7affcfeb5127c0925a71d6a65345e117c33537523aeca7bc98085ead8452519d", "urls": [ "bzz-raw://e16b291294210e71cb0f20cd0afe62ae2dc6878d627f5ccc19c4dc9cd80aec3f", "dweb:/ipfs/QmQGitSyBr26nour81BZmpmDMyJpvZRqHQZvnCD1Acb127" ], "license": "GPL-2.0-or-later" }, "lib_uniswap/v3-periphery/contracts/interfaces/IPeripheryPayments.sol": { "keccak256": "0xb547e10f1e69bed03621a62b73a503e260643066c6b4054867a4d1fef47eb274", "urls": [ "bzz-raw://f9a90f58f5fd5fb42f7811f4094113b532f307b14a73764c91f977590747f407", "dweb:/ipfs/QmSeNH2mfiDMKf3Q6V2sqtNxx1s72JNuA1VVxRM9HoMqYp" ], "license": "GPL-2.0-or-later" }, "lib_uniswap/v3-periphery/contracts/interfaces/IPoolInitializer.sol": { "keccak256": "0x9d7695e8d94c22cc5fcced602017aabb988de89981ea7bee29ea629d5328a862", "urls": [ "bzz-raw://61b50933026ee1017db2a6273af8cedc3238c95dca58880db0918dbdbb2f064f", "dweb:/ipfs/QmUebR26pqG25d18aBELKz8aFFKkmHa8PxntzXTA7o9Ldu" ], "license": "GPL-2.0-or-later" }, "lib_uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol": { "keccak256": "0x9bfaf1feb32814623e627ab70f2409760b15d95f1f9b058e2b3399a8bb732975", "urls": [ "bzz-raw://a8a2c3e55965b61bcd91993d8e1d5d34b8b8a63e0fdfce87a85f6af92526fd53", "dweb:/ipfs/QmQj2CSCSwqDSU4KMNWxGsN2336Cy64WgpV1X1EHXNZWxM" ], "license": "GPL-2.0-or-later" }, "lib_uniswap/v3-periphery/contracts/libraries/LiquidityAmounts.sol": { "keccak256": "0xf149581d28e1c81736dfe72be73ee1301d4945340cc6282fcdd63fe3c85abf24", "urls": [ "bzz-raw://0b67f375180bb62fe6753601cd09740496dcdcec4c0a4f9eaa6e94c5e1bb6844", "dweb:/ipfs/QmWYwkmqynRq7g81Nijg4eEkPgSRGnegDrbbEKkkTC1k2w" ], "license": "GPL-2.0-or-later" }, "lib_uniswap/v3-periphery/contracts/libraries/PoolAddress.sol": { "keccak256": "0x0a107d09991fd2dc9a3ca13bf0745f0b6f6f6ffea3e55ad3677ecdbadef089b4", "urls": [ "bzz-raw://e179110a9ec825b7f15384a9c61f90261fe6227b289dac9996b0ed9cf1655b48", "dweb:/ipfs/Qma2amC8zJSW2PzPCk1nBYiFd4mjZiAW9z4kxjoYZPCtRr" ], "license": "GPL-2.0-or-later" }, "lib_uniswap/v3-periphery/contracts/libraries/TransferHelper.sol": { "keccak256": "0x9af98b0908c96320ca6d08b22f0efca864742f6adbe5794cafe2d1d2e808b0cd", "urls": [ "bzz-raw://da1d1e81e5bf534f0bf2934b3193db6cb1933f91ec006d2b88e9ad10a617a2d2", "dweb:/ipfs/QmcPBk47QLMFWcX2y2S9eMFsJgoYWBd3R8ey55Bgmv6w6v" ], "license": "GPL-2.0-or-later" }, "src/Constants.sol": { "keccak256": "0x41bf66b69d0d8c9c32c43fd3af5396d1288ac512fd5c6c14e06dbb06a06adf3f", "urls": [ "bzz-raw://283443c74eef1b4ff300c1465a46877957188c3f65ed71aea60bd11362938418", "dweb:/ipfs/QmQPn2nrbKVei7HUooGXy7msfoXNT8E2yVkT1kZAC9T3ds" ], "license": "UNLICENSED" }, "src/Factory.sol": { "keccak256": "0x505f51c4877723756acd154753934f8ffa7088ffec29c70a073d4f1b8f0c6d15", "urls": [ "bzz-raw://81c36502d1b0eb0d882d13f751d3eb2d0cb4f89bb04935d4f0a024d1143d3e05", "dweb:/ipfs/QmQmwaDTVuzKzduxGX7zkimJyKc4SVvhHYeFvwNUamDJcG" ], "license": "UNLICENSED" }, "src/MockERC20.sol": { "keccak256": "0x0b7b50cebfa9265beaa40b0df4c94f25b6834fc6854addf5bba878eb65164089", "urls": [ "bzz-raw://d67d08b0e0fd1ab66bd98341eb93a4850a9f2200bc5ab53d996508fb7c330db4", "dweb:/ipfs/QmbNCZyArZvRYTQeXcXJAFytnjuZse8dthoExDZSTwYpAK" ], "license": null }, "src/OrderLib.sol": { "keccak256": "0x3141c71ba0edb4839dcee8f6d461c8969ec85548d756178c94e19e76075a9e89", "urls": [ "bzz-raw://f7b1efe6062b9095fe9d71475066743a7c80a1cb6b6c37e9e710195689a54424", "dweb:/ipfs/QmcdVcXijUv1CBW1V7nvM9s8gteb3QnmtuDEkrMGmcYEV5" ], "license": "UNLICENSED" }, "src/UniswapSwapper.sol": { "keccak256": "0xeba32c1f50322147452a5e8bb33daf0de90d0abaa26929f00da4cea788f92825", "urls": [ "bzz-raw://ccef611297b80392e32363f9dce4f10403d2a9b3780475ffde7c38f1f2d23781", "dweb:/ipfs/QmVCN2oa3aQCx1KMxGN7EM4reJNFxegXyLSCQoe62dM2Kx" ], "license": "UNLICENSED" }, "src/Util.sol": { "keccak256": "0xbf0a5fb064064aa53474e43777176662a9f09fdb61b823b87705bd0c6d1909ad", "urls": [ "bzz-raw://6dbdd417018821ed9cc564f5d64e92b5efaf067cdc559e7f1dd7bff2afa07a80", "dweb:/ipfs/QmPQTGJbnrV4PSCCXNbBQKZ3enF5r7Wv115ivoHFCjVCJr" ], "license": "UNLICENSED" }, "src/Vault.sol": { "keccak256": "0xb9f8667aab5f5235d8364faa7a04610e5aa14af2fe29a04b27713a13fe955935", "urls": [ "bzz-raw://027c8699c68d1a3ca3a67f4362624d4bb1cb705ac125b6a72ad7638d81b1e045", "dweb:/ipfs/QmPcu3E3b2xzbeo15vvWNhrKGgT9sPfm9HVXXiftBc4Qu8" ], "license": "UNLICENSED" }, "src/VaultDeployer.sol": { "keccak256": "0x1a833cc5151d7acfbb5b665adb938fa0af59aa5aed873b4abf5720966d28ce10", "urls": [ "bzz-raw://52a9f4d146eca466e146956662f8ce76282eeb8a239b9aedf08d6924df724fd3", "dweb:/ipfs/Qmcu4qDuw9U7AucKBgSQ4hciNPJygErFxRL9YkqoQz5euu" ], "license": "UNLICENSED" }, "src/interface/IVaultDeployer.sol": { "keccak256": "0x2985c864a3b5cf99244cc443871b356b47bb6bfb758bbf89b9cceb2e15c68886", "urls": [ "bzz-raw://2d3df393bad985f53c8a31e9907badd10766891d5951a3ab95acea2cc6d2092a", "dweb:/ipfs/QmbE7z2SwfCnCF2XxKM1FEEPaddrS6WNbCJ5yqSP2Zn8d7" ], "license": "UNLICENSED" }, "test/MockEnv.sol": { "keccak256": "0x0f80e0ca443ca0421f29720c89ddfc2545a890d9b65b250ac388ae560780692b", "urls": [ "bzz-raw://2eb22831d8fe14a3b10e5eff82f9066ce931240e103460ef18297cdc37578368", "dweb:/ipfs/QmSiRsGE26WwtG8cJ3a3FodEPp68trUW3n4cNWbgZGFv3V" ], "license": "UNLICENSED" }, "test/TestOrder.sol": { "keccak256": "0x18219354c6344dc8e29dbc09a3c92a3a1769f8b842259b5d49d2f89e8f6a0eaa", "urls": [ "bzz-raw://06331877831b4bcf9745b1995e2c0f5fe4338765914ffd0f4a68b1dfc7b4acfb", "dweb:/ipfs/QmdeviTRXT8wG4vAAD9i7LNSTiPQDYDfhokKFwn8oNZiuB" ], "license": "UNLICENSED" } }, "version": 1 }, "ast": { "absolutePath": "test/TestOrder.sol", "id": 51615, "exportedSymbols": { "Constants": [ 46264 ], "Context": [ 43777 ], "DSTest": [ 2291 ], "ERC20": [ 43478 ], "Factory": [ 46430 ], "FixedPoint96": [ 44338 ], "FullMath": [ 44519 ], "IERC165": [ 43789 ], "IERC20": [ 43556 ], "IERC20Metadata": [ 43581 ], "IERC721": [ 43697 ], "IERC721Enumerable": [ 43728 ], "IERC721Metadata": [ 43755 ], "IERC721Permit": [ 45094 ], "INonfungiblePositionManager": [ 45293 ], "IPeripheryImmutableState": [ 45309 ], "IPeripheryPayments": [ 45335 ], "IPoolInitializer": [ 45354 ], "ISwapRouter": [ 45454 ], "IUniswapV3Factory": [ 43872 ], "IUniswapV3Pool": [ 43894 ], "IUniswapV3PoolActions": [ 44004 ], "IUniswapV3PoolDerivedState": [ 44035 ], "IUniswapV3PoolEvents": [ 44154 ], "IUniswapV3PoolImmutables": [ 44194 ], "IUniswapV3PoolOwnerActions": [ 44220 ], "IUniswapV3PoolState": [ 44328 ], "IUniswapV3SwapCallback": [ 43908 ], "IVaultDeployer": [ 49445 ], "LiquidityAmounts": [ 45794 ], "MockERC20": [ 46478 ], "MockEnv": [ 50069 ], "OrderLib": [ 47922 ], "PoolAddress": [ 45892 ], "StdAssertions": [ 3823 ], "StdChains": [ 4516 ], "StdCheats": [ 7334 ], "StdInvariant": [ 7624 ], "StdStorage": [ 8374 ], "StdStyle": [ 11038 ], "StdUtils": [ 11886 ], "Test": [ 11937 ], "TestBase": [ 2357 ], "TestOrder": [ 51614 ], "TickMath": [ 45059 ], "TransferHelper": [ 46063 ], "UniswapSwapper": [ 48847 ], "Util": [ 48904 ], "Vault": [ 49181 ], "VaultDeployer": [ 49436 ], "Vm": [ 13464 ], "console": [ 21528 ], "console2": [ 29653 ], "safeconsole": [ 42891 ], "stdError": [ 7400 ], "stdJson": [ 8200 ], "stdMath": [ 8342 ], "stdStorage": [ 9827 ] }, "nodeType": "SourceUnit", "src": "65:7072:66", "nodes": [ { "id": 50825, "nodeType": "PragmaDirective", "src": "65:24:66", "nodes": [], "literals": [ "solidity", ">=", "0.8", ".0" ] }, { "id": 50826, "nodeType": "PragmaDirective", "src": "90:19:66", "nodes": [], "literals": [ "abicoder", "v2" ] }, { "id": 50827, "nodeType": "ImportDirective", "src": "111:23:66", "nodes": [], "absolutePath": "test/MockEnv.sol", "file": "./MockEnv.sol", "nameLocation": "-1:-1:-1", "scope": 51615, "sourceUnit": 50070, "symbolAliases": [], "unitAlias": "" }, { "id": 50828, "nodeType": "ImportDirective", "src": "135:28:66", "nodes": [], "absolutePath": "lib/forge-std/src/Test.sol", "file": "forge-std/Test.sol", "nameLocation": "-1:-1:-1", "scope": 51615, "sourceUnit": 11938, "symbolAliases": [], "unitAlias": "" }, { "id": 50829, "nodeType": "ImportDirective", "src": "164:32:66", "nodes": [], "absolutePath": "lib/forge-std/src/console2.sol", "file": "forge-std/console2.sol", "nameLocation": "-1:-1:-1", "scope": 51615, "sourceUnit": 29654, "symbolAliases": [], "unitAlias": "" }, { "id": 50830, "nodeType": "ImportDirective", "src": "197:28:66", "nodes": [], "absolutePath": "src/Factory.sol", "file": "../src/Factory.sol", "nameLocation": "-1:-1:-1", "scope": 51615, "sourceUnit": 46431, "symbolAliases": [], "unitAlias": "" }, { "id": 50831, "nodeType": "ImportDirective", "src": "226:29:66", "nodes": [], "absolutePath": "src/OrderLib.sol", "file": "../src/OrderLib.sol", "nameLocation": "-1:-1:-1", "scope": 51615, "sourceUnit": 47923, "symbolAliases": [], "unitAlias": "" }, { "id": 51614, "nodeType": "ContractDefinition", "src": "257:6879:66", "nodes": [ { "id": 50839, "nodeType": "UsingForDirective", "src": "299:39:66", "nodes": [], "global": false, "libraryName": { "id": 50836, "name": "OrderLib", "nameLocations": [ "305:8:66" ], "nodeType": "IdentifierPath", "referencedDeclaration": 47922, "src": "305:8:66" }, "typeName": { "id": 50838, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 50837, "name": "OrderLib.OrdersInfo", "nameLocations": [ "318:8:66", "327:10:66" ], "nodeType": "IdentifierPath", "referencedDeclaration": 46509, "src": "318:19:66" }, "referencedDeclaration": 46509, "src": "318:19:66", "typeDescriptions": { "typeIdentifier": "t_struct$_OrdersInfo_$46509_storage_ptr", "typeString": "struct OrderLib.OrdersInfo" } } }, { "id": 50842, "nodeType": "VariableDeclaration", "src": "344:22:66", "nodes": [], "constant": false, "functionSelector": "c45a0155", "mutability": "mutable", "name": "factory", "nameLocation": "359:7:66", "scope": 51614, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_Factory_$46430", "typeString": "contract Factory" }, "typeName": { "id": 50841, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 50840, "name": "Factory", "nameLocations": [ "344:7:66" ], "nodeType": "IdentifierPath", "referencedDeclaration": 46430, "src": "344:7:66" }, "referencedDeclaration": 46430, "src": "344:7:66", "typeDescriptions": { "typeIdentifier": "t_contract$_Factory_$46430", "typeString": "contract Factory" } }, "visibility": "public" }, { "id": 50845, "nodeType": "VariableDeclaration", "src": "372:18:66", "nodes": [], "constant": false, "functionSelector": "fbfa77cf", "mutability": "mutable", "name": "vault", "nameLocation": "385:5:66", "scope": 51614, "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_Vault_$49181", "typeString": "contract Vault" }, "typeName": { "id": 50844, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 50843, "name": "Vault", "nameLocations": [ "372:5:66" ], "nodeType": "IdentifierPath", "referencedDeclaration": 49181, "src": "372:5:66" }, "referencedDeclaration": 49181, "src": "372:5:66", "typeDescriptions": { "typeIdentifier": "t_contract$_Vault_$49181", "typeString": "contract Vault" } }, "visibility": "public" }, { "id": 50911, "nodeType": "FunctionDefinition", "src": "444:353:66", "nodes": [], "body": { "id": 50910, "nodeType": "Block", "src": "468:329:66", "nodes": [], "statements": [ { "expression": { "arguments": [], "expression": { "argumentTypes": [], "id": 50848, "name": "init", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49634, "src": "478:4:66", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, "id": 50849, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "478:6:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 50850, "nodeType": "ExpressionStatement", "src": "478:6:66" }, { "expression": { "id": 50856, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 50851, "name": "factory", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 50842, "src": "494:7:66", "typeDescriptions": { "typeIdentifier": "t_contract$_Factory_$46430", "typeString": "contract Factory" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "arguments": [], "expression": { "argumentTypes": [], "id": 50854, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "NewExpression", "src": "504:11:66", "typeDescriptions": { "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_Factory_$46430_$", "typeString": "function () returns (contract Factory)" }, "typeName": { "id": 50853, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 50852, "name": "Factory", "nameLocations": [ "508:7:66" ], "nodeType": "IdentifierPath", "referencedDeclaration": 46430, "src": "508:7:66" }, "referencedDeclaration": 46430, "src": "508:7:66", "typeDescriptions": { "typeIdentifier": "t_contract$_Factory_$46430", "typeString": "contract Factory" } } }, "id": 50855, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "504:13:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_Factory_$46430", "typeString": "contract Factory" } }, "src": "494:23:66", "typeDescriptions": { "typeIdentifier": "t_contract$_Factory_$46430", "typeString": "contract Factory" } }, "id": 50857, "nodeType": "ExpressionStatement", "src": "494:23:66" }, { "expression": { "id": 50868, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 50858, "name": "vault", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 50845, "src": "527:5:66", "typeDescriptions": { "typeIdentifier": "t_contract$_Vault_$49181", "typeString": "contract Vault" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "arguments": [ { "arguments": [ { "arguments": [ { "id": 50864, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "569:4:66", "typeDescriptions": { "typeIdentifier": "t_contract$_TestOrder_$51614", "typeString": "contract TestOrder" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_TestOrder_$51614", "typeString": "contract TestOrder" } ], "id": 50863, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "561:7:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 50862, "name": "address", "nodeType": "ElementaryTypeName", "src": "561:7:66", "typeDescriptions": {} } }, "id": 50865, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "561:13:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "expression": { "id": 50860, "name": "factory", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 50842, "src": "541:7:66", "typeDescriptions": { "typeIdentifier": "t_contract$_Factory_$46430", "typeString": "contract Factory" } }, "id": 50861, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "549:11:66", "memberName": "deployVault", "nodeType": "MemberAccess", "referencedDeclaration": 49375, "src": "541:19:66", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_address_payable_$", "typeString": "function (address) external returns (address payable)" } }, "id": 50866, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "541:34:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "id": 50859, "name": "Vault", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49181, "src": "535:5:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_Vault_$49181_$", "typeString": "type(contract Vault)" } }, "id": 50867, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "535:41:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_Vault_$49181", "typeString": "contract Vault" } }, "src": "527:49:66", "typeDescriptions": { "typeIdentifier": "t_contract$_Vault_$49181", "typeString": "contract Vault" } }, "id": 50869, "nodeType": "ExpressionStatement", "src": "527:49:66" }, { "assignments": [ 50871 ], "declarations": [ { "constant": false, "id": 50871, "mutability": "mutable", "name": "coinAmount", "nameLocation": "594:10:66", "nodeType": "VariableDeclaration", "scope": 50910, "src": "586:18:66", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 50870, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "586:7:66", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "id": 50879, "initialValue": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 50878, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "hexValue": "3130305f303030", "id": 50872, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "607:7:66", "typeDescriptions": { "typeIdentifier": "t_rational_100000_by_1", "typeString": "int_const 100000" }, "value": "100_000" }, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 50877, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "hexValue": "3130", "id": 50873, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "617:2:66", "typeDescriptions": { "typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10" }, "value": "10" }, "nodeType": "BinaryOperation", "operator": "**", "rightExpression": { "arguments": [], "expression": { "argumentTypes": [], "expression": { "id": 50874, "name": "COIN", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49475, "src": "623:4:66", "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46478", "typeString": "contract MockERC20" } }, "id": 50875, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "628:8:66", "memberName": "decimals", "nodeType": "MemberAccess", "referencedDeclaration": 46464, "src": "623:13:66", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", "typeString": "function () view external returns (uint8)" } }, "id": 50876, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "623:15:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "617:21:66", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "607:31:66", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "586:52:66" }, { "expression": { "arguments": [ { "arguments": [ { "id": 50885, "name": "vault", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 50845, "src": "666:5:66", "typeDescriptions": { "typeIdentifier": "t_contract$_Vault_$49181", "typeString": "contract Vault" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_Vault_$49181", "typeString": "contract Vault" } ], "id": 50884, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "658:7:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 50883, "name": "address", "nodeType": "ElementaryTypeName", "src": "658:7:66", "typeDescriptions": {} } }, "id": 50886, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "658:14:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 50887, "name": "coinAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 50871, "src": "674:10:66", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 50880, "name": "COIN", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49475, "src": "648:4:66", "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46478", "typeString": "contract MockERC20" } }, "id": 50882, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "653:4:66", "memberName": "mint", "nodeType": "MemberAccess", "referencedDeclaration": 46477, "src": "648:9:66", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256) external" } }, "id": 50888, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "648:37:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 50889, "nodeType": "ExpressionStatement", "src": "648:37:66" }, { "assignments": [ 50891 ], "declarations": [ { "constant": false, "id": 50891, "mutability": "mutable", "name": "usdAmount", "nameLocation": "703:9:66", "nodeType": "VariableDeclaration", "scope": 50910, "src": "695:17:66", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 50890, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "695:7:66", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "id": 50899, "initialValue": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 50898, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "hexValue": "3130305f303030", "id": 50892, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "715:7:66", "typeDescriptions": { "typeIdentifier": "t_rational_100000_by_1", "typeString": "int_const 100000" }, "value": "100_000" }, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 50897, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "hexValue": "3130", "id": 50893, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "725:2:66", "typeDescriptions": { "typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10" }, "value": "10" }, "nodeType": "BinaryOperation", "operator": "**", "rightExpression": { "arguments": [], "expression": { "argumentTypes": [], "expression": { "id": 50894, "name": "USD", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49478, "src": "731:3:66", "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46478", "typeString": "contract MockERC20" } }, "id": 50895, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "735:8:66", "memberName": "decimals", "nodeType": "MemberAccess", "referencedDeclaration": 46464, "src": "731:12:66", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", "typeString": "function () view external returns (uint8)" } }, "id": 50896, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "731:14:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "725:20:66", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "715:30:66", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "695:50:66" }, { "expression": { "arguments": [ { "arguments": [ { "id": 50905, "name": "vault", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 50845, "src": "772:5:66", "typeDescriptions": { "typeIdentifier": "t_contract$_Vault_$49181", "typeString": "contract Vault" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_Vault_$49181", "typeString": "contract Vault" } ], "id": 50904, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "764:7:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 50903, "name": "address", "nodeType": "ElementaryTypeName", "src": "764:7:66", "typeDescriptions": {} } }, "id": 50906, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "764:14:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 50907, "name": "usdAmount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 50891, "src": "780:9:66", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 50900, "name": "USD", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49478, "src": "755:3:66", "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46478", "typeString": "contract MockERC20" } }, "id": 50902, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "759:4:66", "memberName": "mint", "nodeType": "MemberAccess", "referencedDeclaration": 46477, "src": "755:8:66", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256) external" } }, "id": 50908, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "755:35:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 50909, "nodeType": "ExpressionStatement", "src": "755:35:66" } ] }, "functionSelector": "0a9254e4", "implemented": true, "kind": "function", "modifiers": [], "name": "setUp", "nameLocation": "453:5:66", "parameters": { "id": 50846, "nodeType": "ParameterList", "parameters": [], "src": "458:2:66" }, "returnParameters": { "id": 50847, "nodeType": "ParameterList", "parameters": [], "src": "468:0:66" }, "scope": 51614, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "id": 51080, "nodeType": "FunctionDefinition", "src": "804:1973:66", "nodes": [], "body": { "id": 51079, "nodeType": "Block", "src": "837:1940:66", "nodes": [], "statements": [ { "assignments": [ 50919 ], "declarations": [ { "constant": false, "id": 50919, "mutability": "mutable", "name": "tranches", "nameLocation": "873:8:66", "nodeType": "VariableDeclaration", "scope": 51079, "src": "847:34:66", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Tranche[]" }, "typeName": { "baseType": { "id": 50917, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 50916, "name": "OrderLib.Tranche", "nameLocations": [ "847:8:66", "856:7:66" ], "nodeType": "IdentifierPath", "referencedDeclaration": 46638, "src": "847:16:66" }, "referencedDeclaration": 46638, "src": "847:16:66", "typeDescriptions": { "typeIdentifier": "t_struct$_Tranche_$46638_storage_ptr", "typeString": "struct OrderLib.Tranche" } }, "id": 50918, "nodeType": "ArrayTypeName", "src": "847:18:66", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_storage_$dyn_storage_ptr", "typeString": "struct OrderLib.Tranche[]" } }, "visibility": "internal" } ], "id": 50926, "initialValue": { "arguments": [ { "hexValue": "33", "id": 50924, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "907:1:66", "typeDescriptions": { "typeIdentifier": "t_rational_3_by_1", "typeString": "int_const 3" }, "value": "3" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_3_by_1", "typeString": "int_const 3" } ], "id": 50923, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", "src": "884:22:66", "typeDescriptions": { "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr_$", "typeString": "function (uint256) pure returns (struct OrderLib.Tranche memory[] memory)" }, "typeName": { "baseType": { "id": 50921, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 50920, "name": "OrderLib.Tranche", "nameLocations": [ "888:8:66", "897:7:66" ], "nodeType": "IdentifierPath", "referencedDeclaration": 46638, "src": "888:16:66" }, "referencedDeclaration": 46638, "src": "888:16:66", "typeDescriptions": { "typeIdentifier": "t_struct$_Tranche_$46638_storage_ptr", "typeString": "struct OrderLib.Tranche" } }, "id": 50922, "nodeType": "ArrayTypeName", "src": "888:18:66", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_storage_$dyn_storage_ptr", "typeString": "struct OrderLib.Tranche[]" } } }, "id": 50925, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "884:25:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Tranche memory[] memory" } }, "nodeType": "VariableDeclarationStatement", "src": "847:62:66" }, { "assignments": [ 50932 ], "declarations": [ { "constant": false, "id": 50932, "mutability": "mutable", "name": "constraints1", "nameLocation": "948:12:66", "nodeType": "VariableDeclaration", "scope": 51079, "src": "919:41:66", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Constraint[]" }, "typeName": { "baseType": { "id": 50930, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 50929, "name": "OrderLib.Constraint", "nameLocations": [ "919:8:66", "928:10:66" ], "nodeType": "IdentifierPath", "referencedDeclaration": 46594, "src": "919:19:66" }, "referencedDeclaration": 46594, "src": "919:19:66", "typeDescriptions": { "typeIdentifier": "t_struct$_Constraint_$46594_storage_ptr", "typeString": "struct OrderLib.Constraint" } }, "id": 50931, "nodeType": "ArrayTypeName", "src": "919:21:66", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_storage_$dyn_storage_ptr", "typeString": "struct OrderLib.Constraint[]" } }, "visibility": "internal" } ], "id": 50939, "initialValue": { "arguments": [ { "hexValue": "31", "id": 50937, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "989:1:66", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" } ], "id": 50936, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", "src": "963:25:66", "typeDescriptions": { "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr_$", "typeString": "function (uint256) pure returns (struct OrderLib.Constraint memory[] memory)" }, "typeName": { "baseType": { "id": 50934, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 50933, "name": "OrderLib.Constraint", "nameLocations": [ "967:8:66", "976:10:66" ], "nodeType": "IdentifierPath", "referencedDeclaration": 46594, "src": "967:19:66" }, "referencedDeclaration": 46594, "src": "967:19:66", "typeDescriptions": { "typeIdentifier": "t_struct$_Constraint_$46594_storage_ptr", "typeString": "struct OrderLib.Constraint" } }, "id": 50935, "nodeType": "ArrayTypeName", "src": "967:21:66", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_storage_$dyn_storage_ptr", "typeString": "struct OrderLib.Constraint[]" } } }, "id": 50938, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "963:28:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Constraint memory[] memory" } }, "nodeType": "VariableDeclarationStatement", "src": "919:72:66" }, { "expression": { "id": 50953, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { "id": 50940, "name": "constraints1", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 50932, "src": "1001:12:66", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Constraint memory[] memory" } }, "id": 50942, "indexExpression": { "hexValue": "30", "id": 50941, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1014:1:66", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1001:15:66", "typeDescriptions": { "typeIdentifier": "t_struct$_Constraint_$46594_memory_ptr", "typeString": "struct OrderLib.Constraint memory" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "arguments": [ { "expression": { "expression": { "id": 50945, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47922, "src": "1039:8:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", "typeString": "type(library OrderLib)" } }, "id": 50946, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1048:14:66", "memberName": "ConstraintMode", "nodeType": "MemberAccess", "referencedDeclaration": 46588, "src": "1039:23:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_ConstraintMode_$46588_$", "typeString": "type(enum OrderLib.ConstraintMode)" } }, "id": 50947, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1063:4:66", "memberName": "Time", "nodeType": "MemberAccess", "referencedDeclaration": 46585, "src": "1039:28:66", "typeDescriptions": { "typeIdentifier": "t_enum$_ConstraintMode_$46588", "typeString": "enum OrderLib.ConstraintMode" } }, { "arguments": [ { "hexValue": "0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000046500", "id": 50950, "isConstant": false, "isLValue": false, "isPure": true, "kind": "hexString", "lValueRequested": false, "nodeType": "Literal", "src": "1075:261:66", "typeDescriptions": { "typeIdentifier": "t_stringliteral_fdc3da6604da139fd830802e0c50283498d8b9ad053a6aca40c46b37240ada80", "typeString": "literal_string hex\"0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000046500\"" }, "value": "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0004e\u0000" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_stringliteral_fdc3da6604da139fd830802e0c50283498d8b9ad053a6aca40c46b37240ada80", "typeString": "literal_string hex\"0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000046500\"" } ], "id": 50949, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1069:5:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", "typeString": "type(bytes storage pointer)" }, "typeName": { "id": 50948, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1069:5:66", "typeDescriptions": {} } }, "id": 50951, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1069:268:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_enum$_ConstraintMode_$46588", "typeString": "enum OrderLib.ConstraintMode" }, { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } ], "expression": { "id": 50943, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47922, "src": "1019:8:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", "typeString": "type(library OrderLib)" } }, "id": 50944, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1028:10:66", "memberName": "Constraint", "nodeType": "MemberAccess", "referencedDeclaration": 46594, "src": "1019:19:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_struct$_Constraint_$46594_storage_ptr_$", "typeString": "type(struct OrderLib.Constraint storage pointer)" } }, "id": 50952, "isConstant": false, "isLValue": false, "isPure": true, "kind": "structConstructorCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1019:319:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_Constraint_$46594_memory_ptr", "typeString": "struct OrderLib.Constraint memory" } }, "src": "1001:337:66", "typeDescriptions": { "typeIdentifier": "t_struct$_Constraint_$46594_memory_ptr", "typeString": "struct OrderLib.Constraint memory" } }, "id": 50954, "nodeType": "ExpressionStatement", "src": "1001:337:66" }, { "assignments": [ 50960 ], "declarations": [ { "constant": false, "id": 50960, "mutability": "mutable", "name": "constraints2", "nameLocation": "1377:12:66", "nodeType": "VariableDeclaration", "scope": 51079, "src": "1348:41:66", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Constraint[]" }, "typeName": { "baseType": { "id": 50958, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 50957, "name": "OrderLib.Constraint", "nameLocations": [ "1348:8:66", "1357:10:66" ], "nodeType": "IdentifierPath", "referencedDeclaration": 46594, "src": "1348:19:66" }, "referencedDeclaration": 46594, "src": "1348:19:66", "typeDescriptions": { "typeIdentifier": "t_struct$_Constraint_$46594_storage_ptr", "typeString": "struct OrderLib.Constraint" } }, "id": 50959, "nodeType": "ArrayTypeName", "src": "1348:21:66", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_storage_$dyn_storage_ptr", "typeString": "struct OrderLib.Constraint[]" } }, "visibility": "internal" } ], "id": 50967, "initialValue": { "arguments": [ { "hexValue": "31", "id": 50965, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1418:1:66", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" } ], "id": 50964, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", "src": "1392:25:66", "typeDescriptions": { "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr_$", "typeString": "function (uint256) pure returns (struct OrderLib.Constraint memory[] memory)" }, "typeName": { "baseType": { "id": 50962, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 50961, "name": "OrderLib.Constraint", "nameLocations": [ "1396:8:66", "1405:10:66" ], "nodeType": "IdentifierPath", "referencedDeclaration": 46594, "src": "1396:19:66" }, "referencedDeclaration": 46594, "src": "1396:19:66", "typeDescriptions": { "typeIdentifier": "t_struct$_Constraint_$46594_storage_ptr", "typeString": "struct OrderLib.Constraint" } }, "id": 50963, "nodeType": "ArrayTypeName", "src": "1396:21:66", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_storage_$dyn_storage_ptr", "typeString": "struct OrderLib.Constraint[]" } } }, "id": 50966, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1392:28:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Constraint memory[] memory" } }, "nodeType": "VariableDeclarationStatement", "src": "1348:72:66" }, { "expression": { "id": 50981, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { "id": 50968, "name": "constraints2", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 50960, "src": "1430:12:66", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Constraint memory[] memory" } }, "id": 50970, "indexExpression": { "hexValue": "30", "id": 50969, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1443:1:66", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1430:15:66", "typeDescriptions": { "typeIdentifier": "t_struct$_Constraint_$46594_memory_ptr", "typeString": "struct OrderLib.Constraint memory" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "arguments": [ { "expression": { "expression": { "id": 50973, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47922, "src": "1468:8:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", "typeString": "type(library OrderLib)" } }, "id": 50974, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1477:14:66", "memberName": "ConstraintMode", "nodeType": "MemberAccess", "referencedDeclaration": 46588, "src": "1468:23:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_ConstraintMode_$46588_$", "typeString": "type(enum OrderLib.ConstraintMode)" } }, "id": 50975, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1492:4:66", "memberName": "Time", "nodeType": "MemberAccess", "referencedDeclaration": 46585, "src": "1468:28:66", "typeDescriptions": { "typeIdentifier": "t_enum$_ConstraintMode_$46588", "typeString": "enum OrderLib.ConstraintMode" } }, { "arguments": [ { "hexValue": "000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000464fb0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000008c9fb", "id": 50978, "isConstant": false, "isLValue": false, "isPure": true, "kind": "hexString", "lValueRequested": false, "nodeType": "Literal", "src": "1504:261:66", "typeDescriptions": { "typeIdentifier": "t_stringliteral_6c1baa90729cd095cd5e0bfa18e906ff5c09d6f932a7b0e32b71f272a3f8fa2c", "typeString": "literal_string hex\"000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000464fb0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000008c9fb\"" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_stringliteral_6c1baa90729cd095cd5e0bfa18e906ff5c09d6f932a7b0e32b71f272a3f8fa2c", "typeString": "literal_string hex\"000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000464fb0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000008c9fb\"" } ], "id": 50977, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1498:5:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", "typeString": "type(bytes storage pointer)" }, "typeName": { "id": 50976, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1498:5:66", "typeDescriptions": {} } }, "id": 50979, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1498:268:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_enum$_ConstraintMode_$46588", "typeString": "enum OrderLib.ConstraintMode" }, { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } ], "expression": { "id": 50971, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47922, "src": "1448:8:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", "typeString": "type(library OrderLib)" } }, "id": 50972, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1457:10:66", "memberName": "Constraint", "nodeType": "MemberAccess", "referencedDeclaration": 46594, "src": "1448:19:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_struct$_Constraint_$46594_storage_ptr_$", "typeString": "type(struct OrderLib.Constraint storage pointer)" } }, "id": 50980, "isConstant": false, "isLValue": false, "isPure": true, "kind": "structConstructorCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1448:319:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_Constraint_$46594_memory_ptr", "typeString": "struct OrderLib.Constraint memory" } }, "src": "1430:337:66", "typeDescriptions": { "typeIdentifier": "t_struct$_Constraint_$46594_memory_ptr", "typeString": "struct OrderLib.Constraint memory" } }, "id": 50982, "nodeType": "ExpressionStatement", "src": "1430:337:66" }, { "assignments": [ 50988 ], "declarations": [ { "constant": false, "id": 50988, "mutability": "mutable", "name": "constraints3", "nameLocation": "1806:12:66", "nodeType": "VariableDeclaration", "scope": 51079, "src": "1777:41:66", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Constraint[]" }, "typeName": { "baseType": { "id": 50986, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 50985, "name": "OrderLib.Constraint", "nameLocations": [ "1777:8:66", "1786:10:66" ], "nodeType": "IdentifierPath", "referencedDeclaration": 46594, "src": "1777:19:66" }, "referencedDeclaration": 46594, "src": "1777:19:66", "typeDescriptions": { "typeIdentifier": "t_struct$_Constraint_$46594_storage_ptr", "typeString": "struct OrderLib.Constraint" } }, "id": 50987, "nodeType": "ArrayTypeName", "src": "1777:21:66", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_storage_$dyn_storage_ptr", "typeString": "struct OrderLib.Constraint[]" } }, "visibility": "internal" } ], "id": 50995, "initialValue": { "arguments": [ { "hexValue": "31", "id": 50993, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1847:1:66", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" } ], "id": 50992, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", "src": "1821:25:66", "typeDescriptions": { "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr_$", "typeString": "function (uint256) pure returns (struct OrderLib.Constraint memory[] memory)" }, "typeName": { "baseType": { "id": 50990, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 50989, "name": "OrderLib.Constraint", "nameLocations": [ "1825:8:66", "1834:10:66" ], "nodeType": "IdentifierPath", "referencedDeclaration": 46594, "src": "1825:19:66" }, "referencedDeclaration": 46594, "src": "1825:19:66", "typeDescriptions": { "typeIdentifier": "t_struct$_Constraint_$46594_storage_ptr", "typeString": "struct OrderLib.Constraint" } }, "id": 50991, "nodeType": "ArrayTypeName", "src": "1825:21:66", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_storage_$dyn_storage_ptr", "typeString": "struct OrderLib.Constraint[]" } } }, "id": 50994, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1821:28:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Constraint memory[] memory" } }, "nodeType": "VariableDeclarationStatement", "src": "1777:72:66" }, { "expression": { "id": 51009, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { "id": 50996, "name": "constraints3", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 50988, "src": "1859:12:66", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Constraint memory[] memory" } }, "id": 50998, "indexExpression": { "hexValue": "30", "id": 50997, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1872:1:66", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "1859:15:66", "typeDescriptions": { "typeIdentifier": "t_struct$_Constraint_$46594_memory_ptr", "typeString": "struct OrderLib.Constraint memory" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "arguments": [ { "expression": { "expression": { "id": 51001, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47922, "src": "1897:8:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", "typeString": "type(library OrderLib)" } }, "id": 51002, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1906:14:66", "memberName": "ConstraintMode", "nodeType": "MemberAccess", "referencedDeclaration": 46588, "src": "1897:23:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_ConstraintMode_$46588_$", "typeString": "type(enum OrderLib.ConstraintMode)" } }, "id": 51003, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "1921:4:66", "memberName": "Time", "nodeType": "MemberAccess", "referencedDeclaration": 46585, "src": "1897:28:66", "typeDescriptions": { "typeIdentifier": "t_enum$_ConstraintMode_$46588", "typeString": "enum OrderLib.ConstraintMode" } }, { "arguments": [ { "hexValue": "0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000008c9f6000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000d2ef6", "id": 51006, "isConstant": false, "isLValue": false, "isPure": true, "kind": "hexString", "lValueRequested": false, "nodeType": "Literal", "src": "1933:261:66", "typeDescriptions": { "typeIdentifier": "t_stringliteral_f868a59b2eb5b79dd27941f27d5fb74661b069a2192b78e60906c7276e9033fe", "typeString": "literal_string hex\"0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000008c9f6000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000d2ef6\"" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_stringliteral_f868a59b2eb5b79dd27941f27d5fb74661b069a2192b78e60906c7276e9033fe", "typeString": "literal_string hex\"0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000008c9f6000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000d2ef6\"" } ], "id": 51005, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1927:5:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", "typeString": "type(bytes storage pointer)" }, "typeName": { "id": 51004, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1927:5:66", "typeDescriptions": {} } }, "id": 51007, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1927:268:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_enum$_ConstraintMode_$46588", "typeString": "enum OrderLib.ConstraintMode" }, { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } ], "expression": { "id": 50999, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47922, "src": "1877:8:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", "typeString": "type(library OrderLib)" } }, "id": 51000, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "1886:10:66", "memberName": "Constraint", "nodeType": "MemberAccess", "referencedDeclaration": 46594, "src": "1877:19:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_struct$_Constraint_$46594_storage_ptr_$", "typeString": "type(struct OrderLib.Constraint storage pointer)" } }, "id": 51008, "isConstant": false, "isLValue": false, "isPure": true, "kind": "structConstructorCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "1877:319:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_Constraint_$46594_memory_ptr", "typeString": "struct OrderLib.Constraint memory" } }, "src": "1859:337:66", "typeDescriptions": { "typeIdentifier": "t_struct$_Constraint_$46594_memory_ptr", "typeString": "struct OrderLib.Constraint memory" } }, "id": 51010, "nodeType": "ExpressionStatement", "src": "1859:337:66" }, { "expression": { "id": 51019, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { "id": 51011, "name": "tranches", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 50919, "src": "2206:8:66", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Tranche memory[] memory" } }, "id": 51013, "indexExpression": { "hexValue": "30", "id": 51012, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2215:1:66", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2206:11:66", "typeDescriptions": { "typeIdentifier": "t_struct$_Tranche_$46638_memory_ptr", "typeString": "struct OrderLib.Tranche memory" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "arguments": [ { "hexValue": "3231383435", "id": 51016, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2237:5:66", "typeDescriptions": { "typeIdentifier": "t_rational_21845_by_1", "typeString": "int_const 21845" }, "value": "21845" }, { "id": 51017, "name": "constraints1", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 50932, "src": "2243:12:66", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Constraint memory[] memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_21845_by_1", "typeString": "int_const 21845" }, { "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Constraint memory[] memory" } ], "expression": { "id": 51014, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47922, "src": "2220:8:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", "typeString": "type(library OrderLib)" } }, "id": 51015, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2229:7:66", "memberName": "Tranche", "nodeType": "MemberAccess", "referencedDeclaration": 46638, "src": "2220:16:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_struct$_Tranche_$46638_storage_ptr_$", "typeString": "type(struct OrderLib.Tranche storage pointer)" } }, "id": 51018, "isConstant": false, "isLValue": false, "isPure": false, "kind": "structConstructorCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2220:36:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_Tranche_$46638_memory_ptr", "typeString": "struct OrderLib.Tranche memory" } }, "src": "2206:50:66", "typeDescriptions": { "typeIdentifier": "t_struct$_Tranche_$46638_memory_ptr", "typeString": "struct OrderLib.Tranche memory" } }, "id": 51020, "nodeType": "ExpressionStatement", "src": "2206:50:66" }, { "expression": { "id": 51029, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { "id": 51021, "name": "tranches", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 50919, "src": "2266:8:66", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Tranche memory[] memory" } }, "id": 51023, "indexExpression": { "hexValue": "31", "id": 51022, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2275:1:66", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2266:11:66", "typeDescriptions": { "typeIdentifier": "t_struct$_Tranche_$46638_memory_ptr", "typeString": "struct OrderLib.Tranche memory" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "arguments": [ { "hexValue": "3231383435", "id": 51026, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2297:5:66", "typeDescriptions": { "typeIdentifier": "t_rational_21845_by_1", "typeString": "int_const 21845" }, "value": "21845" }, { "id": 51027, "name": "constraints2", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 50960, "src": "2303:12:66", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Constraint memory[] memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_21845_by_1", "typeString": "int_const 21845" }, { "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Constraint memory[] memory" } ], "expression": { "id": 51024, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47922, "src": "2280:8:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", "typeString": "type(library OrderLib)" } }, "id": 51025, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2289:7:66", "memberName": "Tranche", "nodeType": "MemberAccess", "referencedDeclaration": 46638, "src": "2280:16:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_struct$_Tranche_$46638_storage_ptr_$", "typeString": "type(struct OrderLib.Tranche storage pointer)" } }, "id": 51028, "isConstant": false, "isLValue": false, "isPure": false, "kind": "structConstructorCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2280:36:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_Tranche_$46638_memory_ptr", "typeString": "struct OrderLib.Tranche memory" } }, "src": "2266:50:66", "typeDescriptions": { "typeIdentifier": "t_struct$_Tranche_$46638_memory_ptr", "typeString": "struct OrderLib.Tranche memory" } }, "id": 51030, "nodeType": "ExpressionStatement", "src": "2266:50:66" }, { "expression": { "id": 51039, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { "id": 51031, "name": "tranches", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 50919, "src": "2326:8:66", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Tranche memory[] memory" } }, "id": 51033, "indexExpression": { "hexValue": "32", "id": 51032, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2335:1:66", "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2" }, "value": "2" }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2326:11:66", "typeDescriptions": { "typeIdentifier": "t_struct$_Tranche_$46638_memory_ptr", "typeString": "struct OrderLib.Tranche memory" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "arguments": [ { "hexValue": "3231383435", "id": 51036, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2357:5:66", "typeDescriptions": { "typeIdentifier": "t_rational_21845_by_1", "typeString": "int_const 21845" }, "value": "21845" }, { "id": 51037, "name": "constraints3", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 50988, "src": "2363:12:66", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Constraint memory[] memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_21845_by_1", "typeString": "int_const 21845" }, { "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Constraint memory[] memory" } ], "expression": { "id": 51034, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47922, "src": "2340:8:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", "typeString": "type(library OrderLib)" } }, "id": 51035, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2349:7:66", "memberName": "Tranche", "nodeType": "MemberAccess", "referencedDeclaration": 46638, "src": "2340:16:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_struct$_Tranche_$46638_storage_ptr_$", "typeString": "type(struct OrderLib.Tranche storage pointer)" } }, "id": 51038, "isConstant": false, "isLValue": false, "isPure": false, "kind": "structConstructorCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2340:36:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_Tranche_$46638_memory_ptr", "typeString": "struct OrderLib.Tranche memory" } }, "src": "2326:50:66", "typeDescriptions": { "typeIdentifier": "t_struct$_Tranche_$46638_memory_ptr", "typeString": "struct OrderLib.Tranche memory" } }, "id": 51040, "nodeType": "ExpressionStatement", "src": "2326:50:66" }, { "assignments": [ 51045 ], "declarations": [ { "constant": false, "id": 51045, "mutability": "mutable", "name": "order", "nameLocation": "2412:5:66", "nodeType": "VariableDeclaration", "scope": 51079, "src": "2386:31:66", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr", "typeString": "struct OrderLib.SwapOrder" }, "typeName": { "id": 51044, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 51043, "name": "OrderLib.SwapOrder", "nameLocations": [ "2386:8:66", "2395:9:66" ], "nodeType": "IdentifierPath", "referencedDeclaration": 46563, "src": "2386:18:66" }, "referencedDeclaration": 46563, "src": "2386:18:66", "typeDescriptions": { "typeIdentifier": "t_struct$_SwapOrder_$46563_storage_ptr", "typeString": "struct OrderLib.SwapOrder" } }, "visibility": "internal" } ], "id": 51063, "initialValue": { "arguments": [ { "hexValue": "307846643038366243374344354334383144434339433835656245343738413143306236394643626239", "id": 51048, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2453:42:66", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "value": "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9" }, { "hexValue": "307838326146343934343744386130376533626439354244306435366633353234313532336642616231", "id": 51049, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2497:42:66", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "value": "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1" }, { "arguments": [ { "expression": { "expression": { "id": 51052, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47922, "src": "2568:8:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", "typeString": "type(library OrderLib)" } }, "id": 51053, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2577:8:66", "memberName": "Exchange", "nodeType": "MemberAccess", "referencedDeclaration": 46537, "src": "2568:17:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_Exchange_$46537_$", "typeString": "type(enum OrderLib.Exchange)" } }, "id": 51054, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "2586:9:66", "memberName": "UniswapV3", "nodeType": "MemberAccess", "referencedDeclaration": 46536, "src": "2568:27:66", "typeDescriptions": { "typeIdentifier": "t_enum$_Exchange_$46537", "typeString": "enum OrderLib.Exchange" } }, { "hexValue": "353030", "id": 51055, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2597:3:66", "typeDescriptions": { "typeIdentifier": "t_rational_500_by_1", "typeString": "int_const 500" }, "value": "500" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_enum$_Exchange_$46537", "typeString": "enum OrderLib.Exchange" }, { "typeIdentifier": "t_rational_500_by_1", "typeString": "int_const 500" } ], "expression": { "id": 51050, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47922, "src": "2553:8:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", "typeString": "type(library OrderLib)" } }, "id": 51051, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2562:5:66", "memberName": "Route", "nodeType": "MemberAccess", "referencedDeclaration": 46543, "src": "2553:14:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_struct$_Route_$46543_storage_ptr_$", "typeString": "type(struct OrderLib.Route storage pointer)" } }, "id": 51056, "isConstant": false, "isLValue": false, "isPure": true, "kind": "structConstructorCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2553:48:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_Route_$46543_memory_ptr", "typeString": "struct OrderLib.Route memory" } }, { "hexValue": "313030303030303030303030303030303030303030", "id": 51057, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2603:21:66", "typeDescriptions": { "typeIdentifier": "t_rational_100000000000000000000_by_1", "typeString": "int_const 100000000000000000000" }, "value": "100000000000000000000" }, { "hexValue": "74727565", "id": 51058, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "2626:4:66", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, { "hexValue": "66616c7365", "id": 51059, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "2632:5:66", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "false" }, { "hexValue": "3138343436373434303733373039353531363135", "id": 51060, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2651:20:66", "typeDescriptions": { "typeIdentifier": "t_rational_18446744073709551615_by_1", "typeString": "int_const 18446744073709551615" }, "value": "18446744073709551615" }, { "id": 51061, "name": "tranches", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 50919, "src": "2673:8:66", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Tranche memory[] memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_struct$_Route_$46543_memory_ptr", "typeString": "struct OrderLib.Route memory" }, { "typeIdentifier": "t_rational_100000000000000000000_by_1", "typeString": "int_const 100000000000000000000" }, { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_rational_18446744073709551615_by_1", "typeString": "int_const 18446744073709551615" }, { "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Tranche memory[] memory" } ], "expression": { "id": 51046, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47922, "src": "2421:8:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", "typeString": "type(library OrderLib)" } }, "id": 51047, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2430:9:66", "memberName": "SwapOrder", "nodeType": "MemberAccess", "referencedDeclaration": 46563, "src": "2421:18:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_struct$_SwapOrder_$46563_storage_ptr_$", "typeString": "type(struct OrderLib.SwapOrder storage pointer)" } }, "id": 51062, "isConstant": false, "isLValue": false, "isPure": false, "kind": "structConstructorCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2421:270:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr", "typeString": "struct OrderLib.SwapOrder memory" } }, "nodeType": "VariableDeclarationStatement", "src": "2386:305:66" }, { "expression": { "arguments": [ { "arguments": [ { "id": 51069, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 51045, "src": "2730:5:66", "typeDescriptions": { "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr", "typeString": "struct OrderLib.SwapOrder memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr", "typeString": "struct OrderLib.SwapOrder memory" } ], "expression": { "id": 51067, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "2719:3:66", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, "id": 51068, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "2723:6:66", "memberName": "encode", "nodeType": "MemberAccess", "src": "2719:10:66", "typeDescriptions": { "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" } }, "id": 51070, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2719:17:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } ], "expression": { "id": 51064, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 29653, "src": "2701:8:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_console2_$29653_$", "typeString": "type(library console2)" } }, "id": 51066, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2710:8:66", "memberName": "logBytes", "nodeType": "MemberAccess", "referencedDeclaration": 21677, "src": "2701:17:66", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) pure" } }, "id": 51071, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2701:36:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 51072, "nodeType": "ExpressionStatement", "src": "2701:36:66" }, { "expression": { "arguments": [ { "id": 51076, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 51045, "src": "2764:5:66", "typeDescriptions": { "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr", "typeString": "struct OrderLib.SwapOrder memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr", "typeString": "struct OrderLib.SwapOrder memory" } ], "expression": { "id": 51073, "name": "vault", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 50845, "src": "2747:5:66", "typeDescriptions": { "typeIdentifier": "t_contract$_Vault_$49181", "typeString": "contract Vault" } }, "id": 51075, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "2753:10:66", "memberName": "placeOrder", "nodeType": "MemberAccess", "referencedDeclaration": 49089, "src": "2747:16:66", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_struct$_SwapOrder_$46563_memory_ptr_$returns$__$", "typeString": "function (struct OrderLib.SwapOrder memory) external" } }, "id": 51077, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2747:23:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 51078, "nodeType": "ExpressionStatement", "src": "2747:23:66" } ] }, "functionSelector": "6fe2ae0e", "implemented": true, "kind": "function", "modifiers": [], "name": "testPlaceOrder", "nameLocation": "813:14:66", "parameters": { "id": 50912, "nodeType": "ParameterList", "parameters": [], "src": "827:2:66" }, "returnParameters": { "id": 50913, "nodeType": "ParameterList", "parameters": [], "src": "837:0:66" }, "scope": 51614, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "id": 51235, "nodeType": "FunctionDefinition", "src": "2783:1272:66", "nodes": [], "body": { "id": 51234, "nodeType": "Block", "src": "2829:1226:66", "nodes": [], "statements": [ { "assignments": [ 51088 ], "declarations": [ { "constant": false, "id": 51088, "mutability": "mutable", "name": "tranches", "nameLocation": "2865:8:66", "nodeType": "VariableDeclaration", "scope": 51234, "src": "2839:34:66", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Tranche[]" }, "typeName": { "baseType": { "id": 51086, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 51085, "name": "OrderLib.Tranche", "nameLocations": [ "2839:8:66", "2848:7:66" ], "nodeType": "IdentifierPath", "referencedDeclaration": 46638, "src": "2839:16:66" }, "referencedDeclaration": 46638, "src": "2839:16:66", "typeDescriptions": { "typeIdentifier": "t_struct$_Tranche_$46638_storage_ptr", "typeString": "struct OrderLib.Tranche" } }, "id": 51087, "nodeType": "ArrayTypeName", "src": "2839:18:66", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_storage_$dyn_storage_ptr", "typeString": "struct OrderLib.Tranche[]" } }, "visibility": "internal" } ], "id": 51095, "initialValue": { "arguments": [ { "hexValue": "31", "id": 51093, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2899:1:66", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" } ], "id": 51092, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", "src": "2876:22:66", "typeDescriptions": { "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr_$", "typeString": "function (uint256) pure returns (struct OrderLib.Tranche memory[] memory)" }, "typeName": { "baseType": { "id": 51090, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 51089, "name": "OrderLib.Tranche", "nameLocations": [ "2880:8:66", "2889:7:66" ], "nodeType": "IdentifierPath", "referencedDeclaration": 46638, "src": "2880:16:66" }, "referencedDeclaration": 46638, "src": "2880:16:66", "typeDescriptions": { "typeIdentifier": "t_struct$_Tranche_$46638_storage_ptr", "typeString": "struct OrderLib.Tranche" } }, "id": 51091, "nodeType": "ArrayTypeName", "src": "2880:18:66", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_storage_$dyn_storage_ptr", "typeString": "struct OrderLib.Tranche[]" } } }, "id": 51094, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2876:25:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Tranche memory[] memory" } }, "nodeType": "VariableDeclarationStatement", "src": "2839:62:66" }, { "assignments": [ 51101 ], "declarations": [ { "constant": false, "id": 51101, "mutability": "mutable", "name": "constraints1", "nameLocation": "2940:12:66", "nodeType": "VariableDeclaration", "scope": 51234, "src": "2911:41:66", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Constraint[]" }, "typeName": { "baseType": { "id": 51099, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 51098, "name": "OrderLib.Constraint", "nameLocations": [ "2911:8:66", "2920:10:66" ], "nodeType": "IdentifierPath", "referencedDeclaration": 46594, "src": "2911:19:66" }, "referencedDeclaration": 46594, "src": "2911:19:66", "typeDescriptions": { "typeIdentifier": "t_struct$_Constraint_$46594_storage_ptr", "typeString": "struct OrderLib.Constraint" } }, "id": 51100, "nodeType": "ArrayTypeName", "src": "2911:21:66", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_storage_$dyn_storage_ptr", "typeString": "struct OrderLib.Constraint[]" } }, "visibility": "internal" } ], "id": 51108, "initialValue": { "arguments": [ { "hexValue": "31", "id": 51106, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2981:1:66", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" } ], "id": 51105, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", "src": "2955:25:66", "typeDescriptions": { "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr_$", "typeString": "function (uint256) pure returns (struct OrderLib.Constraint memory[] memory)" }, "typeName": { "baseType": { "id": 51103, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 51102, "name": "OrderLib.Constraint", "nameLocations": [ "2959:8:66", "2968:10:66" ], "nodeType": "IdentifierPath", "referencedDeclaration": 46594, "src": "2959:19:66" }, "referencedDeclaration": 46594, "src": "2959:19:66", "typeDescriptions": { "typeIdentifier": "t_struct$_Constraint_$46594_storage_ptr", "typeString": "struct OrderLib.Constraint" } }, "id": 51104, "nodeType": "ArrayTypeName", "src": "2959:21:66", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_storage_$dyn_storage_ptr", "typeString": "struct OrderLib.Constraint[]" } } }, "id": 51107, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "2955:28:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Constraint memory[] memory" } }, "nodeType": "VariableDeclarationStatement", "src": "2911:72:66" }, { "expression": { "id": 51122, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { "id": 51109, "name": "constraints1", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 51101, "src": "2993:12:66", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Constraint memory[] memory" } }, "id": 51111, "indexExpression": { "hexValue": "30", "id": 51110, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3006:1:66", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2993:15:66", "typeDescriptions": { "typeIdentifier": "t_struct$_Constraint_$46594_memory_ptr", "typeString": "struct OrderLib.Constraint memory" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "arguments": [ { "expression": { "expression": { "id": 51114, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47922, "src": "3031:8:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", "typeString": "type(library OrderLib)" } }, "id": 51115, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3040:14:66", "memberName": "ConstraintMode", "nodeType": "MemberAccess", "referencedDeclaration": 46588, "src": "3031:23:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_ConstraintMode_$46588_$", "typeString": "type(enum OrderLib.ConstraintMode)" } }, "id": 51116, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "3055:4:66", "memberName": "Time", "nodeType": "MemberAccess", "referencedDeclaration": 46585, "src": "3031:28:66", "typeDescriptions": { "typeIdentifier": "t_enum$_ConstraintMode_$46588", "typeString": "enum OrderLib.ConstraintMode" } }, { "arguments": [ { "hexValue": "0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000046500", "id": 51119, "isConstant": false, "isLValue": false, "isPure": true, "kind": "hexString", "lValueRequested": false, "nodeType": "Literal", "src": "3067:261:66", "typeDescriptions": { "typeIdentifier": "t_stringliteral_fdc3da6604da139fd830802e0c50283498d8b9ad053a6aca40c46b37240ada80", "typeString": "literal_string hex\"0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000046500\"" }, "value": "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0004e\u0000" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_stringliteral_fdc3da6604da139fd830802e0c50283498d8b9ad053a6aca40c46b37240ada80", "typeString": "literal_string hex\"0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000046500\"" } ], "id": 51118, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3061:5:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", "typeString": "type(bytes storage pointer)" }, "typeName": { "id": 51117, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3061:5:66", "typeDescriptions": {} } }, "id": 51120, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3061:268:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_enum$_ConstraintMode_$46588", "typeString": "enum OrderLib.ConstraintMode" }, { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } ], "expression": { "id": 51112, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47922, "src": "3011:8:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", "typeString": "type(library OrderLib)" } }, "id": 51113, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3020:10:66", "memberName": "Constraint", "nodeType": "MemberAccess", "referencedDeclaration": 46594, "src": "3011:19:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_struct$_Constraint_$46594_storage_ptr_$", "typeString": "type(struct OrderLib.Constraint storage pointer)" } }, "id": 51121, "isConstant": false, "isLValue": false, "isPure": true, "kind": "structConstructorCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3011:319:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_Constraint_$46594_memory_ptr", "typeString": "struct OrderLib.Constraint memory" } }, "src": "2993:337:66", "typeDescriptions": { "typeIdentifier": "t_struct$_Constraint_$46594_memory_ptr", "typeString": "struct OrderLib.Constraint memory" } }, "id": 51123, "nodeType": "ExpressionStatement", "src": "2993:337:66" }, { "expression": { "id": 51136, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { "id": 51124, "name": "tranches", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 51088, "src": "3340:8:66", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Tranche memory[] memory" } }, "id": 51126, "indexExpression": { "hexValue": "30", "id": 51125, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3349:1:66", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "3340:11:66", "typeDescriptions": { "typeIdentifier": "t_struct$_Tranche_$46638_memory_ptr", "typeString": "struct OrderLib.Tranche memory" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "arguments": [ { "expression": { "arguments": [ { "id": 51131, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3376:6:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint16_$", "typeString": "type(uint16)" }, "typeName": { "id": 51130, "name": "uint16", "nodeType": "ElementaryTypeName", "src": "3376:6:66", "typeDescriptions": {} } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_type$_t_uint16_$", "typeString": "type(uint16)" } ], "id": 51129, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "3371:4:66", "typeDescriptions": { "typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure" } }, "id": 51132, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3371:12:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_magic_meta_type_t_uint16", "typeString": "type(uint16)" } }, "id": 51133, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "3384:3:66", "memberName": "max", "nodeType": "MemberAccess", "src": "3371:16:66", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" } }, { "id": 51134, "name": "constraints1", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 51101, "src": "3388:12:66", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Constraint memory[] memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint16", "typeString": "uint16" }, { "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Constraint memory[] memory" } ], "expression": { "id": 51127, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47922, "src": "3354:8:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", "typeString": "type(library OrderLib)" } }, "id": 51128, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3363:7:66", "memberName": "Tranche", "nodeType": "MemberAccess", "referencedDeclaration": 46638, "src": "3354:16:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_struct$_Tranche_$46638_storage_ptr_$", "typeString": "type(struct OrderLib.Tranche storage pointer)" } }, "id": 51135, "isConstant": false, "isLValue": false, "isPure": false, "kind": "structConstructorCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3354:47:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_Tranche_$46638_memory_ptr", "typeString": "struct OrderLib.Tranche memory" } }, "src": "3340:61:66", "typeDescriptions": { "typeIdentifier": "t_struct$_Tranche_$46638_memory_ptr", "typeString": "struct OrderLib.Tranche memory" } }, "id": 51137, "nodeType": "ExpressionStatement", "src": "3340:61:66" }, { "assignments": [ 51139 ], "declarations": [ { "constant": false, "id": 51139, "mutability": "mutable", "name": "amount", "nameLocation": "3419:6:66", "nodeType": "VariableDeclaration", "scope": 51234, "src": "3411:14:66", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 51138, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "3411:7:66", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "id": 51149, "initialValue": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 51148, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 51146, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "hexValue": "33", "id": 51140, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3428:1:66", "typeDescriptions": { "typeIdentifier": "t_rational_3_by_1", "typeString": "int_const 3" }, "value": "3" }, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 51145, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "hexValue": "3130", "id": 51141, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3430:2:66", "typeDescriptions": { "typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10" }, "value": "10" }, "nodeType": "BinaryOperation", "operator": "**", "rightExpression": { "arguments": [], "expression": { "argumentTypes": [], "expression": { "id": 51142, "name": "USD", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49478, "src": "3434:3:66", "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46478", "typeString": "contract MockERC20" } }, "id": 51143, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3438:8:66", "memberName": "decimals", "nodeType": "MemberAccess", "referencedDeclaration": 46464, "src": "3434:12:66", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", "typeString": "function () view external returns (uint8)" } }, "id": 51144, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3434:14:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "3430:18:66", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3428:20:66", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": { "hexValue": "3130", "id": 51147, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3451:2:66", "typeDescriptions": { "typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10" }, "value": "10" }, "src": "3428:25:66", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "3411:42:66" }, { "expression": { "arguments": [ { "arguments": [ { "id": 51155, "name": "vault", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 50845, "src": "3492:5:66", "typeDescriptions": { "typeIdentifier": "t_contract$_Vault_$49181", "typeString": "contract Vault" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_Vault_$49181", "typeString": "contract Vault" } ], "id": 51154, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3484:7:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 51153, "name": "address", "nodeType": "ElementaryTypeName", "src": "3484:7:66", "typeDescriptions": {} } }, "id": 51156, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3484:14:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 51157, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 51139, "src": "3500:6:66", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 51150, "name": "COIN", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49475, "src": "3474:4:66", "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46478", "typeString": "contract MockERC20" } }, "id": 51152, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3479:4:66", "memberName": "mint", "nodeType": "MemberAccess", "referencedDeclaration": 46477, "src": "3474:9:66", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256) external" } }, "id": 51158, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3474:33:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 51159, "nodeType": "ExpressionStatement", "src": "3474:33:66" }, { "assignments": [ 51164 ], "declarations": [ { "constant": false, "id": 51164, "mutability": "mutable", "name": "order", "nameLocation": "3566:5:66", "nodeType": "VariableDeclaration", "scope": 51234, "src": "3540:31:66", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr", "typeString": "struct OrderLib.SwapOrder" }, "typeName": { "id": 51163, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 51162, "name": "OrderLib.SwapOrder", "nameLocations": [ "3540:8:66", "3549:9:66" ], "nodeType": "IdentifierPath", "referencedDeclaration": 46563, "src": "3540:18:66" }, "referencedDeclaration": 46563, "src": "3540:18:66", "typeDescriptions": { "typeIdentifier": "t_struct$_SwapOrder_$46563_storage_ptr", "typeString": "struct OrderLib.SwapOrder" } }, "visibility": "internal" } ], "id": 51189, "initialValue": { "arguments": [ { "arguments": [ { "id": 51169, "name": "COIN", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49475, "src": "3615:4:66", "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46478", "typeString": "contract MockERC20" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_MockERC20_$46478", "typeString": "contract MockERC20" } ], "id": 51168, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3607:7:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 51167, "name": "address", "nodeType": "ElementaryTypeName", "src": "3607:7:66", "typeDescriptions": {} } }, "id": 51170, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3607:13:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "arguments": [ { "id": 51173, "name": "USD", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49478, "src": "3630:3:66", "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46478", "typeString": "contract MockERC20" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_MockERC20_$46478", "typeString": "contract MockERC20" } ], "id": 51172, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3622:7:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 51171, "name": "address", "nodeType": "ElementaryTypeName", "src": "3622:7:66", "typeDescriptions": {} } }, "id": 51174, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3622:12:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "arguments": [ { "expression": { "expression": { "id": 51177, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47922, "src": "3684:8:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", "typeString": "type(library OrderLib)" } }, "id": 51178, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3693:8:66", "memberName": "Exchange", "nodeType": "MemberAccess", "referencedDeclaration": 46537, "src": "3684:17:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_Exchange_$46537_$", "typeString": "type(enum OrderLib.Exchange)" } }, "id": 51179, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "3702:9:66", "memberName": "UniswapV3", "nodeType": "MemberAccess", "referencedDeclaration": 46536, "src": "3684:27:66", "typeDescriptions": { "typeIdentifier": "t_enum$_Exchange_$46537", "typeString": "enum OrderLib.Exchange" } }, { "hexValue": "353030", "id": 51180, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3713:3:66", "typeDescriptions": { "typeIdentifier": "t_rational_500_by_1", "typeString": "int_const 500" }, "value": "500" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_enum$_Exchange_$46537", "typeString": "enum OrderLib.Exchange" }, { "typeIdentifier": "t_rational_500_by_1", "typeString": "int_const 500" } ], "expression": { "id": 51175, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47922, "src": "3669:8:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", "typeString": "type(library OrderLib)" } }, "id": 51176, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3678:5:66", "memberName": "Route", "nodeType": "MemberAccess", "referencedDeclaration": 46543, "src": "3669:14:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_struct$_Route_$46543_storage_ptr_$", "typeString": "type(struct OrderLib.Route storage pointer)" } }, "id": 51181, "isConstant": false, "isLValue": false, "isPure": true, "kind": "structConstructorCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3669:48:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_Route_$46543_memory_ptr", "typeString": "struct OrderLib.Route memory" } }, { "id": 51182, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 51139, "src": "3719:6:66", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "hexValue": "66616c7365", "id": 51183, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "3727:5:66", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "false" }, { "hexValue": "66616c7365", "id": 51184, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "3734:5:66", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "false" }, { "expression": { "id": 51185, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47922, "src": "3753:8:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", "typeString": "type(library OrderLib)" } }, "id": 51186, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "3762:8:66", "memberName": "NO_CHAIN", "nodeType": "MemberAccess", "referencedDeclaration": 46491, "src": "3753:17:66", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" } }, { "id": 51187, "name": "tranches", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 51088, "src": "3772:8:66", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Tranche memory[] memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_struct$_Route_$46543_memory_ptr", "typeString": "struct OrderLib.Route memory" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_uint64", "typeString": "uint64" }, { "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Tranche memory[] memory" } ], "expression": { "id": 51165, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47922, "src": "3575:8:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", "typeString": "type(library OrderLib)" } }, "id": 51166, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3584:9:66", "memberName": "SwapOrder", "nodeType": "MemberAccess", "referencedDeclaration": 46563, "src": "3575:18:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_struct$_SwapOrder_$46563_storage_ptr_$", "typeString": "type(struct OrderLib.SwapOrder storage pointer)" } }, "id": 51188, "isConstant": false, "isLValue": false, "isPure": false, "kind": "structConstructorCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3575:215:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr", "typeString": "struct OrderLib.SwapOrder memory" } }, "nodeType": "VariableDeclarationStatement", "src": "3540:250:66" }, { "assignments": [ 51191 ], "declarations": [ { "constant": false, "id": 51191, "mutability": "mutable", "name": "orderIndex", "nameLocation": "3807:10:66", "nodeType": "VariableDeclaration", "scope": 51234, "src": "3800:17:66", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" }, "typeName": { "id": 51190, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "3800:6:66", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" } }, "visibility": "internal" } ], "id": 51195, "initialValue": { "arguments": [], "expression": { "argumentTypes": [], "expression": { "id": 51192, "name": "vault", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 50845, "src": "3820:5:66", "typeDescriptions": { "typeIdentifier": "t_contract$_Vault_$49181", "typeString": "contract Vault" } }, "id": 51193, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3826:13:66", "memberName": "numSwapOrders", "nodeType": "MemberAccess", "referencedDeclaration": 49068, "src": "3820:19:66", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint64_$", "typeString": "function () view external returns (uint64)" } }, "id": 51194, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3820:21:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" } }, "nodeType": "VariableDeclarationStatement", "src": "3800:41:66" }, { "expression": { "arguments": [ { "id": 51199, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 51164, "src": "3868:5:66", "typeDescriptions": { "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr", "typeString": "struct OrderLib.SwapOrder memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr", "typeString": "struct OrderLib.SwapOrder memory" } ], "expression": { "id": 51196, "name": "vault", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 50845, "src": "3851:5:66", "typeDescriptions": { "typeIdentifier": "t_contract$_Vault_$49181", "typeString": "contract Vault" } }, "id": 51198, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3857:10:66", "memberName": "placeOrder", "nodeType": "MemberAccess", "referencedDeclaration": 49089, "src": "3851:16:66", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_struct$_SwapOrder_$46563_memory_ptr_$returns$__$", "typeString": "function (struct OrderLib.SwapOrder memory) external" } }, "id": 51200, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3851:23:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 51201, "nodeType": "ExpressionStatement", "src": "3851:23:66" }, { "expression": { "arguments": [ { "hexValue": "706c61636564206f72646572", "id": 51205, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3897:14:66", "typeDescriptions": { "typeIdentifier": "t_stringliteral_4f3f89a1ad7018d230e5e64ae81ee67f73b59ad397282a644409de4efc690398", "typeString": "literal_string \"placed order\"" }, "value": "placed order" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_stringliteral_4f3f89a1ad7018d230e5e64ae81ee67f73b59ad397282a644409de4efc690398", "typeString": "literal_string \"placed order\"" } ], "expression": { "id": 51202, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 29653, "src": "3884:8:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_console2_$29653_$", "typeString": "type(library console2)" } }, "id": 51204, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3893:3:66", "memberName": "log", "nodeType": "MemberAccess", "referencedDeclaration": 22167, "src": "3884:12:66", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) pure" } }, "id": 51206, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3884:28:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 51207, "nodeType": "ExpressionStatement", "src": "3884:28:66" }, { "expression": { "arguments": [ { "arguments": [ { "id": 51213, "name": "orderIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 51191, "src": "3940:10:66", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint64", "typeString": "uint64" } ], "id": 51212, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "3935:4:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { "id": 51211, "name": "uint", "nodeType": "ElementaryTypeName", "src": "3935:4:66", "typeDescriptions": {} } }, "id": 51214, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3935:16:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 51208, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 29653, "src": "3922:8:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_console2_$29653_$", "typeString": "type(library console2)" } }, "id": 51210, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3931:3:66", "memberName": "log", "nodeType": "MemberAccess", "referencedDeclaration": 22139, "src": "3922:12:66", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$__$", "typeString": "function (uint256) pure" } }, "id": 51215, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3922:30:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 51216, "nodeType": "ExpressionStatement", "src": "3922:30:66" }, { "expression": { "arguments": [ { "id": 51220, "name": "orderIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 51191, "src": "3976:10:66", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" } }, { "hexValue": "30", "id": 51221, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3988:1:66", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, { "arguments": [ { "hexValue": "30", "id": 51224, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4011:1:66", "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" } ], "expression": { "id": 51222, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47922, "src": "3991:8:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", "typeString": "type(library OrderLib)" } }, "id": 51223, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4000:10:66", "memberName": "PriceProof", "nodeType": "MemberAccess", "referencedDeclaration": 46641, "src": "3991:19:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_struct$_PriceProof_$46641_storage_ptr_$", "typeString": "type(struct OrderLib.PriceProof storage pointer)" } }, "id": 51225, "isConstant": false, "isLValue": false, "isPure": true, "kind": "structConstructorCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3991:22:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_PriceProof_$46641_memory_ptr", "typeString": "struct OrderLib.PriceProof memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint64", "typeString": "uint64" }, { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, { "typeIdentifier": "t_struct$_PriceProof_$46641_memory_ptr", "typeString": "struct OrderLib.PriceProof memory" } ], "expression": { "id": 51217, "name": "vault", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 50845, "src": "3962:5:66", "typeDescriptions": { "typeIdentifier": "t_contract$_Vault_$49181", "typeString": "contract Vault" } }, "id": 51219, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "3968:7:66", "memberName": "execute", "nodeType": "MemberAccess", "referencedDeclaration": 49143, "src": "3962:13:66", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint64_$_t_uint8_$_t_struct$_PriceProof_$46641_memory_ptr_$returns$__$", "typeString": "function (uint64,uint8,struct OrderLib.PriceProof memory) external" } }, "id": 51226, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "3962:52:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 51227, "nodeType": "ExpressionStatement", "src": "3962:52:66" }, { "expression": { "arguments": [ { "hexValue": "6578656375746564", "id": 51231, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4037:10:66", "typeDescriptions": { "typeIdentifier": "t_stringliteral_f3ebdf95d58ea2884647682da60cae155acb6afc2edc8ef359d6f9669663cde1", "typeString": "literal_string \"executed\"" }, "value": "executed" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_stringliteral_f3ebdf95d58ea2884647682da60cae155acb6afc2edc8ef359d6f9669663cde1", "typeString": "literal_string \"executed\"" } ], "expression": { "id": 51228, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 29653, "src": "4024:8:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_console2_$29653_$", "typeString": "type(library console2)" } }, "id": 51230, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4033:3:66", "memberName": "log", "nodeType": "MemberAccess", "referencedDeclaration": 22167, "src": "4024:12:66", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) pure" } }, "id": 51232, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4024:24:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 51233, "nodeType": "ExpressionStatement", "src": "4024:24:66" } ] }, "functionSelector": "9febdbf7", "implemented": true, "kind": "function", "modifiers": [], "name": "testExecuteOrderExactOutput", "nameLocation": "2792:27:66", "parameters": { "id": 51081, "nodeType": "ParameterList", "parameters": [], "src": "2819:2:66" }, "returnParameters": { "id": 51082, "nodeType": "ParameterList", "parameters": [], "src": "2829:0:66" }, "scope": 51614, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "id": 51390, "nodeType": "FunctionDefinition", "src": "4062:1272:66", "nodes": [], "body": { "id": 51389, "nodeType": "Block", "src": "4107:1227:66", "nodes": [], "statements": [ { "assignments": [ 51243 ], "declarations": [ { "constant": false, "id": 51243, "mutability": "mutable", "name": "tranches", "nameLocation": "4143:8:66", "nodeType": "VariableDeclaration", "scope": 51389, "src": "4117:34:66", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Tranche[]" }, "typeName": { "baseType": { "id": 51241, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 51240, "name": "OrderLib.Tranche", "nameLocations": [ "4117:8:66", "4126:7:66" ], "nodeType": "IdentifierPath", "referencedDeclaration": 46638, "src": "4117:16:66" }, "referencedDeclaration": 46638, "src": "4117:16:66", "typeDescriptions": { "typeIdentifier": "t_struct$_Tranche_$46638_storage_ptr", "typeString": "struct OrderLib.Tranche" } }, "id": 51242, "nodeType": "ArrayTypeName", "src": "4117:18:66", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_storage_$dyn_storage_ptr", "typeString": "struct OrderLib.Tranche[]" } }, "visibility": "internal" } ], "id": 51250, "initialValue": { "arguments": [ { "hexValue": "31", "id": 51248, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4177:1:66", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" } ], "id": 51247, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", "src": "4154:22:66", "typeDescriptions": { "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr_$", "typeString": "function (uint256) pure returns (struct OrderLib.Tranche memory[] memory)" }, "typeName": { "baseType": { "id": 51245, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 51244, "name": "OrderLib.Tranche", "nameLocations": [ "4158:8:66", "4167:7:66" ], "nodeType": "IdentifierPath", "referencedDeclaration": 46638, "src": "4158:16:66" }, "referencedDeclaration": 46638, "src": "4158:16:66", "typeDescriptions": { "typeIdentifier": "t_struct$_Tranche_$46638_storage_ptr", "typeString": "struct OrderLib.Tranche" } }, "id": 51246, "nodeType": "ArrayTypeName", "src": "4158:18:66", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_storage_$dyn_storage_ptr", "typeString": "struct OrderLib.Tranche[]" } } }, "id": 51249, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4154:25:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Tranche memory[] memory" } }, "nodeType": "VariableDeclarationStatement", "src": "4117:62:66" }, { "assignments": [ 51256 ], "declarations": [ { "constant": false, "id": 51256, "mutability": "mutable", "name": "constraints1", "nameLocation": "4218:12:66", "nodeType": "VariableDeclaration", "scope": 51389, "src": "4189:41:66", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Constraint[]" }, "typeName": { "baseType": { "id": 51254, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 51253, "name": "OrderLib.Constraint", "nameLocations": [ "4189:8:66", "4198:10:66" ], "nodeType": "IdentifierPath", "referencedDeclaration": 46594, "src": "4189:19:66" }, "referencedDeclaration": 46594, "src": "4189:19:66", "typeDescriptions": { "typeIdentifier": "t_struct$_Constraint_$46594_storage_ptr", "typeString": "struct OrderLib.Constraint" } }, "id": 51255, "nodeType": "ArrayTypeName", "src": "4189:21:66", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_storage_$dyn_storage_ptr", "typeString": "struct OrderLib.Constraint[]" } }, "visibility": "internal" } ], "id": 51263, "initialValue": { "arguments": [ { "hexValue": "31", "id": 51261, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4259:1:66", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" } ], "id": 51260, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", "src": "4233:25:66", "typeDescriptions": { "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr_$", "typeString": "function (uint256) pure returns (struct OrderLib.Constraint memory[] memory)" }, "typeName": { "baseType": { "id": 51258, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 51257, "name": "OrderLib.Constraint", "nameLocations": [ "4237:8:66", "4246:10:66" ], "nodeType": "IdentifierPath", "referencedDeclaration": 46594, "src": "4237:19:66" }, "referencedDeclaration": 46594, "src": "4237:19:66", "typeDescriptions": { "typeIdentifier": "t_struct$_Constraint_$46594_storage_ptr", "typeString": "struct OrderLib.Constraint" } }, "id": 51259, "nodeType": "ArrayTypeName", "src": "4237:21:66", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_storage_$dyn_storage_ptr", "typeString": "struct OrderLib.Constraint[]" } } }, "id": 51262, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4233:28:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Constraint memory[] memory" } }, "nodeType": "VariableDeclarationStatement", "src": "4189:72:66" }, { "expression": { "id": 51277, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { "id": 51264, "name": "constraints1", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 51256, "src": "4271:12:66", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Constraint memory[] memory" } }, "id": 51266, "indexExpression": { "hexValue": "30", "id": 51265, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4284:1:66", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "4271:15:66", "typeDescriptions": { "typeIdentifier": "t_struct$_Constraint_$46594_memory_ptr", "typeString": "struct OrderLib.Constraint memory" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "arguments": [ { "expression": { "expression": { "id": 51269, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47922, "src": "4309:8:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", "typeString": "type(library OrderLib)" } }, "id": 51270, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4318:14:66", "memberName": "ConstraintMode", "nodeType": "MemberAccess", "referencedDeclaration": 46588, "src": "4309:23:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_ConstraintMode_$46588_$", "typeString": "type(enum OrderLib.ConstraintMode)" } }, "id": 51271, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "4333:4:66", "memberName": "Time", "nodeType": "MemberAccess", "referencedDeclaration": 46585, "src": "4309:28:66", "typeDescriptions": { "typeIdentifier": "t_enum$_ConstraintMode_$46588", "typeString": "enum OrderLib.ConstraintMode" } }, { "arguments": [ { "hexValue": "0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000046500", "id": 51274, "isConstant": false, "isLValue": false, "isPure": true, "kind": "hexString", "lValueRequested": false, "nodeType": "Literal", "src": "4345:261:66", "typeDescriptions": { "typeIdentifier": "t_stringliteral_fdc3da6604da139fd830802e0c50283498d8b9ad053a6aca40c46b37240ada80", "typeString": "literal_string hex\"0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000046500\"" }, "value": "\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0004e\u0000" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_stringliteral_fdc3da6604da139fd830802e0c50283498d8b9ad053a6aca40c46b37240ada80", "typeString": "literal_string hex\"0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000046500\"" } ], "id": 51273, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4339:5:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", "typeString": "type(bytes storage pointer)" }, "typeName": { "id": 51272, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "4339:5:66", "typeDescriptions": {} } }, "id": 51275, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4339:268:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_enum$_ConstraintMode_$46588", "typeString": "enum OrderLib.ConstraintMode" }, { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } ], "expression": { "id": 51267, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47922, "src": "4289:8:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", "typeString": "type(library OrderLib)" } }, "id": 51268, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4298:10:66", "memberName": "Constraint", "nodeType": "MemberAccess", "referencedDeclaration": 46594, "src": "4289:19:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_struct$_Constraint_$46594_storage_ptr_$", "typeString": "type(struct OrderLib.Constraint storage pointer)" } }, "id": 51276, "isConstant": false, "isLValue": false, "isPure": true, "kind": "structConstructorCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4289:319:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_Constraint_$46594_memory_ptr", "typeString": "struct OrderLib.Constraint memory" } }, "src": "4271:337:66", "typeDescriptions": { "typeIdentifier": "t_struct$_Constraint_$46594_memory_ptr", "typeString": "struct OrderLib.Constraint memory" } }, "id": 51278, "nodeType": "ExpressionStatement", "src": "4271:337:66" }, { "expression": { "id": 51291, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { "id": 51279, "name": "tranches", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 51243, "src": "4618:8:66", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Tranche memory[] memory" } }, "id": 51281, "indexExpression": { "hexValue": "30", "id": 51280, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4627:1:66", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "4618:11:66", "typeDescriptions": { "typeIdentifier": "t_struct$_Tranche_$46638_memory_ptr", "typeString": "struct OrderLib.Tranche memory" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "arguments": [ { "expression": { "arguments": [ { "id": 51286, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4654:6:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint16_$", "typeString": "type(uint16)" }, "typeName": { "id": 51285, "name": "uint16", "nodeType": "ElementaryTypeName", "src": "4654:6:66", "typeDescriptions": {} } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_type$_t_uint16_$", "typeString": "type(uint16)" } ], "id": 51284, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "4649:4:66", "typeDescriptions": { "typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure" } }, "id": 51287, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4649:12:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_magic_meta_type_t_uint16", "typeString": "type(uint16)" } }, "id": 51288, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "4662:3:66", "memberName": "max", "nodeType": "MemberAccess", "src": "4649:16:66", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" } }, { "id": 51289, "name": "constraints1", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 51256, "src": "4666:12:66", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Constraint memory[] memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint16", "typeString": "uint16" }, { "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Constraint memory[] memory" } ], "expression": { "id": 51282, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47922, "src": "4632:8:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", "typeString": "type(library OrderLib)" } }, "id": 51283, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4641:7:66", "memberName": "Tranche", "nodeType": "MemberAccess", "referencedDeclaration": 46638, "src": "4632:16:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_struct$_Tranche_$46638_storage_ptr_$", "typeString": "type(struct OrderLib.Tranche storage pointer)" } }, "id": 51290, "isConstant": false, "isLValue": false, "isPure": false, "kind": "structConstructorCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4632:47:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_Tranche_$46638_memory_ptr", "typeString": "struct OrderLib.Tranche memory" } }, "src": "4618:61:66", "typeDescriptions": { "typeIdentifier": "t_struct$_Tranche_$46638_memory_ptr", "typeString": "struct OrderLib.Tranche memory" } }, "id": 51292, "nodeType": "ExpressionStatement", "src": "4618:61:66" }, { "assignments": [ 51294 ], "declarations": [ { "constant": false, "id": 51294, "mutability": "mutable", "name": "amount", "nameLocation": "4697:6:66", "nodeType": "VariableDeclaration", "scope": 51389, "src": "4689:14:66", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 51293, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "4689:7:66", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "id": 51304, "initialValue": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 51303, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 51301, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "hexValue": "33", "id": 51295, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4706:1:66", "typeDescriptions": { "typeIdentifier": "t_rational_3_by_1", "typeString": "int_const 3" }, "value": "3" }, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 51300, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "hexValue": "3130", "id": 51296, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4708:2:66", "typeDescriptions": { "typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10" }, "value": "10" }, "nodeType": "BinaryOperation", "operator": "**", "rightExpression": { "arguments": [], "expression": { "argumentTypes": [], "expression": { "id": 51297, "name": "COIN", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49475, "src": "4712:4:66", "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46478", "typeString": "contract MockERC20" } }, "id": 51298, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4717:8:66", "memberName": "decimals", "nodeType": "MemberAccess", "referencedDeclaration": 46464, "src": "4712:13:66", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", "typeString": "function () view external returns (uint8)" } }, "id": 51299, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4712:15:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "4708:19:66", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "4706:21:66", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": { "hexValue": "3130", "id": 51302, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4730:2:66", "typeDescriptions": { "typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10" }, "value": "10" }, "src": "4706:26:66", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "4689:43:66" }, { "expression": { "arguments": [ { "arguments": [ { "id": 51310, "name": "vault", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 50845, "src": "4772:5:66", "typeDescriptions": { "typeIdentifier": "t_contract$_Vault_$49181", "typeString": "contract Vault" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_Vault_$49181", "typeString": "contract Vault" } ], "id": 51309, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4764:7:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 51308, "name": "address", "nodeType": "ElementaryTypeName", "src": "4764:7:66", "typeDescriptions": {} } }, "id": 51311, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4764:14:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 51312, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 51294, "src": "4780:6:66", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 51305, "name": "COIN", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49475, "src": "4754:4:66", "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46478", "typeString": "contract MockERC20" } }, "id": 51307, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4759:4:66", "memberName": "mint", "nodeType": "MemberAccess", "referencedDeclaration": 46477, "src": "4754:9:66", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256) external" } }, "id": 51313, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4754:33:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 51314, "nodeType": "ExpressionStatement", "src": "4754:33:66" }, { "assignments": [ 51319 ], "declarations": [ { "constant": false, "id": 51319, "mutability": "mutable", "name": "order", "nameLocation": "4846:5:66", "nodeType": "VariableDeclaration", "scope": 51389, "src": "4820:31:66", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr", "typeString": "struct OrderLib.SwapOrder" }, "typeName": { "id": 51318, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 51317, "name": "OrderLib.SwapOrder", "nameLocations": [ "4820:8:66", "4829:9:66" ], "nodeType": "IdentifierPath", "referencedDeclaration": 46563, "src": "4820:18:66" }, "referencedDeclaration": 46563, "src": "4820:18:66", "typeDescriptions": { "typeIdentifier": "t_struct$_SwapOrder_$46563_storage_ptr", "typeString": "struct OrderLib.SwapOrder" } }, "visibility": "internal" } ], "id": 51344, "initialValue": { "arguments": [ { "arguments": [ { "id": 51324, "name": "COIN", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49475, "src": "4895:4:66", "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46478", "typeString": "contract MockERC20" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_MockERC20_$46478", "typeString": "contract MockERC20" } ], "id": 51323, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4887:7:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 51322, "name": "address", "nodeType": "ElementaryTypeName", "src": "4887:7:66", "typeDescriptions": {} } }, "id": 51325, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4887:13:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "arguments": [ { "id": 51328, "name": "USD", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49478, "src": "4910:3:66", "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46478", "typeString": "contract MockERC20" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_MockERC20_$46478", "typeString": "contract MockERC20" } ], "id": 51327, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "4902:7:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 51326, "name": "address", "nodeType": "ElementaryTypeName", "src": "4902:7:66", "typeDescriptions": {} } }, "id": 51329, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4902:12:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "arguments": [ { "expression": { "expression": { "id": 51332, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47922, "src": "4964:8:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", "typeString": "type(library OrderLib)" } }, "id": 51333, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4973:8:66", "memberName": "Exchange", "nodeType": "MemberAccess", "referencedDeclaration": 46537, "src": "4964:17:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_Exchange_$46537_$", "typeString": "type(enum OrderLib.Exchange)" } }, "id": 51334, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "4982:9:66", "memberName": "UniswapV3", "nodeType": "MemberAccess", "referencedDeclaration": 46536, "src": "4964:27:66", "typeDescriptions": { "typeIdentifier": "t_enum$_Exchange_$46537", "typeString": "enum OrderLib.Exchange" } }, { "id": 51335, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49472, "src": "4993:3:66", "typeDescriptions": { "typeIdentifier": "t_uint24", "typeString": "uint24" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_enum$_Exchange_$46537", "typeString": "enum OrderLib.Exchange" }, { "typeIdentifier": "t_uint24", "typeString": "uint24" } ], "expression": { "id": 51330, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47922, "src": "4949:8:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", "typeString": "type(library OrderLib)" } }, "id": 51331, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4958:5:66", "memberName": "Route", "nodeType": "MemberAccess", "referencedDeclaration": 46543, "src": "4949:14:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_struct$_Route_$46543_storage_ptr_$", "typeString": "type(struct OrderLib.Route storage pointer)" } }, "id": 51336, "isConstant": false, "isLValue": false, "isPure": false, "kind": "structConstructorCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4949:48:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_Route_$46543_memory_ptr", "typeString": "struct OrderLib.Route memory" } }, { "id": 51337, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 51294, "src": "4999:6:66", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "hexValue": "74727565", "id": 51338, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "5007:4:66", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, { "hexValue": "66616c7365", "id": 51339, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "5013:5:66", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "false" }, { "expression": { "id": 51340, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47922, "src": "5032:8:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", "typeString": "type(library OrderLib)" } }, "id": 51341, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "5041:8:66", "memberName": "NO_CHAIN", "nodeType": "MemberAccess", "referencedDeclaration": 46491, "src": "5032:17:66", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" } }, { "id": 51342, "name": "tranches", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 51243, "src": "5051:8:66", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Tranche memory[] memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_struct$_Route_$46543_memory_ptr", "typeString": "struct OrderLib.Route memory" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_uint64", "typeString": "uint64" }, { "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Tranche memory[] memory" } ], "expression": { "id": 51320, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47922, "src": "4855:8:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", "typeString": "type(library OrderLib)" } }, "id": 51321, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "4864:9:66", "memberName": "SwapOrder", "nodeType": "MemberAccess", "referencedDeclaration": 46563, "src": "4855:18:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_struct$_SwapOrder_$46563_storage_ptr_$", "typeString": "type(struct OrderLib.SwapOrder storage pointer)" } }, "id": 51343, "isConstant": false, "isLValue": false, "isPure": false, "kind": "structConstructorCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "4855:214:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr", "typeString": "struct OrderLib.SwapOrder memory" } }, "nodeType": "VariableDeclarationStatement", "src": "4820:249:66" }, { "assignments": [ 51346 ], "declarations": [ { "constant": false, "id": 51346, "mutability": "mutable", "name": "orderIndex", "nameLocation": "5086:10:66", "nodeType": "VariableDeclaration", "scope": 51389, "src": "5079:17:66", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" }, "typeName": { "id": 51345, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "5079:6:66", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" } }, "visibility": "internal" } ], "id": 51350, "initialValue": { "arguments": [], "expression": { "argumentTypes": [], "expression": { "id": 51347, "name": "vault", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 50845, "src": "5099:5:66", "typeDescriptions": { "typeIdentifier": "t_contract$_Vault_$49181", "typeString": "contract Vault" } }, "id": 51348, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5105:13:66", "memberName": "numSwapOrders", "nodeType": "MemberAccess", "referencedDeclaration": 49068, "src": "5099:19:66", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint64_$", "typeString": "function () view external returns (uint64)" } }, "id": 51349, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5099:21:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" } }, "nodeType": "VariableDeclarationStatement", "src": "5079:41:66" }, { "expression": { "arguments": [ { "id": 51354, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 51319, "src": "5147:5:66", "typeDescriptions": { "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr", "typeString": "struct OrderLib.SwapOrder memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr", "typeString": "struct OrderLib.SwapOrder memory" } ], "expression": { "id": 51351, "name": "vault", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 50845, "src": "5130:5:66", "typeDescriptions": { "typeIdentifier": "t_contract$_Vault_$49181", "typeString": "contract Vault" } }, "id": 51353, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5136:10:66", "memberName": "placeOrder", "nodeType": "MemberAccess", "referencedDeclaration": 49089, "src": "5130:16:66", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_struct$_SwapOrder_$46563_memory_ptr_$returns$__$", "typeString": "function (struct OrderLib.SwapOrder memory) external" } }, "id": 51355, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5130:23:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 51356, "nodeType": "ExpressionStatement", "src": "5130:23:66" }, { "expression": { "arguments": [ { "hexValue": "706c61636564206f72646572", "id": 51360, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5176:14:66", "typeDescriptions": { "typeIdentifier": "t_stringliteral_4f3f89a1ad7018d230e5e64ae81ee67f73b59ad397282a644409de4efc690398", "typeString": "literal_string \"placed order\"" }, "value": "placed order" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_stringliteral_4f3f89a1ad7018d230e5e64ae81ee67f73b59ad397282a644409de4efc690398", "typeString": "literal_string \"placed order\"" } ], "expression": { "id": 51357, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 29653, "src": "5163:8:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_console2_$29653_$", "typeString": "type(library console2)" } }, "id": 51359, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5172:3:66", "memberName": "log", "nodeType": "MemberAccess", "referencedDeclaration": 22167, "src": "5163:12:66", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) pure" } }, "id": 51361, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5163:28:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 51362, "nodeType": "ExpressionStatement", "src": "5163:28:66" }, { "expression": { "arguments": [ { "arguments": [ { "id": 51368, "name": "orderIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 51346, "src": "5219:10:66", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint64", "typeString": "uint64" } ], "id": 51367, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "5214:4:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { "id": 51366, "name": "uint", "nodeType": "ElementaryTypeName", "src": "5214:4:66", "typeDescriptions": {} } }, "id": 51369, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5214:16:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 51363, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 29653, "src": "5201:8:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_console2_$29653_$", "typeString": "type(library console2)" } }, "id": 51365, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5210:3:66", "memberName": "log", "nodeType": "MemberAccess", "referencedDeclaration": 22139, "src": "5201:12:66", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$__$", "typeString": "function (uint256) pure" } }, "id": 51370, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5201:30:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 51371, "nodeType": "ExpressionStatement", "src": "5201:30:66" }, { "expression": { "arguments": [ { "id": 51375, "name": "orderIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 51346, "src": "5255:10:66", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" } }, { "hexValue": "30", "id": 51376, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5267:1:66", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, { "arguments": [ { "hexValue": "30", "id": 51379, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5290:1:66", "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" } ], "expression": { "id": 51377, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47922, "src": "5270:8:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", "typeString": "type(library OrderLib)" } }, "id": 51378, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5279:10:66", "memberName": "PriceProof", "nodeType": "MemberAccess", "referencedDeclaration": 46641, "src": "5270:19:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_struct$_PriceProof_$46641_storage_ptr_$", "typeString": "type(struct OrderLib.PriceProof storage pointer)" } }, "id": 51380, "isConstant": false, "isLValue": false, "isPure": true, "kind": "structConstructorCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5270:22:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_PriceProof_$46641_memory_ptr", "typeString": "struct OrderLib.PriceProof memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint64", "typeString": "uint64" }, { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, { "typeIdentifier": "t_struct$_PriceProof_$46641_memory_ptr", "typeString": "struct OrderLib.PriceProof memory" } ], "expression": { "id": 51372, "name": "vault", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 50845, "src": "5241:5:66", "typeDescriptions": { "typeIdentifier": "t_contract$_Vault_$49181", "typeString": "contract Vault" } }, "id": 51374, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5247:7:66", "memberName": "execute", "nodeType": "MemberAccess", "referencedDeclaration": 49143, "src": "5241:13:66", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint64_$_t_uint8_$_t_struct$_PriceProof_$46641_memory_ptr_$returns$__$", "typeString": "function (uint64,uint8,struct OrderLib.PriceProof memory) external" } }, "id": 51381, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5241:52:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 51382, "nodeType": "ExpressionStatement", "src": "5241:52:66" }, { "expression": { "arguments": [ { "hexValue": "6578656375746564", "id": 51386, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5316:10:66", "typeDescriptions": { "typeIdentifier": "t_stringliteral_f3ebdf95d58ea2884647682da60cae155acb6afc2edc8ef359d6f9669663cde1", "typeString": "literal_string \"executed\"" }, "value": "executed" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_stringliteral_f3ebdf95d58ea2884647682da60cae155acb6afc2edc8ef359d6f9669663cde1", "typeString": "literal_string \"executed\"" } ], "expression": { "id": 51383, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 29653, "src": "5303:8:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_console2_$29653_$", "typeString": "type(library console2)" } }, "id": 51385, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5312:3:66", "memberName": "log", "nodeType": "MemberAccess", "referencedDeclaration": 22167, "src": "5303:12:66", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) pure" } }, "id": 51387, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5303:24:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 51388, "nodeType": "ExpressionStatement", "src": "5303:24:66" } ] }, "functionSelector": "8e3b558a", "implemented": true, "kind": "function", "modifiers": [], "name": "testExecuteOrderExactInput", "nameLocation": "4071:26:66", "parameters": { "id": 51236, "nodeType": "ParameterList", "parameters": [], "src": "4097:2:66" }, "returnParameters": { "id": 51237, "nodeType": "ParameterList", "parameters": [], "src": "4107:0:66" }, "scope": 51614, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "id": 51613, "nodeType": "FunctionDefinition", "src": "5341:1792:66", "nodes": [], "body": { "id": 51612, "nodeType": "Block", "src": "5381:1752:66", "nodes": [], "statements": [ { "assignments": [ 51398 ], "declarations": [ { "constant": false, "id": 51398, "mutability": "mutable", "name": "tranches", "nameLocation": "5470:8:66", "nodeType": "VariableDeclaration", "scope": 51612, "src": "5444:34:66", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Tranche[]" }, "typeName": { "baseType": { "id": 51396, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 51395, "name": "OrderLib.Tranche", "nameLocations": [ "5444:8:66", "5453:7:66" ], "nodeType": "IdentifierPath", "referencedDeclaration": 46638, "src": "5444:16:66" }, "referencedDeclaration": 46638, "src": "5444:16:66", "typeDescriptions": { "typeIdentifier": "t_struct$_Tranche_$46638_storage_ptr", "typeString": "struct OrderLib.Tranche" } }, "id": 51397, "nodeType": "ArrayTypeName", "src": "5444:18:66", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_storage_$dyn_storage_ptr", "typeString": "struct OrderLib.Tranche[]" } }, "visibility": "internal" } ], "id": 51405, "initialValue": { "arguments": [ { "hexValue": "31", "id": 51403, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5504:1:66", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" } ], "id": 51402, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", "src": "5481:22:66", "typeDescriptions": { "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr_$", "typeString": "function (uint256) pure returns (struct OrderLib.Tranche memory[] memory)" }, "typeName": { "baseType": { "id": 51400, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 51399, "name": "OrderLib.Tranche", "nameLocations": [ "5485:8:66", "5494:7:66" ], "nodeType": "IdentifierPath", "referencedDeclaration": 46638, "src": "5485:16:66" }, "referencedDeclaration": 46638, "src": "5485:16:66", "typeDescriptions": { "typeIdentifier": "t_struct$_Tranche_$46638_storage_ptr", "typeString": "struct OrderLib.Tranche" } }, "id": 51401, "nodeType": "ArrayTypeName", "src": "5485:18:66", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_storage_$dyn_storage_ptr", "typeString": "struct OrderLib.Tranche[]" } } }, "id": 51404, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5481:25:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Tranche memory[] memory" } }, "nodeType": "VariableDeclarationStatement", "src": "5444:62:66" }, { "assignments": [ 51411 ], "declarations": [ { "constant": false, "id": 51411, "mutability": "mutable", "name": "constraints1", "nameLocation": "5545:12:66", "nodeType": "VariableDeclaration", "scope": 51612, "src": "5516:41:66", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Constraint[]" }, "typeName": { "baseType": { "id": 51409, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 51408, "name": "OrderLib.Constraint", "nameLocations": [ "5516:8:66", "5525:10:66" ], "nodeType": "IdentifierPath", "referencedDeclaration": 46594, "src": "5516:19:66" }, "referencedDeclaration": 46594, "src": "5516:19:66", "typeDescriptions": { "typeIdentifier": "t_struct$_Constraint_$46594_storage_ptr", "typeString": "struct OrderLib.Constraint" } }, "id": 51410, "nodeType": "ArrayTypeName", "src": "5516:21:66", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_storage_$dyn_storage_ptr", "typeString": "struct OrderLib.Constraint[]" } }, "visibility": "internal" } ], "id": 51418, "initialValue": { "arguments": [ { "hexValue": "31", "id": 51416, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5586:1:66", "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" } ], "id": 51415, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", "src": "5560:25:66", "typeDescriptions": { "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr_$", "typeString": "function (uint256) pure returns (struct OrderLib.Constraint memory[] memory)" }, "typeName": { "baseType": { "id": 51413, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 51412, "name": "OrderLib.Constraint", "nameLocations": [ "5564:8:66", "5573:10:66" ], "nodeType": "IdentifierPath", "referencedDeclaration": 46594, "src": "5564:19:66" }, "referencedDeclaration": 46594, "src": "5564:19:66", "typeDescriptions": { "typeIdentifier": "t_struct$_Constraint_$46594_storage_ptr", "typeString": "struct OrderLib.Constraint" } }, "id": 51414, "nodeType": "ArrayTypeName", "src": "5564:21:66", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_storage_$dyn_storage_ptr", "typeString": "struct OrderLib.Constraint[]" } } }, "id": 51417, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5560:28:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Constraint memory[] memory" } }, "nodeType": "VariableDeclarationStatement", "src": "5516:72:66" }, { "assignments": [ 51420 ], "declarations": [ { "constant": false, "id": 51420, "mutability": "mutable", "name": "limit", "nameLocation": "5606:5:66", "nodeType": "VariableDeclaration", "scope": 51612, "src": "5598:13:66", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint160", "typeString": "uint160" }, "typeName": { "id": 51419, "name": "uint160", "nodeType": "ElementaryTypeName", "src": "5598:7:66", "typeDescriptions": { "typeIdentifier": "t_uint160", "typeString": "uint160" } }, "visibility": "internal" } ], "id": 51427, "initialValue": { "commonType": { "typeIdentifier": "t_uint160", "typeString": "uint160" }, "id": 51426, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "commonType": { "typeIdentifier": "t_uint160", "typeString": "uint160" }, "id": 51424, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "arguments": [], "expression": { "argumentTypes": [], "id": 51421, "name": "price", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49983, "src": "5614:5:66", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint160_$", "typeString": "function () view returns (uint160)" } }, "id": 51422, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5614:7:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint160", "typeString": "uint160" } }, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": { "hexValue": "3130303031", "id": 51423, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5624:5:66", "typeDescriptions": { "typeIdentifier": "t_rational_10001_by_1", "typeString": "int_const 10001" }, "value": "10001" }, "src": "5614:15:66", "typeDescriptions": { "typeIdentifier": "t_uint160", "typeString": "uint160" } }, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": { "hexValue": "3130303030", "id": 51425, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5632:5:66", "typeDescriptions": { "typeIdentifier": "t_rational_10000_by_1", "typeString": "int_const 10000" }, "value": "10000" }, "src": "5614:23:66", "typeDescriptions": { "typeIdentifier": "t_uint160", "typeString": "uint160" } }, "nodeType": "VariableDeclarationStatement", "src": "5598:39:66" }, { "assignments": [ 51429 ], "declarations": [ { "constant": false, "id": 51429, "mutability": "mutable", "name": "serialized", "nameLocation": "5691:10:66", "nodeType": "VariableDeclaration", "scope": 51612, "src": "5678:23:66", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes" }, "typeName": { "id": 51428, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "5678:5:66", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "visibility": "internal" } ], "id": 51441, "initialValue": { "arguments": [ { "arguments": [ { "hexValue": "74727565", "id": 51434, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "5740:4:66", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, { "hexValue": "66616c7365", "id": 51435, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "5746:5:66", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "false" }, { "hexValue": "30", "id": 51436, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5753:1:66", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, { "id": 51437, "name": "limit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 51420, "src": "5756:5:66", "typeDescriptions": { "typeIdentifier": "t_uint160", "typeString": "uint160" } }, { "hexValue": "30", "id": 51438, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5763:1:66", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, { "typeIdentifier": "t_uint160", "typeString": "uint160" }, { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "expression": { "id": 51432, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47922, "src": "5716:8:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", "typeString": "type(library OrderLib)" } }, "id": 51433, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5725:14:66", "memberName": "LineConstraint", "nodeType": "MemberAccess", "referencedDeclaration": 46605, "src": "5716:23:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_struct$_LineConstraint_$46605_storage_ptr_$", "typeString": "type(struct OrderLib.LineConstraint storage pointer)" } }, "id": 51439, "isConstant": false, "isLValue": false, "isPure": false, "kind": "structConstructorCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5716:49:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_LineConstraint_$46605_memory_ptr", "typeString": "struct OrderLib.LineConstraint memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_struct$_LineConstraint_$46605_memory_ptr", "typeString": "struct OrderLib.LineConstraint memory" } ], "expression": { "id": 51430, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "5704:3:66", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, "id": 51431, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "5708:6:66", "memberName": "encode", "nodeType": "MemberAccess", "src": "5704:10:66", "typeDescriptions": { "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" } }, "id": 51440, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5704:63:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "nodeType": "VariableDeclarationStatement", "src": "5678:89:66" }, { "expression": { "id": 51452, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { "id": 51442, "name": "constraints1", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 51411, "src": "5777:12:66", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Constraint memory[] memory" } }, "id": 51444, "indexExpression": { "hexValue": "30", "id": 51443, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5790:1:66", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "5777:15:66", "typeDescriptions": { "typeIdentifier": "t_struct$_Constraint_$46594_memory_ptr", "typeString": "struct OrderLib.Constraint memory" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "arguments": [ { "expression": { "expression": { "id": 51447, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47922, "src": "5815:8:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", "typeString": "type(library OrderLib)" } }, "id": 51448, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5824:14:66", "memberName": "ConstraintMode", "nodeType": "MemberAccess", "referencedDeclaration": 46588, "src": "5815:23:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_ConstraintMode_$46588_$", "typeString": "type(enum OrderLib.ConstraintMode)" } }, "id": 51449, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "5839:4:66", "memberName": "Line", "nodeType": "MemberAccess", "referencedDeclaration": 46586, "src": "5815:28:66", "typeDescriptions": { "typeIdentifier": "t_enum$_ConstraintMode_$46588", "typeString": "enum OrderLib.ConstraintMode" } }, { "id": 51450, "name": "serialized", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 51429, "src": "5845:10:66", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_enum$_ConstraintMode_$46588", "typeString": "enum OrderLib.ConstraintMode" }, { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } ], "expression": { "id": 51445, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47922, "src": "5795:8:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", "typeString": "type(library OrderLib)" } }, "id": 51446, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5804:10:66", "memberName": "Constraint", "nodeType": "MemberAccess", "referencedDeclaration": 46594, "src": "5795:19:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_struct$_Constraint_$46594_storage_ptr_$", "typeString": "type(struct OrderLib.Constraint storage pointer)" } }, "id": 51451, "isConstant": false, "isLValue": false, "isPure": false, "kind": "structConstructorCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5795:61:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_Constraint_$46594_memory_ptr", "typeString": "struct OrderLib.Constraint memory" } }, "src": "5777:79:66", "typeDescriptions": { "typeIdentifier": "t_struct$_Constraint_$46594_memory_ptr", "typeString": "struct OrderLib.Constraint memory" } }, "id": 51453, "nodeType": "ExpressionStatement", "src": "5777:79:66" }, { "expression": { "id": 51466, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "baseExpression": { "id": 51454, "name": "tranches", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 51398, "src": "5866:8:66", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Tranche memory[] memory" } }, "id": 51456, "indexExpression": { "hexValue": "30", "id": 51455, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5875:1:66", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "5866:11:66", "typeDescriptions": { "typeIdentifier": "t_struct$_Tranche_$46638_memory_ptr", "typeString": "struct OrderLib.Tranche memory" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "arguments": [ { "expression": { "arguments": [ { "id": 51461, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "5902:6:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint16_$", "typeString": "type(uint16)" }, "typeName": { "id": 51460, "name": "uint16", "nodeType": "ElementaryTypeName", "src": "5902:6:66", "typeDescriptions": {} } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_type$_t_uint16_$", "typeString": "type(uint16)" } ], "id": 51459, "name": "type", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -27, "src": "5897:4:66", "typeDescriptions": { "typeIdentifier": "t_function_metatype_pure$__$returns$__$", "typeString": "function () pure" } }, "id": 51462, "isConstant": false, "isLValue": false, "isPure": true, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5897:12:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_magic_meta_type_t_uint16", "typeString": "type(uint16)" } }, "id": 51463, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "5910:3:66", "memberName": "max", "nodeType": "MemberAccess", "src": "5897:16:66", "typeDescriptions": { "typeIdentifier": "t_uint16", "typeString": "uint16" } }, { "id": 51464, "name": "constraints1", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 51411, "src": "5914:12:66", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Constraint memory[] memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint16", "typeString": "uint16" }, { "typeIdentifier": "t_array$_t_struct$_Constraint_$46594_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Constraint memory[] memory" } ], "expression": { "id": 51457, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47922, "src": "5880:8:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", "typeString": "type(library OrderLib)" } }, "id": 51458, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "5889:7:66", "memberName": "Tranche", "nodeType": "MemberAccess", "referencedDeclaration": 46638, "src": "5880:16:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_struct$_Tranche_$46638_storage_ptr_$", "typeString": "type(struct OrderLib.Tranche storage pointer)" } }, "id": 51465, "isConstant": false, "isLValue": false, "isPure": false, "kind": "structConstructorCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5880:47:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_Tranche_$46638_memory_ptr", "typeString": "struct OrderLib.Tranche memory" } }, "src": "5866:61:66", "typeDescriptions": { "typeIdentifier": "t_struct$_Tranche_$46638_memory_ptr", "typeString": "struct OrderLib.Tranche memory" } }, "id": 51467, "nodeType": "ExpressionStatement", "src": "5866:61:66" }, { "assignments": [ 51470 ], "declarations": [ { "constant": false, "id": 51470, "mutability": "mutable", "name": "token", "nameLocation": "5947:5:66", "nodeType": "VariableDeclaration", "scope": 51612, "src": "5937:15:66", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46478", "typeString": "contract MockERC20" }, "typeName": { "id": 51469, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 51468, "name": "MockERC20", "nameLocations": [ "5937:9:66" ], "nodeType": "IdentifierPath", "referencedDeclaration": 46478, "src": "5937:9:66" }, "referencedDeclaration": 46478, "src": "5937:9:66", "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46478", "typeString": "contract MockERC20" } }, "visibility": "internal" } ], "id": 51474, "initialValue": { "arguments": [ { "id": 51472, "name": "token0", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49480, "src": "5965:6:66", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 51471, "name": "MockERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 46478, "src": "5955:9:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_MockERC20_$46478_$", "typeString": "type(contract MockERC20)" } }, "id": 51473, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "5955:17:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46478", "typeString": "contract MockERC20" } }, "nodeType": "VariableDeclarationStatement", "src": "5937:35:66" }, { "assignments": [ 51476 ], "declarations": [ { "constant": false, "id": 51476, "mutability": "mutable", "name": "amount", "nameLocation": "5990:6:66", "nodeType": "VariableDeclaration", "scope": 51612, "src": "5982:14:66", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 51475, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5982:7:66", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "id": 51486, "initialValue": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 51485, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 51483, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "hexValue": "33", "id": 51477, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5999:1:66", "typeDescriptions": { "typeIdentifier": "t_rational_3_by_1", "typeString": "int_const 3" }, "value": "3" }, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": { "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 51482, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "hexValue": "3130", "id": 51478, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6001:2:66", "typeDescriptions": { "typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10" }, "value": "10" }, "nodeType": "BinaryOperation", "operator": "**", "rightExpression": { "arguments": [], "expression": { "argumentTypes": [], "expression": { "id": 51479, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 51470, "src": "6005:5:66", "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46478", "typeString": "contract MockERC20" } }, "id": 51480, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6011:8:66", "memberName": "decimals", "nodeType": "MemberAccess", "referencedDeclaration": 46464, "src": "6005:14:66", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", "typeString": "function () view external returns (uint8)" } }, "id": 51481, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6005:16:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "6001:20:66", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "5999:22:66", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": { "hexValue": "3130", "id": 51484, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6024:2:66", "typeDescriptions": { "typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10" }, "value": "10" }, "src": "5999:27:66", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "5982:44:66" }, { "expression": { "arguments": [ { "arguments": [ { "id": 51492, "name": "vault", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 50845, "src": "6077:5:66", "typeDescriptions": { "typeIdentifier": "t_contract$_Vault_$49181", "typeString": "contract Vault" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_Vault_$49181", "typeString": "contract Vault" } ], "id": 51491, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "6069:7:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 51490, "name": "address", "nodeType": "ElementaryTypeName", "src": "6069:7:66", "typeDescriptions": {} } }, "id": 51493, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6069:14:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 51494, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 51476, "src": "6085:6:66", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 51487, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 51470, "src": "6058:5:66", "typeDescriptions": { "typeIdentifier": "t_contract$_MockERC20_$46478", "typeString": "contract MockERC20" } }, "id": 51489, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6064:4:66", "memberName": "mint", "nodeType": "MemberAccess", "referencedDeclaration": 46477, "src": "6058:10:66", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256) external" } }, "id": 51495, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6058:34:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 51496, "nodeType": "ExpressionStatement", "src": "6058:34:66" }, { "assignments": [ 51501 ], "declarations": [ { "constant": false, "id": 51501, "mutability": "mutable", "name": "order", "nameLocation": "6128:5:66", "nodeType": "VariableDeclaration", "scope": 51612, "src": "6102:31:66", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr", "typeString": "struct OrderLib.SwapOrder" }, "typeName": { "id": 51500, "nodeType": "UserDefinedTypeName", "pathNode": { "id": 51499, "name": "OrderLib.SwapOrder", "nameLocations": [ "6102:8:66", "6111:9:66" ], "nodeType": "IdentifierPath", "referencedDeclaration": 46563, "src": "6102:18:66" }, "referencedDeclaration": 46563, "src": "6102:18:66", "typeDescriptions": { "typeIdentifier": "t_struct$_SwapOrder_$46563_storage_ptr", "typeString": "struct OrderLib.SwapOrder" } }, "visibility": "internal" } ], "id": 51520, "initialValue": { "arguments": [ { "id": 51504, "name": "token0", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49480, "src": "6169:6:66", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 51505, "name": "token1", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49482, "src": "6177:6:66", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "arguments": [ { "expression": { "expression": { "id": 51508, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47922, "src": "6220:8:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", "typeString": "type(library OrderLib)" } }, "id": 51509, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6229:8:66", "memberName": "Exchange", "nodeType": "MemberAccess", "referencedDeclaration": 46537, "src": "6220:17:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_Exchange_$46537_$", "typeString": "type(enum OrderLib.Exchange)" } }, "id": 51510, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "6238:9:66", "memberName": "UniswapV3", "nodeType": "MemberAccess", "referencedDeclaration": 46536, "src": "6220:27:66", "typeDescriptions": { "typeIdentifier": "t_enum$_Exchange_$46537", "typeString": "enum OrderLib.Exchange" } }, { "id": 51511, "name": "fee", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 49472, "src": "6249:3:66", "typeDescriptions": { "typeIdentifier": "t_uint24", "typeString": "uint24" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_enum$_Exchange_$46537", "typeString": "enum OrderLib.Exchange" }, { "typeIdentifier": "t_uint24", "typeString": "uint24" } ], "expression": { "id": 51506, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47922, "src": "6205:8:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", "typeString": "type(library OrderLib)" } }, "id": 51507, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6214:5:66", "memberName": "Route", "nodeType": "MemberAccess", "referencedDeclaration": 46543, "src": "6205:14:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_struct$_Route_$46543_storage_ptr_$", "typeString": "type(struct OrderLib.Route storage pointer)" } }, "id": 51512, "isConstant": false, "isLValue": false, "isPure": false, "kind": "structConstructorCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6205:48:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_Route_$46543_memory_ptr", "typeString": "struct OrderLib.Route memory" } }, { "id": 51513, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 51476, "src": "6255:6:66", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "hexValue": "74727565", "id": 51514, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "6263:4:66", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, { "hexValue": "66616c7365", "id": 51515, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "6269:5:66", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "false" }, { "expression": { "id": 51516, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47922, "src": "6288:8:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", "typeString": "type(library OrderLib)" } }, "id": 51517, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberLocation": "6297:8:66", "memberName": "NO_CHAIN", "nodeType": "MemberAccess", "referencedDeclaration": 46491, "src": "6288:17:66", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" } }, { "id": 51518, "name": "tranches", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 51398, "src": "6307:8:66", "typeDescriptions": { "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Tranche memory[] memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_struct$_Route_$46543_memory_ptr", "typeString": "struct OrderLib.Route memory" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_uint64", "typeString": "uint64" }, { "typeIdentifier": "t_array$_t_struct$_Tranche_$46638_memory_ptr_$dyn_memory_ptr", "typeString": "struct OrderLib.Tranche memory[] memory" } ], "expression": { "id": 51502, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47922, "src": "6137:8:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", "typeString": "type(library OrderLib)" } }, "id": 51503, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6146:9:66", "memberName": "SwapOrder", "nodeType": "MemberAccess", "referencedDeclaration": 46563, "src": "6137:18:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_struct$_SwapOrder_$46563_storage_ptr_$", "typeString": "type(struct OrderLib.SwapOrder storage pointer)" } }, "id": 51519, "isConstant": false, "isLValue": false, "isPure": false, "kind": "structConstructorCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6137:188:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr", "typeString": "struct OrderLib.SwapOrder memory" } }, "nodeType": "VariableDeclarationStatement", "src": "6102:223:66" }, { "assignments": [ 51522 ], "declarations": [ { "constant": false, "id": 51522, "mutability": "mutable", "name": "orderIndex", "nameLocation": "6342:10:66", "nodeType": "VariableDeclaration", "scope": 51612, "src": "6335:17:66", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" }, "typeName": { "id": 51521, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "6335:6:66", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" } }, "visibility": "internal" } ], "id": 51526, "initialValue": { "arguments": [], "expression": { "argumentTypes": [], "expression": { "id": 51523, "name": "vault", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 50845, "src": "6355:5:66", "typeDescriptions": { "typeIdentifier": "t_contract$_Vault_$49181", "typeString": "contract Vault" } }, "id": 51524, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6361:13:66", "memberName": "numSwapOrders", "nodeType": "MemberAccess", "referencedDeclaration": 49068, "src": "6355:19:66", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint64_$", "typeString": "function () view external returns (uint64)" } }, "id": 51525, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6355:21:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" } }, "nodeType": "VariableDeclarationStatement", "src": "6335:41:66" }, { "expression": { "arguments": [ { "id": 51530, "name": "order", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 51501, "src": "6403:5:66", "typeDescriptions": { "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr", "typeString": "struct OrderLib.SwapOrder memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_struct$_SwapOrder_$46563_memory_ptr", "typeString": "struct OrderLib.SwapOrder memory" } ], "expression": { "id": 51527, "name": "vault", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 50845, "src": "6386:5:66", "typeDescriptions": { "typeIdentifier": "t_contract$_Vault_$49181", "typeString": "contract Vault" } }, "id": 51529, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6392:10:66", "memberName": "placeOrder", "nodeType": "MemberAccess", "referencedDeclaration": 49089, "src": "6386:16:66", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_struct$_SwapOrder_$46563_memory_ptr_$returns$__$", "typeString": "function (struct OrderLib.SwapOrder memory) external" } }, "id": 51531, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6386:23:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 51532, "nodeType": "ExpressionStatement", "src": "6386:23:66" }, { "expression": { "arguments": [ { "hexValue": "706c61636564206f72646572", "id": 51536, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "6432:14:66", "typeDescriptions": { "typeIdentifier": "t_stringliteral_4f3f89a1ad7018d230e5e64ae81ee67f73b59ad397282a644409de4efc690398", "typeString": "literal_string \"placed order\"" }, "value": "placed order" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_stringliteral_4f3f89a1ad7018d230e5e64ae81ee67f73b59ad397282a644409de4efc690398", "typeString": "literal_string \"placed order\"" } ], "expression": { "id": 51533, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 29653, "src": "6419:8:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_console2_$29653_$", "typeString": "type(library console2)" } }, "id": 51535, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6428:3:66", "memberName": "log", "nodeType": "MemberAccess", "referencedDeclaration": 22167, "src": "6419:12:66", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) pure" } }, "id": 51537, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6419:28:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 51538, "nodeType": "ExpressionStatement", "src": "6419:28:66" }, { "expression": { "arguments": [ { "arguments": [ { "id": 51544, "name": "orderIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 51522, "src": "6475:10:66", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint64", "typeString": "uint64" } ], "id": 51543, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "6470:4:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { "id": 51542, "name": "uint", "nodeType": "ElementaryTypeName", "src": "6470:4:66", "typeDescriptions": {} } }, "id": 51545, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6470:16:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "id": 51539, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 29653, "src": "6457:8:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_console2_$29653_$", "typeString": "type(library console2)" } }, "id": 51541, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6466:3:66", "memberName": "log", "nodeType": "MemberAccess", "referencedDeclaration": 22139, "src": "6457:12:66", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$__$", "typeString": "function (uint256) pure" } }, "id": 51546, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6457:30:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 51547, "nodeType": "ExpressionStatement", "src": "6457:30:66" }, { "expression": { "arguments": [ { "arguments": [ { "hexValue": "4c", "id": 51553, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "6520:3:66", "typeDescriptions": { "typeIdentifier": "t_stringliteral_8aa64f937099b65a4febc243a5ae0f2d6416bb9e473c30dd29c1ee498fb7c5a8", "typeString": "literal_string \"L\"" }, "value": "L" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_stringliteral_8aa64f937099b65a4febc243a5ae0f2d6416bb9e473c30dd29c1ee498fb7c5a8", "typeString": "literal_string \"L\"" } ], "id": 51552, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "6514:5:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", "typeString": "type(bytes storage pointer)" }, "typeName": { "id": 51551, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "6514:5:66", "typeDescriptions": {} } }, "id": 51554, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6514:10:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } ], "expression": { "id": 51548, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2350, "src": "6498:2:66", "typeDescriptions": { "typeIdentifier": "t_contract$_Vm_$13464", "typeString": "contract Vm" } }, "id": 51550, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6501:12:66", "memberName": "expectRevert", "nodeType": "MemberAccess", "referencedDeclaration": 13118, "src": "6498:15:66", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) external" } }, "id": 51555, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6498:27:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 51556, "nodeType": "ExpressionStatement", "src": "6498:27:66" }, { "expression": { "arguments": [ { "id": 51560, "name": "orderIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 51522, "src": "6549:10:66", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" } }, { "hexValue": "30", "id": 51561, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6561:1:66", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, { "arguments": [ { "hexValue": "30", "id": 51564, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6584:1:66", "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" } ], "expression": { "id": 51562, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47922, "src": "6564:8:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", "typeString": "type(library OrderLib)" } }, "id": 51563, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6573:10:66", "memberName": "PriceProof", "nodeType": "MemberAccess", "referencedDeclaration": 46641, "src": "6564:19:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_struct$_PriceProof_$46641_storage_ptr_$", "typeString": "type(struct OrderLib.PriceProof storage pointer)" } }, "id": 51565, "isConstant": false, "isLValue": false, "isPure": true, "kind": "structConstructorCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6564:22:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_PriceProof_$46641_memory_ptr", "typeString": "struct OrderLib.PriceProof memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint64", "typeString": "uint64" }, { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, { "typeIdentifier": "t_struct$_PriceProof_$46641_memory_ptr", "typeString": "struct OrderLib.PriceProof memory" } ], "expression": { "id": 51557, "name": "vault", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 50845, "src": "6535:5:66", "typeDescriptions": { "typeIdentifier": "t_contract$_Vault_$49181", "typeString": "contract Vault" } }, "id": 51559, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6541:7:66", "memberName": "execute", "nodeType": "MemberAccess", "referencedDeclaration": 49143, "src": "6535:13:66", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint64_$_t_uint8_$_t_struct$_PriceProof_$46641_memory_ptr_$returns$__$", "typeString": "function (uint64,uint8,struct OrderLib.PriceProof memory) external" } }, "id": 51566, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6535:52:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 51567, "nodeType": "ExpressionStatement", "src": "6535:52:66" }, { "expression": { "arguments": [ { "hexValue": "7375636365737366756c6c79206661696c656420746f20657865637574652062656c6f77206c696d6974207072696365", "id": 51571, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "6641:50:66", "typeDescriptions": { "typeIdentifier": "t_stringliteral_52958288131189f806dbc5813123c9aea95086ad9a4cae861df015336613042f", "typeString": "literal_string \"successfully failed to execute below limit price\"" }, "value": "successfully failed to execute below limit price" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_stringliteral_52958288131189f806dbc5813123c9aea95086ad9a4cae861df015336613042f", "typeString": "literal_string \"successfully failed to execute below limit price\"" } ], "expression": { "id": 51568, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 29653, "src": "6628:8:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_console2_$29653_$", "typeString": "type(library console2)" } }, "id": 51570, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6637:3:66", "memberName": "log", "nodeType": "MemberAccess", "referencedDeclaration": 22167, "src": "6628:12:66", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) pure" } }, "id": 51572, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6628:64:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 51573, "nodeType": "ExpressionStatement", "src": "6628:64:66" }, { "expression": { "arguments": [ { "id": 51575, "name": "limit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 51420, "src": "6715:5:66", "typeDescriptions": { "typeIdentifier": "t_uint160", "typeString": "uint160" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint160", "typeString": "uint160" } ], "id": 51574, "name": "swapToPrice", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 50068, "src": "6703:11:66", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint160_$returns$__$", "typeString": "function (uint160)" } }, "id": 51576, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6703:18:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 51577, "nodeType": "ExpressionStatement", "src": "6703:18:66" }, { "expression": { "arguments": [ { "arguments": [ { "hexValue": "4c", "id": 51583, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "6788:3:66", "typeDescriptions": { "typeIdentifier": "t_stringliteral_8aa64f937099b65a4febc243a5ae0f2d6416bb9e473c30dd29c1ee498fb7c5a8", "typeString": "literal_string \"L\"" }, "value": "L" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_stringliteral_8aa64f937099b65a4febc243a5ae0f2d6416bb9e473c30dd29c1ee498fb7c5a8", "typeString": "literal_string \"L\"" } ], "id": 51582, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "6782:5:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", "typeString": "type(bytes storage pointer)" }, "typeName": { "id": 51581, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "6782:5:66", "typeDescriptions": {} } }, "id": 51584, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6782:10:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } ], "expression": { "id": 51578, "name": "vm", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2350, "src": "6766:2:66", "typeDescriptions": { "typeIdentifier": "t_contract$_Vm_$13464", "typeString": "contract Vm" } }, "id": 51580, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6769:12:66", "memberName": "expectRevert", "nodeType": "MemberAccess", "referencedDeclaration": 13118, "src": "6766:15:66", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory) external" } }, "id": 51585, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6766:27:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 51586, "nodeType": "ExpressionStatement", "src": "6766:27:66" }, { "expression": { "arguments": [ { "id": 51590, "name": "orderIndex", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 51522, "src": "6895:10:66", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" } }, { "hexValue": "30", "id": 51591, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6907:1:66", "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, { "arguments": [ { "hexValue": "30", "id": 51594, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6930:1:66", "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" } ], "expression": { "id": 51592, "name": "OrderLib", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 47922, "src": "6910:8:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_OrderLib_$47922_$", "typeString": "type(library OrderLib)" } }, "id": 51593, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6919:10:66", "memberName": "PriceProof", "nodeType": "MemberAccess", "referencedDeclaration": 46641, "src": "6910:19:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_struct$_PriceProof_$46641_storage_ptr_$", "typeString": "type(struct OrderLib.PriceProof storage pointer)" } }, "id": 51595, "isConstant": false, "isLValue": false, "isPure": true, "kind": "structConstructorCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6910:22:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_PriceProof_$46641_memory_ptr", "typeString": "struct OrderLib.PriceProof memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint64", "typeString": "uint64" }, { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, { "typeIdentifier": "t_struct$_PriceProof_$46641_memory_ptr", "typeString": "struct OrderLib.PriceProof memory" } ], "expression": { "id": 51587, "name": "vault", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 50845, "src": "6881:5:66", "typeDescriptions": { "typeIdentifier": "t_contract$_Vault_$49181", "typeString": "contract Vault" } }, "id": 51589, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "6887:7:66", "memberName": "execute", "nodeType": "MemberAccess", "referencedDeclaration": 49143, "src": "6881:13:66", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint64_$_t_uint8_$_t_struct$_PriceProof_$46641_memory_ptr_$returns$__$", "typeString": "function (uint64,uint8,struct OrderLib.PriceProof memory) external" } }, "id": 51596, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6881:52:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 51597, "nodeType": "ExpressionStatement", "src": "6881:52:66" }, { "expression": { "arguments": [ { "commonType": { "typeIdentifier": "t_uint160", "typeString": "uint160" }, "id": 51603, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "commonType": { "typeIdentifier": "t_uint160", "typeString": "uint160" }, "id": 51601, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "id": 51599, "name": "limit", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 51420, "src": "7005:5:66", "typeDescriptions": { "typeIdentifier": "t_uint160", "typeString": "uint160" } }, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": { "hexValue": "3130303031", "id": 51600, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7011:5:66", "typeDescriptions": { "typeIdentifier": "t_rational_10001_by_1", "typeString": "int_const 10001" }, "value": "10001" }, "src": "7005:11:66", "typeDescriptions": { "typeIdentifier": "t_uint160", "typeString": "uint160" } }, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": { "hexValue": "3130303030", "id": 51602, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7017:5:66", "typeDescriptions": { "typeIdentifier": "t_rational_10000_by_1", "typeString": "int_const 10000" }, "value": "10000" }, "src": "7005:17:66", "typeDescriptions": { "typeIdentifier": "t_uint160", "typeString": "uint160" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint160", "typeString": "uint160" } ], "id": 51598, "name": "swapToPrice", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 50068, "src": "6993:11:66", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint160_$returns$__$", "typeString": "function (uint160)" } }, "id": 51604, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "6993:30:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 51605, "nodeType": "ExpressionStatement", "src": "6993:30:66" }, { "expression": { "arguments": [ { "hexValue": "7375636365737366756c6c79206578656375746564206174206c696d6974207072696365", "id": 51609, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "7087:38:66", "typeDescriptions": { "typeIdentifier": "t_stringliteral_69a31268b01a4613dad6c1387f864d9780e93269e30ca7918f7bc7cb9e0f014e", "typeString": "literal_string \"successfully executed at limit price\"" }, "value": "successfully executed at limit price" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_stringliteral_69a31268b01a4613dad6c1387f864d9780e93269e30ca7918f7bc7cb9e0f014e", "typeString": "literal_string \"successfully executed at limit price\"" } ], "expression": { "id": 51606, "name": "console2", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 29653, "src": "7074:8:66", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_console2_$29653_$", "typeString": "type(library console2)" } }, "id": 51608, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberLocation": "7083:3:66", "memberName": "log", "nodeType": "MemberAccess", "referencedDeclaration": 22167, "src": "7074:12:66", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) pure" } }, "id": 51610, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "nameLocations": [], "names": [], "nodeType": "FunctionCall", "src": "7074:52:66", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 51611, "nodeType": "ExpressionStatement", "src": "7074:52:66" } ] }, "functionSelector": "7083accc", "implemented": true, "kind": "function", "modifiers": [], "name": "testExecuteLimitOrder", "nameLocation": "5350:21:66", "parameters": { "id": 51391, "nodeType": "ParameterList", "parameters": [], "src": "5371:2:66" }, "returnParameters": { "id": 51392, "nodeType": "ParameterList", "parameters": [], "src": "5381:0:66" }, "scope": 51614, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" } ], "abstract": false, "baseContracts": [ { "baseName": { "id": 50832, "name": "MockEnv", "nameLocations": [ "279:7:66" ], "nodeType": "IdentifierPath", "referencedDeclaration": 50069, "src": "279:7:66" }, "id": 50833, "nodeType": "InheritanceSpecifier", "src": "279:7:66" }, { "baseName": { "id": 50834, "name": "Test", "nameLocations": [ "288:4:66" ], "nodeType": "IdentifierPath", "referencedDeclaration": 11937, "src": "288:4:66" }, "id": 50835, "nodeType": "InheritanceSpecifier", "src": "288:4:66" } ], "canonicalName": "TestOrder", "contractDependencies": [ 46430, 46478 ], "contractKind": "contract", "fullyImplemented": true, "internalFunctionIDs": { "21582": 1 }, "linearizedBaseContracts": [ 51614, 11937, 2357, 2354, 11886, 7624, 7334, 6570, 4516, 3823, 2291, 50069 ], "name": "TestOrder", "nameLocation": "266:9:66", "scope": 51615, "usedErrors": [], "usedEvents": [ 5, 9, 13, 17, 21, 25, 29, 33, 39, 45, 53, 61, 67, 73, 79, 85, 2418, 2423, 2428, 2435, 2442, 2449 ] } ], "license": "UNLICENSED" }, "id": 66 }